<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Yajny\EventsYj\Events\RecalculateBalance;
use Yajny\Member\Models\Member;
use Yajny\Member\Models\UsersBalance;

class RunUserBalanceCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'user_balance:run';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Get currency exchange rates';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //$users = Member::where('active', 1)->select('user_id')->get();
        //foreach ($users as $user) {
        $users=UsersBalance::whereBetween('id',[1,50000])->get();
        foreach ($users as $user){
            event(new RecalculateBalance(Member::find($user->user_id)));
        }

        //}
        /*
        $currencyRates = CurrencyRate::all();
                $last_user_balance = UsersBalance::orderByDesc('id')->first();
                if (is_null($last_user_balance)) $last_user_balance_id = 0;
                else $last_user_balance_id = $last_user_balance->user_id;

                $users = UsersBalance::where('available_expired_amount_egp','<', 0)->get();
                foreach ($users as $user) {
                    $userSales = UserSales::where([['user_id', $user->user_id], ['status', 'confirmed']])->get();
                    $userBalance = UsersBalance::where('user_id', $user->user_id)->first();
                    if (is_null($userBalance))
                        $userBalance = new UsersBalance();
                    $userBalance->user_id = $user->user_id;
                    $userSalesConfirmed = $userSalesConfirmedEGP = $userSalesConfirmedSAR = $userSalesConfirmedAED = $userSalesConfirmedKWD = 0;
                    foreach ($userSales as $userSale) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();
                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;
                        $userSalesConfirmed = $userSalesConfirmed + ($userSale->cashback);
                        $userSalesConfirmedEGP = $userSalesConfirmedEGP + ($userSale->cashback * $currencyRateEGP_conversion_rate);
                        $userSalesConfirmedSAR = $userSalesConfirmedSAR + ($userSale->cashback * $currencyRateSAR_conversion_rate);
                        $userSalesConfirmedAED = $userSalesConfirmedAED + ($userSale->cashback * $currencyRateAED_conversion_rate);
                        $userSalesConfirmedKWD = $userSalesConfirmedKWD + ($userSale->cashback * $currencyRateKWD_conversion_rate);
                    }

                    $userSales = UserSales::where([['user_id', $user->user_id], ['status', 'pending'], ['expiration_date', '>', now()]])->get();
                    $userSalesPending = $userSalesPendingEGP = $userSalesPendingSAR = $userSalesPendingAED = $userSalesPendingKWD = 0;
                    foreach ($userSales as $userSale) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();
                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;
                        $userSalesPending = $userSalesPending + ($userSale->cashback);
                        $userSalesPendingEGP = $userSalesPendingEGP + ($userSale->cashback * $currencyRateEGP_conversion_rate);
                        $userSalesPendingSAR = $userSalesPendingSAR + ($userSale->cashback * $currencyRateSAR_conversion_rate);
                        $userSalesPendingAED = $userSalesPendingAED + ($userSale->cashback * $currencyRateAED_conversion_rate);
                        $userSalesPendingKWD = $userSalesPendingKWD + ($userSale->cashback * $currencyRateKWD_conversion_rate);
                    }

                    $userSales = UserSales::where([['user_id', $user->user_id], ['status', 'confirmed'], ['expiration_date', '<', now()]])->get();
                    $userSalesExpired = $userSalesExpiredEGP = $userSalesExpiredSAR = $userSalesExpiredAED = $userSalesExpiredKWD = 0;
                    foreach ($userSales as $userSale) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userSale->transaction_time)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();
                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;
                        $userSalesExpired = $userSalesExpired + ($userSale->cashback);
                        $userSalesExpiredEGP = $userSalesExpiredEGP + ($userSale->cashback * $currencyRateEGP_conversion_rate);
                        $userSalesExpiredSAR = $userSalesExpiredSAR + ($userSale->cashback * $currencyRateSAR_conversion_rate);
                        $userSalesExpiredAED = $userSalesExpiredAED + ($userSale->cashback * $currencyRateAED_conversion_rate);
                        $userSalesExpiredKWD = $userSalesExpiredKWD + ($userSale->cashback * $currencyRateKWD_conversion_rate);
                    }

                    $userBonuses = UserBonus::where([['user_id', $user->user_id], ['status', 'confirmed']])->get();
                    $userBonusConfirmed = $userBonusConfirmedEGP = $userBonusConfirmedSAR = $userBonusConfirmedAED = $userBonusConfirmedKWD = 0;
                    foreach ($userBonuses as $userBonus) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();

                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;

                        $userBonusConfirmed = $userBonusConfirmed + ($userBonus->amount);
                        $userBonusConfirmedEGP = $userBonusConfirmedEGP + ($userBonus->amount * $currencyRateEGP_conversion_rate);
                        $userBonusConfirmedSAR = $userBonusConfirmedSAR + ($userBonus->amount * $currencyRateSAR_conversion_rate);
                        $userBonusConfirmedAED = $userBonusConfirmedAED + ($userBonus->amount * $currencyRateAED_conversion_rate);
                        $userBonusConfirmedKWD = $userBonusConfirmedKWD + ($userBonus->amount * $currencyRateKWD_conversion_rate);
                    }

                    $userBonuses = UserBonus::where([['user_id', $user->user_id], ['status', 'pending'], ['expiration_date', '>', now()]])->get();
                    $userBonusPending = $userBonusPendingEGP = $userBonusPendingSAR = $userBonusPendingAED = $userBonusPendingKWD = 0;
                    foreach ($userBonuses as $userBonus) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();

                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;

                        $userBonusPending = $userBonusPending + ($userBonus->amount);
                        $userBonusPendingEGP = $userBonusPendingEGP + ($userBonus->amount * $currencyRateEGP_conversion_rate);
                        $userBonusPendingSAR = $userBonusPendingSAR + ($userBonus->amount * $currencyRateSAR_conversion_rate);
                        $userBonusPendingAED = $userBonusPendingAED + ($userBonus->amount * $currencyRateAED_conversion_rate);
                        $userBonusPendingKWD = $userBonusPendingKWD + ($userBonus->amount * $currencyRateKWD_conversion_rate);
                    }

                    $userBonuses = UserBonus::where([['user_id', $user->user_id], ['status', 'confirmed'], ['expiration_date', '<', now()]])->get();
                    $userBonusExpired = $userBonusExpiredEGP = $userBonusExpiredSAR = $userBonusExpiredAED = $userBonusExpiredKWD = 0;
                    foreach ($userBonuses as $userBonus) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userBonus->awarded_on)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();
                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;
                        $userBonusExpired = $userBonusExpired + ($userBonus->amount);
                        $userBonusExpiredEGP = $userBonusExpiredEGP + ($userBonus->amount * $currencyRateEGP_conversion_rate);
                        $userBonusExpiredSAR = $userBonusExpiredSAR + ($userBonus->amount * $currencyRateSAR_conversion_rate);
                        $userBonusExpiredAED = $userBonusExpiredAED + ($userBonus->amount * $currencyRateAED_conversion_rate);
                        $userBonusExpiredKWD = $userBonusExpiredKWD + ($userBonus->amount * $currencyRateKWD_conversion_rate);
                    }

                    $userNewBonuses = UserNewBonus::where([['user_id', $user->user_id], ['status', 'confirmed']])->get();
                    $userNewBonusConfirmed = $userNewBonusConfirmedEGP = $userNewBonusConfirmedSAR = $userNewBonusConfirmedAED = $userNewBonusConfirmedKWD = 0;
                    foreach ($userNewBonuses as $userNewBonus) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();
                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;
                        $userNewBonusConfirmed = $userNewBonusConfirmed + ($userNewBonus->amount);
                        $userNewBonusConfirmedEGP = $userNewBonusConfirmedEGP + ($userNewBonus->amount * $currencyRateEGP_conversion_rate);
                        $userNewBonusConfirmedSAR = $userNewBonusConfirmedSAR + ($userNewBonus->amount * $currencyRateSAR_conversion_rate);
                        $userNewBonusConfirmedAED = $userNewBonusConfirmedAED + ($userNewBonus->amount * $currencyRateAED_conversion_rate);
                        $userNewBonusConfirmedKWD = $userNewBonusConfirmedKWD + ($userNewBonus->amount * $currencyRateKWD_conversion_rate);
                    }

                    $userNewBonuses = UserNewBonus::where([['user_id', $user->user_id], ['status', 'pending'], ['expiration_date', '>', now()]])->get();
                    $userNewBonusPending = $userNewBonusPendingEGP = $userNewBonusPendingSAR = $userNewBonusPendingAED = $userNewBonusPendingKWD = 0;
                    foreach ($userNewBonuses as $userNewBonus) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();

                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;

                        $userNewBonusPending = $userNewBonusPending + ($userNewBonus->amount);
                        $userNewBonusPendingEGP = $userNewBonusPendingEGP + ($userNewBonus->amount * $currencyRateEGP_conversion_rate);
                        $userNewBonusPendingSAR = $userNewBonusPendingSAR + ($userNewBonus->amount * $currencyRateSAR_conversion_rate);
                        $userNewBonusPendingAED = $userNewBonusPendingAED + ($userNewBonus->amount * $currencyRateAED_conversion_rate);
                        $userNewBonusPendingKWD = $userNewBonusPendingKWD + ($userNewBonus->amount * $currencyRateKWD_conversion_rate);
                    }
                    $userNewBonuses = UserNewBonus::where([['user_id', $user->user_id], ['status', 'confirmed'], ['expiration_date', '<', now()]])->get();
                    $userNewBonusExpired = $userNewBonusExpiredEGP = $userNewBonusExpiredSAR = $userNewBonusExpiredAED = $userNewBonusExpiredKWD = 0;
                    foreach ($userNewBonuses as $userNewBonus) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userNewBonus->awarded_on)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();

                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;

                        $userNewBonusExpired = $userNewBonusExpired + ($userNewBonus->amount);
                        $userNewBonusExpiredEGP = $userNewBonusExpiredEGP + ($userNewBonus->amount * $currencyRateEGP_conversion_rate);
                        $userNewBonusExpiredSAR = $userNewBonusExpiredSAR + ($userNewBonus->amount * $currencyRateSAR_conversion_rate);
                        $userNewBonusExpiredAED = $userNewBonusExpiredAED + ($userNewBonus->amount * $currencyRateAED_conversion_rate);
                        $userNewBonusExpiredKWD = $userNewBonusExpiredKWD + ($userNewBonus->amount * $currencyRateKWD_conversion_rate);
                    }
                    $userPayouts = UserPayouts::where([['user_id', $user->user_id], ['status', 'completed']])->get();
                    $userPayoutConfirmed = $userPayoutConfirmedEGP = $userPayoutConfirmedSAR = $userPayoutConfirmedAED = $userPayoutConfirmedKWD = 0;
                    foreach ($userPayouts as $userPayout) {
                        $currencyRateEGP = $currencyRates->where('start_date', '<', $userPayout->created_at)
                            ->where('currency_code', 'EGP')
                            ->sortByDesc('start_date')->first();
                        $currencyRateSAR = $currencyRates->where('start_date', '<', $userPayout->created_at)
                            ->where('currency_code', 'SAR')
                            ->sortByDesc('start_date')->first();
                        $currencyRateAED = $currencyRates->where('start_date', '<', $userPayout->created_at)
                            ->where('currency_code', 'AED')
                            ->sortByDesc('start_date')->first();
                        $currencyRateKWD = $currencyRates->where('start_date', '<', $userPayout->created_at)
                            ->where('currency_code', 'KWD')
                            ->sortByDesc('start_date')->first();

                        if (is_null($currencyRateKWD)) $currencyRateKWD_conversion_rate = 0.31;
                        else
                            $currencyRateKWD_conversion_rate = $currencyRateKWD->conversion_rate;
                        if (is_null($currencyRateEGP)) $currencyRateEGP_conversion_rate = 15.72;
                        else
                            $currencyRateEGP_conversion_rate = $currencyRateEGP->conversion_rate;
                        if (is_null($currencyRateSAR)) $currencyRateSAR_conversion_rate = 37.5;
                        else
                            $currencyRateSAR_conversion_rate = $currencyRateSAR->conversion_rate;
                        if (is_null($currencyRateAED)) $currencyRateAED_conversion_rate = 3.67;
                        else
                            $currencyRateAED_conversion_rate = $currencyRateAED->conversion_rate;

                        $userPayoutConfirmed = $userPayoutConfirmed + ($userPayout->amount);
                        $userPayoutConfirmedEGP = $userPayoutConfirmedEGP + ($userPayout->amount * $currencyRateEGP_conversion_rate);
                        $userPayoutConfirmedSAR = $userPayoutConfirmedSAR + ($userPayout->amount * $currencyRateSAR_conversion_rate);
                        $userPayoutConfirmedAED = $userPayoutConfirmedAED + ($userPayout->amount * $currencyRateAED_conversion_rate);
                        $userPayoutConfirmedKWD = $userPayoutConfirmedKWD + ($userPayout->amount * $currencyRateKWD_conversion_rate);
                    }

                    $userBalance->confirmed_bonus = $userBonusConfirmed + $userNewBonusConfirmed;
                    $userBalance->confirmed_bonus_egp = $userBonusConfirmedEGP + $userNewBonusConfirmedEGP;
                    $userBalance->confirmed_bonus_sar = $userBonusConfirmedSAR + $userNewBonusConfirmedSAR;
                    $userBalance->confirmed_bonus_aed = $userBonusConfirmedAED + $userNewBonusConfirmedAED;
                    $userBalance->confirmed_bonus_kwd = $userBonusConfirmedKWD + $userNewBonusConfirmedKWD;

                    $userBalance->pending_bonus = $userBonusPending + $userNewBonusPending;
                    $userBalance->pending_bonus_egp = $userBonusPendingEGP + $userNewBonusPendingEGP;
                    $userBalance->pending_bonus_sar = $userBonusPendingSAR + $userNewBonusPendingSAR;
                    $userBalance->pending_bonus_aed = $userBonusPendingAED + $userNewBonusPendingAED;
                    $userBalance->pending_bonus_kwd = $userBonusPendingKWD + $userNewBonusPendingKWD;

                    $userBalance->confirmed_cashback = $userSalesConfirmed;
                    $userBalance->confirmed_cashback_egp = $userSalesConfirmedEGP;
                    $userBalance->confirmed_cashback_sar = $userSalesConfirmedSAR;
                    $userBalance->confirmed_cashback_aed = $userSalesConfirmedAED;
                    $userBalance->confirmed_cashback_kwd = $userSalesConfirmedKWD;

                    $userBalance->pending_cashback = $userSalesPending;
                    $userBalance->pending_cashback_egp = $userSalesPendingEGP;
                    $userBalance->pending_cashback_sar = $userSalesPendingSAR;
                    $userBalance->pending_cashback_aed = $userSalesPendingAED;
                    $userBalance->pending_cashback_kwd = $userSalesPendingKWD;


                    $userBalance->confirmed_amount = $userSalesConfirmed + $userBonusConfirmed + $userNewBonusConfirmed;
                    $userBalance->confirmed_amount_egp = $userSalesConfirmedEGP + $userBonusConfirmedEGP + $userNewBonusConfirmedEGP;
                    $userBalance->confirmed_amount_sar = $userSalesConfirmedSAR + $userBonusConfirmedSAR + $userNewBonusConfirmedSAR;
                    $userBalance->confirmed_amount_aed = $userSalesConfirmedAED + $userBonusConfirmedAED + $userNewBonusConfirmedAED;
                    $userBalance->confirmed_amount_kwd = $userSalesConfirmedKWD + $userBonusConfirmedKWD + $userNewBonusConfirmedKWD;

                    $userBalance->pending_amount = $userSalesPending + $userBonusPending + $userNewBonusPending;
                    $userBalance->pending_amount_egp = $userSalesPendingEGP + $userBonusPendingEGP + $userNewBonusPendingEGP;
                    $userBalance->pending_amount_sar = $userSalesPendingSAR + $userBonusPendingSAR + $userNewBonusPendingSAR;
                    $userBalance->pending_amount_aed = $userSalesPendingAED + $userBonusPendingAED + $userNewBonusPendingAED;
                    $userBalance->pending_amount_kwd = $userSalesPendingKWD + $userBonusPendingKWD + $userNewBonusPendingKWD;

                    $userBalance->expired_amount = $userSalesExpired + $userBonusExpired + $userNewBonusExpired;
                    $userBalance->expired_amount_egp = $userSalesExpiredEGP + $userBonusExpiredEGP + $userNewBonusExpiredEGP;
                    $userBalance->expired_amount_sar = $userSalesExpiredSAR + $userBonusExpiredSAR + $userNewBonusExpiredSAR;
                    $userBalance->expired_amount_aed = $userSalesExpiredAED + $userBonusExpiredAED + $userNewBonusExpiredAED;
                    $userBalance->expired_amount_kwd = $userSalesExpiredKWD + $userBonusExpiredKWD + $userNewBonusExpiredKWD;

                    $userBalance->confirmed_payout_amount = $userPayoutConfirmed;
                    $userBalance->confirmed_payout_amount_egp = $userPayoutConfirmedEGP;
                    $userBalance->confirmed_payout_amount_sar = $userPayoutConfirmedSAR;
                    $userBalance->confirmed_payout_amount_aed = $userPayoutConfirmedAED;
                    $userBalance->confirmed_payout_amount_kwd = $userPayoutConfirmedKWD;

                    if ($userBalance->expired_amount > 0) {
                        $userBalance->available_expired_amount = $userBalance->expired_amount - $userBalance->confirmed_payout_amount;
                        $userBalance->available_expired_amount_egp = $userBalance->expired_amount_egp - $userBalance->confirmed_payout_amount_egp;
                        $userBalance->available_expired_amount_sar = $userBalance->expired_amount_sar - $userBalance->confirmed_payout_amount_sar;
                        $userBalance->available_expired_amount_aed = $userBalance->expired_amount_aed - $userBalance->confirmed_payout_amount_aed;
                        $userBalance->available_expired_amount_kwd = $userBalance->expired_amount_kwd - $userBalance->confirmed_payout_amount_kwd;
                    } else {
                        $userBalance->available_expired_amount = 0;
                        $userBalance->available_expired_amount_egp = 0;
                        $userBalance->available_expired_amount_sar = 0;
                        $userBalance->available_expired_amount_aed = 0;
                        $userBalance->available_expired_amount_kwd = 0;
                    }

                    if (($userBalance->confirmed_payout_amount - $userBalance->expired_amount) < 0) {
                        $userBalance->available_amount = $userBalance->confirmed_amount - $userBalance->available_expired_amount - $userBalance->confirmed_payout_amount;
                        $userBalance->available_amount_egp = $userBalance->confirmed_amount_egp - $userBalance->available_expired_amount_egp - $userBalance->confirmed_payout_amount_egp;
                        $userBalance->available_amount_sar = $userBalance->confirmed_amount_sar - $userBalance->available_expired_amount_sar - $userBalance->confirmed_payout_amount_sar;
                        $userBalance->available_amount_aed = $userBalance->confirmed_amount_aed - $userBalance->available_expired_amount_aed - $userBalance->confirmed_payout_amount_aed;
                        $userBalance->available_amount_kwd = $userBalance->confirmed_amount_kwd - $userBalance->available_expired_amount_kwd - $userBalance->confirmed_payout_amount_kwd;
                    } else {
                        $userBalance->available_amount = $userBalance->confirmed_amount - $userBalance->confirmed_payout_amount;
                        $userBalance->available_amount_egp = $userBalance->confirmed_amount_egp - $userBalance->confirmed_payout_amount_egp;
                        $userBalance->available_amount_sar = $userBalance->confirmed_amount_sar - $userBalance->confirmed_payout_amount_sar;
                        $userBalance->available_amount_aed = $userBalance->confirmed_amount_aed - $userBalance->confirmed_payout_amount_aed;
                        $userBalance->available_amount_kwd = $userBalance->confirmed_amount_kwd - $userBalance->confirmed_payout_amount_kwd;
                    }

                    $userBalance->real_amount = $userBalance->available_amount;
                    if ($userBalance->available_amount < 0) {
                        $userBalance->available_amount = 0;
                        $userBalance->available_amount_egp = 0;
                        $userBalance->available_amount_sar = 0;
                        $userBalance->available_amount_aed = 0;
                        $userBalance->available_amount_kwd = 0;
                        $userBalance->is_reset = true;
                    }
                    $userBalance->save();

                }
        */
    }
}
