<?php

namespace App\Http\Controllers\Admin;

use App\ApplicationEMIDetails;
use App\ConsumerApplication;
use App\Http\Controllers\Controller;
use App\MerchantOffers;
use Carbon\Carbon;
use Illuminate\Http\Request;

class ApplicationEMIDetailsController extends Controller
{

    public function main($id, $disbursement_info = []){ //9181, 9145
        $application = ConsumerApplication::with([
            'merchant' => function ($query) {
                $query->select('id', 'merchant_name', 'charge_subvention_remaining_amount');
            }, 'offer' => function ($query) {
                $query->select('id', 'processing_fee', 'interest_type_id', 'subvention_type_id', 'advance_type',
                    'processing_fee_type', 'tenure', 'advance_emi', 'interest_rate', 'subvention'
                );
            }, 'emi' => function ($query) {
                $query->select('application_id', 'offer_id', 'tenure', 'remaining_emi', 'advance_emi', 'interest_rate',
                    'subvention', 'processing_fee', 'emi', 'emi_date',
                    'pf_surcharge_percent', 'pf_surcharge_amount', 'pf_surcharge_gst'
                );
            }, 'disbursementOfferDisbursed' => function ($query) {
                $query->select('application_id', 'offer_id', 'per_disbursement_amount', 'day_from_disbursement_date', 'phase');
            }
        ])->where('id', $id)->first(['id', 'merchant_id', 'offer_id']);



        $details = $this->jsonFormat($application, $disbursement_info);

        ApplicationEMIDetails::insert([
            'application_id' => $id,
            'data' => json_encode($details),
            'created_at' => Carbon::now()->toDateTimeString()
        ]);
    }

    public function jsonFormat($application, $disbursement_info){
        return [
            'multi_tranche' => count($application->disbursementOfferDisbursed) > 0,
            'offer' => $application->offer,
            'merchant' => $application->merchant,
            'emi' => $application->emi,
            'phase' => $application->disbursementOfferDisbursed ?? [],
            'disbursement' => $disbursement_info,
        ];
    }
}
