mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-23 22:44:03 +00:00
automatically complete tasks
This commit is contained in:
@@ -63,17 +63,85 @@ class TransactionToPerfexCRMProcessorV2
|
||||
private function defineTasks(Transaction $model, int $status): array
|
||||
{
|
||||
$tasks = [];
|
||||
$ownerServiceId = $model->owner->owner->service_id;
|
||||
|
||||
if($status === ApprovalStatus::PENDING_VERIFICATION && (int) $model->type === TransactionType::PAYMENT) {
|
||||
$tasks = $this->definePaymentTasks($model);
|
||||
} elseif($status === ApprovalStatus::PENDING_VERIFICATION && $model->type === TransactionType::PURCHASE_ORDER) {
|
||||
if($model->owner->service_id === 1 || $model->owner->service_id === 3) {
|
||||
$tasks = [PerfexCRMTasks::TASK_PURCHASE_ORDER_1];
|
||||
}
|
||||
} elseif($status === ApprovalStatus::APPROVED && $model->type === TransactionType::PAYMENT) {
|
||||
$task = PerfexCRMTasks::TASK_1_DAY_TRANSFER_2;
|
||||
$task['status'] = PerfexCRMTaskStatus::COMPLETED;
|
||||
$tasks = [$task];
|
||||
if ($status === ApprovalStatus::PENDING_VERIFICATION) {
|
||||
$tasks = $this->handlePendingVerificationStatus($model, $ownerServiceId);
|
||||
} elseif ($status === ApprovalStatus::APPROVED) {
|
||||
$tasks = $this->handleApprovedStatus($model, $ownerServiceId);
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
private function handlePendingVerificationStatus(Transaction $model, int $serviceId): array
|
||||
{
|
||||
$tasks = [];
|
||||
switch($model->type) {
|
||||
case TransactionType::PAYMENT:
|
||||
$tasks = $this->definePaymentTasks($model);
|
||||
break;
|
||||
case TransactionType::PURCHASE_ORDER:
|
||||
if ($serviceId === 1 || $serviceId === 3) {
|
||||
$tasks = [PerfexCRMTasks::TASK_PURCHASE_ORDER_1];
|
||||
}
|
||||
break;
|
||||
case TransactionType::BILL:
|
||||
$tasks = $this->handleBillPendingStatus($serviceId);
|
||||
break;
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
private function handleApprovedStatus(Transaction $model, int $serviceId): array
|
||||
{
|
||||
$tasks = [];
|
||||
switch($model->type) {
|
||||
case TransactionType::PAYMENT:
|
||||
$tasks = $this->handlePaymentApprovedStatus($serviceId);
|
||||
break;
|
||||
case TransactionType::BILL:
|
||||
if ($serviceId === 4) {
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_1688_PAYMENT_9, PerfexCRMTasks::TASK_1688_PAYMENT_10);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
private function handlePaymentApprovedStatus(int $serviceId): array
|
||||
{
|
||||
$tasks = [];
|
||||
switch ($serviceId) {
|
||||
case 1:
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_1_DAY_TRANSFER_2, PerfexCRMTasks::TASK_1_DAY_TRANSFER_5);
|
||||
break;
|
||||
case 3:
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_3_DAY_TRANSFER_2, PerfexCRMTasks::TASK_3_DAY_TRANSFER_5);
|
||||
break;
|
||||
case 4:
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_1688_PAYMENT_2, PerfexCRMTasks::TASK_1688_PAYMENT_5);
|
||||
break;
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
||||
private function handleBillPendingStatus(int $serviceId): array
|
||||
{
|
||||
$tasks = [];
|
||||
switch ($serviceId) {
|
||||
case 1:
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_1_DAY_TRANSFER_5, PerfexCRMTasks::TASK_1_DAY_TRANSFER_6);
|
||||
break;
|
||||
case 3:
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_3_DAY_TRANSFER_5, PerfexCRMTasks::TASK_3_DAY_TRANSFER_6);
|
||||
break;
|
||||
case 4:
|
||||
$tasks = $this->completeTask(PerfexCRMTasks::TASK_1688_PAYMENT_5, PerfexCRMTasks::TASK_1688_PAYMENT_7);
|
||||
break;
|
||||
}
|
||||
|
||||
return $tasks;
|
||||
@@ -165,4 +233,11 @@ class TransactionToPerfexCRMProcessorV2
|
||||
$withInvoice = ($model->type === TransactionType::PAYMENT && $model->owner === Booking::class && $status === ApprovalStatus::APPROVED);
|
||||
UpdatePerfexCRMPrelude::dispatch($model, $updatePerfexCRMObject, $withInvoice);
|
||||
}
|
||||
|
||||
private function completeTask($startTask, $endTask) {
|
||||
$startTask['status'] = PerfexCRMTaskStatus::COMPLETED;
|
||||
$endTask['status'] = PerfexCRMTaskStatus::IN_PROGRESS;
|
||||
|
||||
return [$startTask, $endTask];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user