<?php

namespace App\Console\Commands;

use App\Components\Functions;
use App\Models\Contract;
use App\Models\MoneyDetail;
use App\Models\MoneyInfo;
use Carbon\Carbon;
use Illuminate\Console\Command;

class GenerateMissingMoneyInfoContract extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'generate:money-info';

    /**
     * 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 handle()
    {
        //
        $from = Carbon::createFromFormat('Y-m-d', '2019-09-06');
        $to = Carbon::createFromFormat('Y-m-d', '2019-10-04');

        $name = 'Thu tiền phòng từ ' . $from->copy()->format('d/m/Y') . ' đến ' . $to->copy()->format('d/m/Y');
        $contract = Contract::find(7069);
        $hostelId = $contract->hostel_id;
        $roomId = $contract->room_id;

        $money = 0;
        $range = Functions::calculatePeriod2($from->copy(), $to->copy());
        $sumMoney = $range * $contract->room_price;

        //dd($startNextInvoice->copy()->format( 'd/m/Y' ),  $to->copy()->format( 'd/m/Y' ) );
        $moneyInfo = MoneyInfo::create([
            'hostel_id' => $hostelId,
            'room_id' => $roomId,
            'date_action' => $from->copy()->toDateString(),
            'contract_id' => $contract->id,
            'user_id' => $contract->renter_id,
            'type' => MoneyInfo::VOUCHER_CONTRACT,
            'amount' => $sumMoney,
            'pay' => $money,
            'remain' => $sumMoney - $money,
            'money_info_name' => $name
        ]);

        $moneyInfo->update([
            'name' => 'HD' . $moneyInfo->id . Carbon::now()->format('dmY')
        ]);

        MoneyDetail::create([
            'hostel_id' => $hostelId,
            'room_id' => $roomId,
            'name' => $name,
            'value' => $contract->room_price,
            'money_info_id' => $moneyInfo->id,
            'amount' => $money,
            'note' => $name,
            'start_date' => $from->copy()->toDateString(),
            'end_date' => $to->copy()->toDateString(),
            'qty' => $range,
            'renter_id' => $contract->renter_id,
            'sum_amount' => $sumMoney
        ]);
    }
}
