automatically complete tasks

This commit is contained in:
Omair Saleh
2023-06-15 05:20:23 +08:00
parent 09f20ca34c
commit 4e3a82969d
@@ -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];
}
}