updatePerfexCRMProcessor = $updatePerfexCRMProcessor; $this->initializePerfexCRMProcessor = $initializePerfexCRMProcessor; $this->fetchesCompany = $fetchesCompany; } /** * @param Transaction $model * @param int $status * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute(Transaction $model, int $status) { $companyName = "dillon36"; //cief TODO: To be updated by removing this line to user actual company name if(!is_null($model->owner->company)){ //For owner_type > App\Models\Booking $companyReference = $model->owner->company->reference; } else{ //For owner_type > App\Models\Wallet $companyReference = $model->owner->owner->reference; $company = $this->fetchesCompany->execute(['id' => $model->owner->owner->id]); $email = $company->employees()->first()->email; } $contactEmail = "dillon36@yahoo.com"; //cief TODO: To be updated to user actual email address $bookingMarking = $model->owner->marking; if($model->owner instanceof \App\Models\Booking && $model->payment_reference != null && $status == ApprovalStatus::APPROVED){ $initialPerfexCRMObject = new InitialPerfexCRMObject( $companyName, $companyReference, $contactEmail, $bookingMarking, $companyReference.'-'.$bookingMarking, [], [ PerfexCRMTasks::TASK_1, PerfexCRMTasks::TASK_2, PerfexCRMTasks::TASK_3, PerfexCRMTasks::TASK_4, PerfexCRMTasks::TASK_5, PerfexCRMTasks::TASK_6, PerfexCRMTasks::TASK_7, PerfexCRMTasks::TASK_8, PerfexCRMTasks::TASK_9, PerfexCRMTasks::TASK_10, ] ); //$this->initializePerfexCRMProcessor->execute($initialPerfexCRMObject); InitializePerfexCRM::dispatch($initialPerfexCRMObject); $updatePerfexCRMObject = new UpdatePerfexCRMObject( $companyName, $companyReference, $contactEmail, $bookingMarking, $companyReference.'-'.$bookingMarking, PerfexCRMTasks::TASK_1['milestone'], PerfexCRMTasks::TASK_1['name'] ); //Mark task in Perfex CRM as done (5 means completed task) // $this->updatePerfexCRMProcessor->execute($updatePerfexCRMObject); UpdatePerfexCRM::dispatch($updatePerfexCRMObject); } else if($model->owner instanceof \App\Models\Booking && $status == ApprovalStatus::APPROVED){ $updatePerfexCRMObject = new UpdatePerfexCRMObject( $companyName, $companyReference, $contactEmail, $bookingMarking, $companyReference.'-'.$bookingMarking, PerfexCRMTasks::TASK_3['milestone'], PerfexCRMTasks::TASK_3['name'] ); //Mark task in Perfex CRM as done (5 means completed task) // $this->updatePerfexCRMProcessor->execute($updatePerfexCRMObject); UpdatePerfexCRM::dispatch($updatePerfexCRMObject); } else if($model->owner instanceof \App\Models\Booking && $status == ApprovalStatus::PENDING_VERIFICATION){ $updatePerfexCRMObject = new UpdatePerfexCRMObject( $companyName, $companyReference, $contactEmail, $bookingMarking, $companyReference.'-'.$bookingMarking, PerfexCRMTasks::TASK_2['milestone'], PerfexCRMTasks::TASK_2['name'] ); //Mark task in Perfex CRM as done (5 means completed task) //$this->updatePerfexCRMProcessor->execute($updatePerfexCRMObject); UpdatePerfexCRM::dispatch($updatePerfexCRMObject); } return true; } }