diff --git a/app/Classes/Jobs/InitializePerfexCRM.php b/app/Classes/Jobs/InitializePerfexCRM.php deleted file mode 100644 index ac77f87e..00000000 --- a/app/Classes/Jobs/InitializePerfexCRM.php +++ /dev/null @@ -1,33 +0,0 @@ -initialPerfexCRMObject = $initialPerfexCRMObject; - } - - public function handle() - { - (App()->make(InitializePerfexCRMProcessor::class))->execute($this->initialPerfexCRMObject); - } -} diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php index 8923ec01..6c6354f1 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php @@ -36,7 +36,13 @@ class CreateTaskPerfexCRMObject implements DataTransferObject /** @var string */ private $department; - public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department) + /** @var string */ + private $priority; + + /** @var string */ + private $duedate; + + public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department, string $priority, string $duedate) { $this->email = $email; $this->name = $name; @@ -48,6 +54,8 @@ class CreateTaskPerfexCRMObject implements DataTransferObject $this->onTaskCompletion = $onTaskCompletion; $this->status = $status; $this->department = $department; + $this->priority = $priority; + $this->duedate = $duedate; } /** @@ -134,4 +142,20 @@ class CreateTaskPerfexCRMObject implements DataTransferObject { return $this->department; } + + /** + * @return string + */ + public function getPriority(): string + { + return $this->priority; + } + + /** + * @return string + */ + public function getDuedate(): string + { + return $this->duedate; + } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php index f70760f8..c16a4e1b 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php @@ -35,6 +35,8 @@ class CreatePerfexCRMTaskProcessor $createTaskPerfexCRMObject->getOnTaskCompletion(), $createTaskPerfexCRMObject->getDepartment(), $createTaskPerfexCRMObject->getStatus(), + $createTaskPerfexCRMObject->getPriority(), + $createTaskPerfexCRMObject->getDuedate() ); return true; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php deleted file mode 100644 index 82ef0d36..00000000 --- a/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php +++ /dev/null @@ -1,195 +0,0 @@ -convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer; - $this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject; - $this->createsPerfexCRMMilestone = $createsPerfexCRMMilestone; - $this->createsPerfexCRMTask = $createsPerfexCRMTask; - $this->fetchesPerfexCRMProject = $fetchesPerfexCRMProject; - $this->fetchesPerfexCRMMilestone = $fetchesPerfexCRMMilestone; - $this->fetchesPerfexCRMTask = $fetchesPerfexCRMTask; - $this->createsPerfexCRMCustomer = $createsPerfexCRMCustomer; - $this->createsPerfexCRMCustomerContact = $createsPerfexCRMCustomerContact; - $this->updatesPerfexCRMCustomer = $updatesPerfexCRMCustomer; - } - - /** - * @param InitialPerfexCRMObject $initialPerfexCRMObject - * @return null|object - * @throws \App\Classes\Exceptions\MalformedRequestException - */ - public function execute(InitialPerfexCRMObject $initialPerfexCRMObject) { - - // Customer has to exist first before Project can appear under it - // Check with Perfex CRM, if this user (email) was previously a lead, should automatically now become a customer - $crmCompany = $initialPerfexCRMObject->getCompanyName(); - $result = $this->convertsPerfexCRMLeadToCustomer->execute($initialPerfexCRMObject->getContactEmail()); - if(isset($result->payload)){ - $crmClientId = $result->payload['client_id']; - if (isset($result->payload['company'])) { - $crmCompany = $result->payload['company']; - } - } - else{ - //if reach this point, this means this user is not a official customer nor is a lead in crm - //Create Customer has 2 parts: Create Company (client), Create Contact - $result = $this->createsPerfexCRMCustomer->execute($crmCompany); - if(is_null($result)){ - $crmCompany = $crmCompany." 2"; - $result = $this->createsPerfexCRMCustomer->execute($crmCompany); - } - - $crmClientId = $result->payload['clientId']; - - $customerContactObject = new CustomerContactObject( - $crmClientId, - $initialPerfexCRMObject->getContactName(), - $initialPerfexCRMObject->getContactName(), - $initialPerfexCRMObject->getContactEmail(), - "pU^T@sC#9Q", - "on", - "on" - ); - $result = $this->createsPerfexCRMCustomerContact->execute($customerContactObject); - } - - //Update custom fields to identify company reference from exchange or shipping portal - $value_exists = false; - if (isset($result->payload['customfields'])) { - foreach ($result->payload['customfields'] as $element) { - if ($element['value'] === $initialPerfexCRMObject->getCompanyReference()) { - $value_exists = true; - break; - } - } - } - if(!$value_exists); - { - $result = $this->updatesPerfexCRMCustomer->execute($crmClientId, $crmCompany, $initialPerfexCRMObject->getCompanyReference()); - } - - // Get existing or create project, project has to exist first before milestone can appear under it - $result = $this->createsPerfexCRMCustomerProject->execute($initialPerfexCRMObject->getProjectName(), $initialPerfexCRMObject->getProjectStatus(), $crmClientId); - if(isset($result->payload)){ //Here means project creation successful - $projectId = $result->payload['project_id']; - } - else{ - $projectId = $this->fetchesPerfexCRMProject->execute($initialPerfexCRMObject->getProjectName(), $crmClientId)->id; - } - - $tasks = $initialPerfexCRMObject->getTaskNames(); - if(count($tasks) > 0){ - - //Create tasks with milestone - for($count=0; $count < count($tasks); $count++) { - $milestoneId = 0; //By default milestoneId is 0, having this set at individual task is optional - if($tasks[$count]['milestone'] != "") //Create milestone only if it is defined - { - // Get existing or create milestone, milestone has to exist first before task can appear under it - $result = $this->createsPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId, $count); - if(isset($result->payload)){ - $milestoneId = $result->payload['milestone_id']; - } - else{ - $milestone = $this->fetchesPerfexCRMMilestone->execute($tasks[$count]['milestone'], $projectId); - $array = json_decode(json_encode($milestone), true); - $milestoneId = $array[0]['id']; - } - } - - $taskStatus = PerfexCRMTaskStatus::NOT_STARTED; - if($tasks[$count]['status'] != ''){ - $taskStatus = $tasks[$count]['status']; - } - - // Get existing or create task - $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'],$tasks[$count]['department'], $taskStatus); - if(is_null($result)){ - break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously - } - } - } - return true; - } - -} diff --git a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php index 0be1cd0d..5445914c 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/PackingListToPerfexCRMProcessor.php @@ -20,7 +20,6 @@ class PackingListToPerfexCRMProcessor { try { if($packingList->owner instanceof \App\Models\Order) { - Log::error(json_encode($packingList)); $order = $packingList->owner; $companyModule = $order->companyModule()->first(); $connection = $companyModule->inviters()->withPivot('invitee_reference')->first(); diff --git a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php index 4e276a47..6049fac0 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/TransactionToPerfexCRMProcessor.php @@ -3,7 +3,6 @@ namespace App\Classes\Modules\PerfexCRM\Processors; use App\Classes\Modules\PerfexCRM\Processors\UpdatePerfexCRMProcessor; -use App\Classes\Modules\PerfexCRM\Processors\InitializePerfexCRMProcessor; use App\Classes\Modules\PerfexCRM\Services\Init; use App\Classes\Modules\Companies\Services\FetchesCompany; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; @@ -26,19 +25,15 @@ class TransactionToPerfexCRMProcessor /** @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) + public function __construct(UpdatePerfexCRMProcessor $updatePerfexCRMProcessor, FetchesCompany $fetchesCompany) { $this->updatePerfexCRMProcessor = $updatePerfexCRMProcessor; - $this->initializePerfexCRMProcessor = $initializePerfexCRMProcessor; $this->fetchesCompany = $fetchesCompany; } diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 4e9bc015..0e804ea8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -214,11 +214,11 @@ class UpdatePerfexCRMProcessor // if($taskStatus != PerfexCRMTaskStatus::NOT_STARTED && $result->payload[0]['status'] == PerfexCRMTaskStatus::NOT_STARTED) // { // $task = $result->payload[0]; - // $result = $this->updatesPerfexCRMTask->execute($task['id'], $task['name'], $task['milestone'], $task['rel_id'], $taskStatus); + // $result = $this->updatesPerfexCRMTask->execute($task['id'], $task['name'], $task['milestone'], $task['rel_id'], $taskStatus, $task['startdate'], is_null($task['duedate']) ? '': $task['duedate']); // } } else{ - $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus); + $result = $this->createsPerfexCRMTask->execute($tasks[$count]['name'], $tasks[$count]['description'], '', $milestoneId, $projectId, $tasks[$count]['reference'], $tasks[$count]['on_task_completion'], $tasks[$count]['department'], $taskStatus, $tasks[$count]['priority'], $tasks[$count]['duedate']); } } } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php index 8d75989a..f2f461a4 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -15,13 +15,16 @@ class CreatesPerfexCRMTask * @param string $leadId * @param string $milestoneId * @param string $projectId - * @param string $reference, default: '' - * @param string $on_task_completion, default: '' - * @param string $status, default: 1 + * @param string $reference + * @param string $on_task_completion + * @param string $department + * @param string $status + * @param string $priority + * @param string $duedate * @return null|object * @throws MalformedRequestException */ - public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference = '', string $on_task_completion = '', string $department = '', string $status = "1") { + public function execute(string $taskName, string $taskDescription, string $leadId, string $milestoneId, string $projectId, string $reference, string $on_task_completion, string $department, string $status, string $priority, string $duedate) { try{ $custom_fields = []; if($department != ""){ @@ -43,7 +46,9 @@ class CreatesPerfexCRMTask 'is_system_created' => 1, 'reference' => $reference, 'on_task_completion' => $on_task_completion, - 'custom_fields' => $custom_fields + 'custom_fields' => $custom_fields, + 'priority' => $priority, + 'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')), ]; if($leadId != '') { @@ -58,7 +63,9 @@ class CreatesPerfexCRMTask 'is_system_created' => 1, 'reference' => $reference, 'on_task_completion' => $on_task_completion, - 'custom_fields' => $custom_fields + 'custom_fields' => $custom_fields, + 'priority' => $priority, + 'duedate' => date('Y-m-d', strtotime('+' . $duedate . ' days')), ]; } diff --git a/app/Classes/ValueObjects/Constants/PerfexCRMTaskPriority.php b/app/Classes/ValueObjects/Constants/PerfexCRMTaskPriority.php new file mode 100644 index 00000000..ead37aba --- /dev/null +++ b/app/Classes/ValueObjects/Constants/PerfexCRMTaskPriority.php @@ -0,0 +1,17 @@ + '', 'on_task_completion' => '', 'department' => '', - 'status' => PerfexCRMTaskStatus::COMPLETED + 'status' => PerfexCRMTaskStatus::COMPLETED, + 'priority' => PerfexCRMTaskPriority::DEFAULT, + 'duedate' => 0 ]; public const TASK_POST_PAYMENT_1 = [ @@ -31,7 +33,9 @@ class PerfexCRMTasks 'reference' => 'TASK_POST_PAYMENT_1', 'on_task_completion' => 'TASK_POST_PAYMENT_2', 'department' => 'Accounts', - 'status' => PerfexCRMTaskStatus::IN_PROGRESS + 'status' => PerfexCRMTaskStatus::IN_PROGRESS, + 'priority' => PerfexCRMTaskPriority::HIGH, + 'duedate' => 0 ]; public const TASK_POST_PAYMENT_2 = [ 'name' => 'Approve Payment', @@ -47,7 +51,9 @@ class PerfexCRMTasks 'reference' => 'TASK_POST_PAYMENT_2', 'on_task_completion' => 'TASK_POST_PAYMENT_3', 'department' => 'Accounts', - 'status' => '' + 'status' => '', + 'priority' => PerfexCRMTaskPriority::HIGH, + 'duedate' => 0 ]; public const TASK_POST_PAYMENT_3 = [ 'name' => 'Issue Shipping Autocount Invoince', @@ -63,7 +69,21 @@ class PerfexCRMTasks 'reference' => 'TASK_POST_PAYMENT_3', 'on_task_completion' => 'TASK_POST_PAYMENT_4', 'department' => 'Accounts', - 'status' => '' + 'status' => '', + 'priority' => PerfexCRMTaskPriority::MEDIUM, + 'duedate' => 1 + ]; + public const TASK_POST_PAYMENT_3_1 = [ + 'name' => 'Issue Shipping Autocount OR', + 'description' => '○ Purpose: To issue an invoice for the customer\'s payment in accounting software.
+ ○ Outcomes: An invoice will be issued in accounting software for the customer\'s payment.
', + 'milestone' => '', + 'reference' => 'TASK_POST_PAYMENT_3_1', + 'on_task_completion' => 'TASK_POST_PAYMENT_4', + 'department' => 'Accounts', + 'status' => '', + 'priority' => PerfexCRMTaskPriority::DEFAULT, + 'duedate' => 0 ]; public const TASK_POST_PAYMENT_4 = [ 'name' => 'Knockoff Invoice', @@ -79,7 +99,9 @@ class PerfexCRMTasks 'reference' => 'TASK_POST_PAYMENT_4', 'on_task_completion' => '', 'department' => 'Accounts', - 'status' => '' + 'status' => '', + 'priority' => PerfexCRMTaskPriority::MEDIUM, + 'duedate' => 1 ]; public const TASK_LOADED_CONTAINER_1 = [ @@ -94,7 +116,9 @@ class PerfexCRMTasks 'reference' => 'TASK_LOADED_CONTAINER_1', 'on_task_completion' => 'TASK_LOADED_CONTAINER_2', 'department' => 'Operations', - 'status' => PerfexCRMTaskStatus::IN_PROGRESS + 'status' => PerfexCRMTaskStatus::IN_PROGRESS, + 'priority' => PerfexCRMTaskPriority::HIGH, + 'duedate' => 1 ]; public const TASK_LOADED_CONTAINER_2 = [ @@ -108,7 +132,9 @@ class PerfexCRMTasks 'reference' => 'TASK_LOADED_CONTAINER_2', 'on_task_completion' => '', 'department' => 'Customer Services', - 'status' => '' + 'status' => '', + 'priority' => PerfexCRMTaskPriority::HIGH, + 'duedate' => 1 ]; @@ -126,6 +152,8 @@ class PerfexCRMTasks 'reference' => 'TASK_IDENTIFICATION_1', 'on_task_completion' => '', 'department' => 'Operations', - 'status' => PerfexCRMTaskStatus::IN_PROGRESS + 'status' => PerfexCRMTaskStatus::IN_PROGRESS, + 'priority' => PerfexCRMTaskPriority::DEFAULT, + 'duedate' => 0 ]; } diff --git a/docker-setup/nginx/default.conf b/docker-setup/nginx/default.conf index 0f052b34..d1392c4d 100644 --- a/docker-setup/nginx/default.conf +++ b/docker-setup/nginx/default.conf @@ -23,5 +23,9 @@ server { fastcgi_intercept_errors on; fastcgi_keep_conn on; fastcgi_param PHP_VALUE "auto_prepend_file= \n allow_url_include=Off \n output_buffering=Off \n output_buffering=4096"; + proxy_send_timeout 3600; + proxy_read_timeout 3600; + fastcgi_send_timeout 3600; + fastcgi_read_timeout 3600; } }