<?php

namespace App\Console\Commands;

use App\Helpers\NewBonus\ConfirmNewBonusHelper;
use App\User;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Yajny\EventsYj\Events\NewBonusUpdated;
use Yajny\EventsYj\Events\RecalculateBalance;
use Yajny\Member\Models\CurrencyRate;
use Yajny\Member\Models\Member;
use Yajny\Member\Models\NewBonusType;
use Yajny\Member\Models\UserNewBonus;
use Yajny\Member\Models\UserSales;
use Yajny\Member\Models\UsersBalance;

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

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'update refer bonus to confirmed';

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

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $startTime = microtime(true);

        $referBonuses= UserNewBonus::where([['status',"pending"],['bonus_type_id',11]])->whereNotNull('referral_id')->orderByDesc('id')->get();
        foreach ($referBonuses as $bonus){
            $userSales=UserSales::where([['user_id',$bonus->referral_id],['status','confirmed']])->first();
            if ($userSales){
                // confirm CHILD BONUS
                $bonus->status="confirmed";
                $bonus->save();
                // CONFIRM PARENT BONUS
                $parentBonus= UserNewBonus::where([['status',"pending"],['bonus_type_id',11],['user_id',$bonus->referral_id]])->first();
                $parentBonus->status="confirmed";
                $parentBonus->save();
                event(new RecalculateBalance(Member::find($bonus->user_id)));
                event(new RecalculateBalance(Member::find($bonus->referral_id)));
                //$this->output->write("child bonus ID ===========>".$bonus->id,true);
                //$this->output->write("parent bonus ID ===========>".$parentBonus->id,true);
            }
        }
        $endTime = microtime(true);
        $executionTime = $endTime - $startTime;
        Log::channel("separated_file")->info("The Script".class_basename($this)."   Took : $executionTime");

    }



}
