<?php

namespace App\Console\Commands;

use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Yajny\Member\Models\Click;
use Yajny\Member\Models\Member;
use Yajny\Member\Models\Sale;
use Yajny\Member\Models\SaleItem;

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

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Adding Store Network and click to Sale_items table';

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

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

        // getting 200 item from sale_items to add data in new fields
        $saleItems=SaleItem::where([["click_id",null],["network_id",null],["store_id",null],["created_at",">=","2023-01-01 00:00:00"]])->take(200)->get();

        foreach ($saleItems as $item){

            $createdAt =Carbon::parse($item->created_at)->toDateTimeString();
            if ($item->report_date){
                DB::table("sale_items")->where("id",$item->id)->update(["earning_date"=>Carbon::parse($item->report_date)->toDateTimeString()]);

            }else{
                DB::table("sale_items")->where("id",$item->id)->update(["earning_date"=> $createdAt]);
            }
            $sale=Sale::where('id',$item->sale_id)->first();
            if ($sale) {
                DB::table("sale_items")->where("id", $item->id)->update([
                    //"earning_date" => Carbon::parse($item->report_date)->toDatetimeString() ,
                    "click_id" => $sale->click_id ?? null,
                    "network_id" => $sale->network_id ?? null,
                    "store_id" => $sale->store_id ?? null,

                ]);
            }

        }
        $endTime = microtime(true);
        $executionTime = $endTime - $startTime;
        Log::channel("separated_file")->info("The Script".class_basename($this)."   Took : $executionTime");
    }
}
