option('con'); $param = $this->option('param'); if(!empty($con)) { switch ($con) { case 'jobs': $data = Arr::get($param,'data',null); $caller = Arr::get($param,'caller',''); if ($caller == 'drawdownWrapper'){ $data['account_id'] = str_replace('CF','', $data['AccountID']); }else{ $data['account_id'] = str_replace('CF','', $data['account_id']); } $message = Arr::get($param,'message',null); if(!empty($data['account_id'])) { $abflWebhook = new Webhook(); $abflWebhook->application_id = $data['account_id']; $abflWebhook->caller = $caller; $abflWebhook->data = json_encode($param); $abflWebhook->created_at = Carbon::now()->toDateTimeString(); $abflWebhook->save(); if ($param['status'] == 200 && $caller == 'drawdownWrapper'){ $this->abflDrawDownDecision($data); }else{ if ($param['status'] == 200 && $param['message'] == 'success'){ $this->abflBreDecision($data); }else{ $application = ConsumerApplication::where('id', $data['account_id'])->where('lender_id',Services::$lender_id)->first(['id']); if (isset($application->id)) { $this->changeStatus($data['account_id'], 2, 'waiting for decision', $message); } } } } else { return Utility::handlerSendFailed([\Config::get("constants.txt.txt_errors") => ['Missing parameter ExecuteJob']]); } break; default: return Utility::handlerSendFailed([\Config::get("constants.txt.txt_errors") => ['No case found to handle in ExecuteJob']]); } } else { return Utility::handlerSendFailed([Config::get("constants.txt.txt_errors") => ['Context is missing']]); } } protected function abflDrawDownDecision($data){ $abflUTRUpdate = new ABFLUTRUpdate(); $abflUTRUpdate->account_id = $data['account_id']; $abflUTRUpdate->utr = $data['UTRNo']; $abflUTRUpdate->amount = $data['Amount']; $abflUTRUpdate->lan = $data['LAN']; $abflUTRUpdate->created_at = Carbon::now()->toDateTimeString(); $abflUTRUpdate->save(); if ($abflUTRUpdate->id){ (new Slack(new Request(['title' =>'UTR No. is '.$data['UTRNo'].' for ABFL application id: '.$data['account_id'], 'fields' => ['Application ID' => $data['account_id']], 'group' => Slack::$ABLF_UTR_UPDATE])))->send(); $this->updateUTR($data['account_id'], $data['UTRNo']); $this->changeStatus($data['account_id'], Services::$lender_id, 'disbursed'); } } protected function updateUTR($id, $utr){ ConsumerApplicationElement::where('application_id', $id)->update(['reference_number' => $utr]); //UTR Webhook $application = new ConsumerApplicationController(); $application->webhook($id, ['status' => 'utr', 'type' => 'UTR-Webhook', 'data' => $application->getMConnectPayload($id, 'utr', ['utr' => $utr])]); } protected function abflBreDecision($data){ $abflBreDecision = new ABFLBreDecision(); $abflBreDecision->account_id = $data['account_id']; $abflBreDecision->async_id = $data['async_id']; $abflBreDecision->abfl_application_id = isset($data['abfl_application_id']) ?? ''; $abflBreDecision->loan_amount = $data['loan_amount']; $abflBreDecision->roi = $data['roi']; $abflBreDecision->tenure = $data['tenure']; $abflBreDecision->ccc_id = $data['ccc_id']; $abflBreDecision->risk_flag = $data['risk_flag']; $abflBreDecision->pep_flag = $data['pep_flag']; $abflBreDecision->created_at = Carbon::now()->toDateTimeString(); $abflBreDecision->save(); if ($abflBreDecision->id){ $application = ConsumerApplication::where('id', $data['account_id'])->where('lender_id',Services::$lender_id)->first(['id']); if (isset($application->id)) { $this->changeStatus($data['account_id'], Services::$lender_id, 'approved'); } } } public function changeStatus($id, $lender_id, $status, $message = ''){ request()->merge(['lender_id' => $lender_id, 'state' => $status, 'source' => 'abfl_bre']); if ($message) { saveComment("ABFL: " .$message, $id, 107); } $applicationController = new ConsumerApplicationController(); $applicationController->updateStatus($id); } }