<?php

namespace App\Http\Controllers\Admin;


use App\EmiPayment;
use App\Http\Controllers\Controller;
use App\LoanManagement;
use App\Moratorium;
use Carbon\Carbon;
use Illuminate\Http\Request;

class MoratoriumController extends Controller{

    private $request;

    public function __construct(Request $request){

        $this->request = $request;
    }

    public function startMoratoriumPeriod(){

        $status = 'FAIL';
        $message = 'Can\'t start moratorium period.';
        if ($this->request->has('id')){

            $emiPayment = EmiPayment::find($this->request->get('id'));

            $moratorium = Moratorium::where('application_id', $this->request->get('application_id'))->where('status',1)->where('emi_date', $emiPayment->emi_date)->first(['id']);

            $isNextRunning = Carbon::createFromFormat('Y-m-d', $emiPayment->emi_date)->addMonth(1)->toDateString();
            $isPreviousMoratorium = Moratorium::where('application_id', $this->request->get('application_id'))->where('status',1)->where('emi_date', $isNextRunning)->first(['id']);
            if(!isset($moratorium->id) && !isset($isPreviousMoratorium->id)){

                $moratorium = new Moratorium();
                $moratorium->fill([
                    'application_id' => $this->request->get('application_id'),
                    'emi_date' => $emiPayment->emi_date,
                    'interest_rate' => $this->request->get('interest_rate'),
                    'user_id' => $this->request->get('user_id'),
                    'started_date' => Carbon::now()->toDateTimeString(),
                    'status' => 1
                ]);
                $moratorium->save();

                if($emiPayment->payment_status == 'rejected' || $emiPayment->payment_status == 'pending_from_bank'){
                    $emiPayment->payment_status = 'pending';
                    $emiPayment->save();
                }

                $status = 'OK';
                $message = 'Moratorium period started successfully';
            }else{
                if(isset($isPreviousMoratorium->id)) {
                    $message = $emiPayment->emi_date.' already occupied. We\'re already running a moratorium period on '.$isNextRunning.'. Can\'t start again.';
                }else{
                    $message = 'Already running a moratorium period. Can\'t start again.';
                }
            }
        }

        return response()->json(['status' => $status, 'message' => $message]);
    }

    public function stopMoratoriumPeriod(){

        $status = 'FAIL';
        $message = 'Can\'t stop moratorium period.';

        $moratorium = 0;
        if($this->request->get('moratorium_id')) {
            $moratorium = Moratorium::find($this->request->get('moratorium_id'));
            $moratorium->stopped_date = Carbon::now()->toDateTimeString();
            $moratorium->stopped_by = $this->request->get('user_id');
            $moratorium->status = 0;
            $moratorium->save();
            //$moratorium = Moratorium::find($this->request->get('moratorium_id'))->delete();
            (new LoanManagement())->paymentCalculate($this->request->get('application_id'), '', '', true);
        }


        if($moratorium){
            $status = 'OK';
            $message = 'Moratorium period stopped successfully';
        }

        return response()->json(['status' => $status, 'message' => $message]);
    }
}