<?php

namespace App\Console\Commands;

use App\Models\CollectSpend;
use App\Models\MoneyDetail;
use App\Models\Transaction;
use Carbon\Carbon;
use Illuminate\Console\Command;

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

	/**
	 * The console command description.
	 *
	 * @var string
	 */
	protected $description = 'Command description';

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

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function fixMoneyInfo($moneyDetailId)
	{
		$moneyDetail = MoneyDetail::find($moneyDetailId);

//		dd();
		$qty = $moneyDetail->sum_amount / $moneyDetail->value;
		$moneyDetail->amount = $moneyDetail->sum_amount;
		$moneyDetail->qty = $qty;
		$moneyDetail->save();

		$moneyInfo = $moneyDetail->moneyInfo;
		$moneyInfo->pay = $moneyInfo->amount;
		$moneyInfo->remain = 0;
		$moneyInfo->save();

		Transaction::query()->where('money_info_id', $moneyInfo->id)->update([
			'amount' => $moneyInfo->amount
		]);

		CollectSpend::query()->where('money_info_id', $moneyInfo->id)->update([
			'collect'=>$moneyInfo->amount
		]);


	}

	public function fixMoney($moneyDetailId)
	{
		$moneyDetail = MoneyDetail::find($moneyDetailId);
		$startDate = Carbon::createFromFormat('Y-m-d', $moneyDetail->start_date);
		$endDate = Carbon::createFromFormat('Y-m-d', $moneyDetail->end_date);

	}
	public function handle() {
		//
		$hostelId   = 7941;
		$moneyDetails = MoneyDetail::query()->has( 'room' )->has( 'moneyInfo' )->where( 'hostel_id', $hostelId )->get();
		foreach ( $moneyDetails as $moneyDetail ) {
			if ( $moneyDetail->sum_amount != $moneyDetail->amount ) {
				$qty      = $moneyDetail->qty;
				$checkQty = $moneyDetail->amount / $moneyDetail->value;
				if ( $checkQty == $qty ) {
					$newQty = $moneyDetail->sum_amount / $moneyDetail->value;
					if ( is_int( $newQty ) ) {
						if ( $newQty != $qty ) {
							$moneyInfo = $moneyDetail->moneyInfo;
							$contract = $moneyInfo->contract;
							$collectTo = $contract->collect_to;
							if(!empty($collectTo))
							{
								$collectTo = Carbon::createFromFormat('Y-m-d', $collectTo);
								//$startDate = $moneyDetail->start_date;
								$endDate = Carbon::createFromFormat('Y-m-d',$moneyDetail->end_date);
								if($endDate->copy()->lessThanOrEqualTo($collectTo))
								{
									$this->fixMoneyInfo($moneyDetail->id);
								} else if ($collectTo->lessThan($endDate)) {
									$qty = $moneyDetail->sum_amount / $moneyDetail->value;
									//$moneyDetail->amount = $moneyDetail->sum_amount;
									$moneyDetail->qty = $qty;
									$moneyDetail->save();
								}
							}

							$this->line( $moneyDetail->id );
//							$moneyInfo->qty = $newQty;
//							$moneyInfo->save();
						}
					}
				}
			}
		}
	}
}
