<?php

namespace App\Avanse\Processes;

use App\ApplicationEMICalculation;
use App\Bureau;
use App\ConsumerApplication;
use App\CreditReport;
use App\FinBitData;
use App\User;
use Carbon\Carbon;

class PolicyAttributes extends Bureau
{

    public function getAttributes(){

        $application = ConsumerApplication::find($this->request->get('id'));
        $creditReport = CreditReport::where('application_id', $this->request->get('id'))->where('applicant_type', 1)->first(['id', 'foirIncludingCFEMI', 'panValidation']);
        $emiCalculation = ApplicationEMICalculation::where('application_id', $this->request->get('id'))->first(['id', 'emi']);
        $finbit = FinBitData::where('application_id', $this->request->get('id'))->whereNotNull('average_balance')->first(['id', 'average_balance']);
        $user = User::where('id', $application->user_id)->first(['id','user_verified']);
        if (!isset($user->id)){
            $user = User::where('mobile_number', $application->mobile_number)->first(['id','user_verified']);
        }

        if (isset($creditReport->panValidation) && $creditReport->panValidation) {
            $panVerification = json_decode(str_replace('sch:', '', $creditReport->panValidation));
        }else if(isset($creditReport->panValidation) && $creditReport->panValidation){
            $kycresult = json_decode($creditReport->panValidation);
            $panVerification = $kycresult->kycResult;
        }

        $name = explode(' ', $application->name);

        $firstName = isset($name[0]) ? $name[0] : '';
        $middleName = isset($name[1]) && isset($name[2]) ? $name[1] : '';
        $lastName = !isset($name[2]) && isset($name[1]) ? $name[1] : (isset($name[1]) && isset($name[2]) ? $name[2].(isset($name[3]) ? $name[3] : '') : '');

        $this->request->merge([
            'name' => $firstName,
            'mName' => $middleName,
            'lName' => $lastName,
            'tenure' => $application->tenure,
            'loan_amount' => $application->loan_amount,
            'pan' => $application->pan_card,
            'mobile' => $application->loan_amount,
            'employee_status' => $application->employee_status,
            'monthly_income' => $application->monthly_income,
            'abb' => isset($finbit->id) ? (double)str_replace(',', '', $finbit->average_balance) : 0,
            'emi' => isset($emiCalculation->id) ? $emiCalculation->emi : false,
            'gender' => $application->gender,
            'user_verified' => isset($user->id) && $user->user_verified ? true : false,
            'created_at' => $application->created_at,
            'salary_seen' => false,
            'is_student' => $application->employee_status == 'UNEMPLOYED' ? true : false,
            'dob' => $application->dob,
            'experience' => $application->experience ? date('Y-m-d\TH:i:s', Carbon::now()->subMonth($application->experience)->timestamp) : '',
            'experience_in_month' => $application->experience,
            'address_line_1' => $application->current_address_line_1,
            'landmark' => $application->current_address_landmark,
            'city' => $application->current_address_city,
            'pincode' => $application->current_address_pincode,
            'state' => $application->current_address_state,
            'co_applicant_relationship' => $application->co_applicant_relationship,
            'co_applicant_name' => $application->co_applicant_name,
            'applicant_type' => $this->request->has('applicant_type') ? $this->request->get('applicant_type') : 1,
            'is_pan_valid' => isset($panVerification->firstName) ? true : false,
            'foir' => isset($creditReport->foirIncludingCFEMI) ? $creditReport->foirIncludingCFEMI : false
        ]);

        $this->request = $this->getReport($this->request);

        return $this->request;
    }
}
