Files
exchange-2.0/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php
T

118 lines
4.7 KiB
PHP

<?php
namespace App\Classes\Modules\PerfexCRM\Processors;
use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor;
use App\Classes\Modules\PerfexCRM\Processors\InitializePerfexCRMProcessor;
use App\Classes\Modules\Companies\Services\FetchesCompany;
use App\Classes\Modules\PerfexCRM\DataTransferObjects\InitialPerfexCRMObject;
use App\Classes\ValueObjects\Constants\PerfexCRMTasks;
use App\Models\Transaction;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\Jobs\InitializePerfexCRM;
class TransactionToPerfexCRMProcessor
{
/** @var FetchesCompany */
private $fetchesCompany;
/** @var UpdatePerfexCRMProcessor */
private $updatePerfexCRMProcessor;
/** @var InitializePerfexCRMProcessor */
private $initializePerfexCRMProcessor;
/**
* TransactionToPerfexCRMProcessor constructor.
* @param UpdatePerfexCRMProcessor $updatePerfexCRMProcessor
* @param InitializePerfexCRMProcessor $initializePerfexCRMProcessor
* @param FetchesCompany $fetchesCompany
*/
public function __construct(UpdatePerfexCRMProcessor $updatePerfexCRMProcessor, InitializePerfexCRMProcessor $initializePerfexCRMProcessor, FetchesCompany $fetchesCompany)
{
$this->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)
{
if($model->owner instanceof \App\Models\Booking && $status == ApprovalStatus::APPROVED){
$companyReference = $model->owner->company->reference;
$companyName = $model->owner->company->name;
$employee = $model->owner->company->employees()->first();
$contactEmail = $employee->email;
$contactName = $employee->name;
$bookingMarking = $model->owner->marking;
$serviceTypeName = $model->owner->company->services()->where('id', $model->owner->service_id)->first()->name;
$projectName = 'Exchange | '.$serviceTypeName.' | '.$bookingMarking;
$tasks = [
PerfexCRMTasks::TASK_1
];
if($model->owner->service_id == 1){
$tasks = [
PerfexCRMTasks::TASK_1,
PerfexCRMTasks::TASK_1_DAY_TRANSFER_1,
PerfexCRMTasks::TASK_1_DAY_TRANSFER_2,
PerfexCRMTasks::TASK_1_DAY_TRANSFER_3,
PerfexCRMTasks::TASK_1_DAY_TRANSFER_4,
PerfexCRMTasks::TASK_1_DAY_TRANSFER_5,
PerfexCRMTasks::TASK_1_DAY_TRANSFER_6,
];
}
else if($model->owner->service_id == 2){
$tasks = [
PerfexCRMTasks::TASK_1,
PerfexCRMTasks::TASK_3_DAY_TRANSFER_1,
PerfexCRMTasks::TASK_3_DAY_TRANSFER_2,
PerfexCRMTasks::TASK_3_DAY_TRANSFER_3,
PerfexCRMTasks::TASK_3_DAY_TRANSFER_4,
PerfexCRMTasks::TASK_3_DAY_TRANSFER_5,
PerfexCRMTasks::TASK_3_DAY_TRANSFER_6,
];
}
else if($model->owner->service_id == 4){
$tasks = [
PerfexCRMTasks::TASK_1,
PerfexCRMTasks::TASK_1688_PAYMENT_1,
PerfexCRMTasks::TASK_1688_PAYMENT_2,
PerfexCRMTasks::TASK_1688_PAYMENT_3,
PerfexCRMTasks::TASK_1688_PAYMENT_4,
PerfexCRMTasks::TASK_1688_PAYMENT_5,
PerfexCRMTasks::TASK_1688_PAYMENT_6,
PerfexCRMTasks::TASK_1688_PAYMENT_7,
PerfexCRMTasks::TASK_1688_PAYMENT_8,
PerfexCRMTasks::TASK_1688_PAYMENT_9,
PerfexCRMTasks::TASK_1688_PAYMENT_10,
PerfexCRMTasks::TASK_1688_PAYMENT_11,
PerfexCRMTasks::TASK_1688_PAYMENT_12,
PerfexCRMTasks::TASK_1688_PAYMENT_13,
];
}
$initialPerfexCRMObject = new InitialPerfexCRMObject(
$companyName,
$companyReference,
$contactName,
$contactEmail,
$bookingMarking,
$projectName,
[],
$tasks
);
//$this->initializePerfexCRMProcessor->execute($initialPerfexCRMObject);
InitializePerfexCRM::dispatch($initialPerfexCRMObject);
}
return true;
}
}