File "TradingAccountController.php"

Full Path: /home/fundopuh/trader.fxex.org/app/Http/Controllers/Admin/TradingAccountController.php
File size: 6.14 KB
MIME-type: text/x-php
Charset: utf-8

<?php  
// this Code is Cracked by dharunMods-YouTube-Channel

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Mail\NewNotification;
use App\Models\Mt4Details;
use App\Models\Settings;
use App\Models\User;
use App\Notifications\AccountNotification;
use App\Services\TradeCopier;
use App\Traits\PingServer;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Mail;

class TradingAccountController extends Controller
{
    use PingServer;

    public function tradingAccounts(TradeCopier $copier): View| RedirectResponse
    {
        try {
            $subscribers = $copier->subscribers();
            $apisettings = $copier->settings();
            $accounts = $copier->providers();

            return view('admin.subscription.tradingAccounts', [
                'title' => 'Provisioned Trading accounts',
                'subscribers' => $subscribers,
                'amountPerSlot' => $apisettings['amount_per_slot'],
                'masters' => $accounts,
            ]);
        } catch (\Exception $e) {
            return redirect()->back()->with('message', $e->getMessage());
        }
    }

    public function payment()
    {
        return view('admin.subscription.payment', [
            'title' => 'Payment Settings',
        ]);
    }


    public function renewAccount(Request $request)
    {
        $response = $this->fetctApi('/renew-account', [
            'account' => $request->account_id,
        ], 'POST');

        if ($response->failed()) {
            return redirect()->back()->with('message', $response['message']);
        }

        return redirect()->back()->with('success', $response['message']);
    }

    public function createSubscriberAccount(Request $request)
    {
        $settings = Settings::select('id', 'use_copytrade')->find(1);

        $payload =  [
            'login' => $request->login,
            'password' => $request->password,
            'serverName' => $request->serverName,
            'name' => $request->name,
            'leverage' => $request->leverage,
            'account_type' => $request->acntype,
            'baseCurrency' => $request->currency ? $request->currency : 'USD',
        ];

        if ($request->has('mt4id')) {
            $account = Mt4Details::select('provider')->find($request->mt4id);
            $payload['proivder'] = $account->provider;
        }

        if ($settings->use_copytrade) {
            $response = $this->fetctApi('/create-sub-account', $payload, 'POST');

            if ($response->failed()) {
                return redirect()->back()->with('message', $response['message']);
            }
        }

        if ($request->has('mt4id')) {
            $this->confirmsub($request->mt4id);
        }

        // remove the subscribers key from cache
        Cache::forget('subscribers');
        Cache::forget('copier-settings');
        return redirect()->back()->with('success', 'Action successful.');
    }


    public function deleteSubAccount($id)
    {
        $response = $this->fetctApi('/delete-sub-account' . '/' . $id);
        if ($response->failed()) {
            return redirect()->back()->with('message', $response['message']);
        }
        Cache::forget('subscribers');
        Cache::forget('copier-settings');
        return redirect()->back()->with('success', $response['message']);
    }

    public function copyTrade(Request $request)
    {
        $data = [
            'account' => $request->subscriberid,
            'master_account_id' => $request->master,
        ];

        if ($request->has('fixed_provider')) {
            $provider = explode('-', $request->master);

            $data['fixedProvider'] = 'Yes';
            $data['master_account_id'] = $provider[1];
        }

        $response = $this->fetctApi('/copytrade', $data, 'POST');

        if ($response->failed()) {
            return redirect()->back()->with('message', $response['message']);
        }

        Mt4Details::where('mt4_id', $request->login)->update([
            'copying_trade' => true,
        ]);

        return redirect()->back()->with('success', $response['message']);
    }


    public function deployment($id, $deployment)
    {
        $response = $this->fetctApi('/deployment', [
            'account' => $id,
            'deploy_type' => $deployment,
        ], 'POST');
        if ($response->failed()) {
            return redirect()->back()->with('message', $response['message']);
        }
        Cache::forget('subscribers');
        return redirect()->back()->with('success', $response['message']);
    }


    public function confirmsub($id): void
    {
        $settings = Settings::find(1);

        //get the sub details
        $sub = Mt4Details::find($id);
        //get user
        $user = User::where('id', $sub->client_id)->first();

        $end_at = now()->addYear();
        $remindAt = $end_at->subMonth();

        $sub->start_date = now();
        if ($settings->subscription_type == 'Fixed') {
            $sub->end_date =  $end_at;
            $sub->reminded_at = $remindAt;
        }
        $sub->status = 'Active';
        $sub->save();

        $settings = Settings::where('id', '=', '1')->first();
        $message = "$user->name, This is to inform you that your trading account management request has been reviewed and processed. Thank you for trusting $settings->site_name";

        // Send notification to user
        $user->notify(new AccountNotification($message, 'Subscription Account Started!'));

        Mail::to($user->email)->send(new NewNotification($message, 'Subscription Account Started!', $user->name));
    }

    public function deploymentAll(string $type, string $deployType): RedirectResponse
    {
        $response = $this->fetctApi('/deployment-all/' . $type . '/' . $deployType);

        if ($response->failed()) {
            return redirect()->back()->with('message', $response['message']);
        }
        if ($type == 'providers') {
            Cache::forget('providers');
        } else {
            Cache::forget('subscribers');
        }
        return redirect()->back()->with('success', $response['message']);
    }
}