diff --git a/.env.example b/.env.example index f5b1c96b..1c362992 100644 --- a/.env.example +++ b/.env.example @@ -57,3 +57,7 @@ MIX_EXCHANGE_URL="${EXCHANGE_URL}" YD_API_CODE='' JWT_SECRET=Btj63iMEleEaww6Bb2IBECkxWn7YHPhhPFluAkg9DfcQik0qDRy6QW75ABGmPT2h + +PERFEXCRM_BASE_URL="" +PERFEXCRM_API_KEY="" +PERFEXCRM_IS_ENABLED="false" diff --git a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php index 70bae013..8923ec01 100644 --- a/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php +++ b/app/Classes/Modules/PerfexCRM/DataTransferObjects/CreateTaskPerfexCRMObject.php @@ -33,8 +33,10 @@ class CreateTaskPerfexCRMObject implements DataTransferObject /** @var string */ private $status; + /** @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) + public function __construct(string $email, string $name, string $description, string $leadId, string $projectId, string $milestoneId, string $reference, string $onTaskCompletion, string $status, string $department) { $this->email = $email; $this->name = $name; @@ -45,6 +47,7 @@ class CreateTaskPerfexCRMObject implements DataTransferObject $this->reference = $reference; $this->onTaskCompletion = $onTaskCompletion; $this->status = $status; + $this->department = $department; } /** @@ -124,4 +127,11 @@ class CreateTaskPerfexCRMObject implements DataTransferObject return $this->status; } + /** + * @return string + */ + public function getDepartment(): string + { + return $this->department; + } } diff --git a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php index 965f6f34..f70760f8 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/CreatePerfexCRMTaskProcessor.php @@ -33,6 +33,7 @@ class CreatePerfexCRMTaskProcessor $createTaskPerfexCRMObject->getProjectId(), $createTaskPerfexCRMObject->getReference(), $createTaskPerfexCRMObject->getOnTaskCompletion(), + $createTaskPerfexCRMObject->getDepartment(), $createTaskPerfexCRMObject->getStatus(), ); return true; diff --git a/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php index 809dc835..82ef0d36 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/InitializePerfexCRMProcessor.php @@ -183,7 +183,7 @@ class InitializePerfexCRMProcessor } // 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'], $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); if(is_null($result)){ break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously } diff --git a/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php index b882d0c7..d2fdf961 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/NewLeadTaskToPerfexCRMProcessor.php @@ -29,7 +29,8 @@ class NewLeadTaskToPerfexCRMProcessor "", "", "", - PerfexCRMTasks::TASK_IDENTIFICATION_1['status'] + PerfexCRMTasks::TASK_IDENTIFICATION_1['status'], + PerfexCRMTasks::TASK_IDENTIFICATION_1['department'] ); CreatePerfexCRMSingleTask::dispatch($createTaskPerfexCRMObject); diff --git a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php index 03900ce2..475a2eaf 100644 --- a/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php +++ b/app/Classes/Modules/PerfexCRM/Processors/UpdatePerfexCRMProcessor.php @@ -12,10 +12,12 @@ use App\Classes\Modules\PerfexCRM\Services\FetchesPerfexCRMTask; use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomer; use App\Classes\Modules\PerfexCRM\Services\CreatesPerfexCRMCustomerContact; use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMCustomer; +use App\Classes\Modules\PerfexCRM\Services\UpdatesPerfexCRMProject; use App\Classes\Modules\PerfexCRM\DataTransferObjects\CustomerContactObject; use App\Classes\Exceptions\MalformedRequestException; use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject; use App\Classes\ValueObjects\Constants\PerfexCRMTaskStatus; +use App\Classes\ValueObjects\Constants\PerfexCRMProjectStatus; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Illuminate\Http\Request; @@ -55,6 +57,9 @@ class UpdatePerfexCRMProcessor /** @var UpdatesPerfexCRMCustomer */ private $updatesPerfexCRMCustomer; + /** @var UpdatesPerfexCRMProject */ + private $updatesPerfexCRMProject; + /** * @param ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer * @param CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject @@ -66,6 +71,7 @@ class UpdatePerfexCRMProcessor * @param CreatesPerfexCRMCustomer $createsPerfexCRMCustomer * @param CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact * @param UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer + * @param UpdatesPerfexCRMProject $updatesPerfexCRMProject */ public function __construct(ConvertsPerfexCRMLeadToCustomer $convertsPerfexCRMLeadToCustomer, CreatesPerfexCRMCustomerProject $createsPerfexCRMCustomerProject, @@ -76,7 +82,8 @@ class UpdatePerfexCRMProcessor FetchesPerfexCRMTask $fetchesPerfexCRMTask, CreatesPerfexCRMCustomer $createsPerfexCRMCustomer, CreatesPerfexCRMCustomerContact $createsPerfexCRMCustomerContact, - UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer) + UpdatesPerfexCRMCustomer $updatesPerfexCRMCustomer, + UpdatesPerfexCRMProject $updatesPerfexCRMProject) { $this->convertsPerfexCRMLeadToCustomer = $convertsPerfexCRMLeadToCustomer; $this->createsPerfexCRMCustomerProject = $createsPerfexCRMCustomerProject; @@ -88,6 +95,7 @@ class UpdatePerfexCRMProcessor $this->createsPerfexCRMCustomer = $createsPerfexCRMCustomer; $this->createsPerfexCRMCustomerContact = $createsPerfexCRMCustomerContact; $this->updatesPerfexCRMCustomer = $updatesPerfexCRMCustomer; + $this->updatesPerfexCRMProject = $updatesPerfexCRMProject; } /** @@ -151,7 +159,13 @@ class UpdatePerfexCRMProcessor $projectId = $result->payload['project_id']; } else{ - $projectId = $this->fetchesPerfexCRMProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId)->id; + $project = $this->fetchesPerfexCRMProject->execute($updatePerfexCRMObject->getProjectName(), $crmClientId); + $projectId = $project->id; + //if the project status is anything but PerfexCRMProjectStatus::NOT_STARTED, update the project + if($updatePerfexCRMObject->getProjectStatus() != PerfexCRMProjectStatus::NOT_STARTED) + { + $this->updatesPerfexCRMProject->execute($project, $updatePerfexCRMObject->getProjectStatus()); + } } $tasks = $updatePerfexCRMObject->getTaskNames(); @@ -180,7 +194,7 @@ class UpdatePerfexCRMProcessor } // 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'], $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); if(is_null($result)){ break; //Breaking the rest of the tasks in array assuming that they are all created as a batch previously } diff --git a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php index 1674c999..8d75989a 100644 --- a/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php +++ b/app/Classes/Modules/PerfexCRM/Services/CreatesPerfexCRMTask.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; class CreatesPerfexCRMTask { @@ -20,8 +21,17 @@ class CreatesPerfexCRMTask * @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 $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 = "1") { try{ + $custom_fields = []; + if($department != ""){ + $custom_fields = [ + "tasks" => [ + PerfexCRMCustomFields::TASKS_DEPARTMENT => $department + ] + ]; + } + $data = [ 'name' => $taskName, 'description' => $taskDescription, @@ -32,7 +42,8 @@ class CreatesPerfexCRMTask 'status' => $status, 'is_system_created' => 1, 'reference' => $reference, - 'on_task_completion' => $on_task_completion + 'on_task_completion' => $on_task_completion, + 'custom_fields' => $custom_fields ]; if($leadId != '') { @@ -46,7 +57,8 @@ class CreatesPerfexCRMTask 'status' => $status, 'is_system_created' => 1, 'reference' => $reference, - 'on_task_completion' => $on_task_completion + 'on_task_completion' => $on_task_completion, + 'custom_fields' => $custom_fields ]; } diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php index 3f891d08..bdcf7437 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMCustomer.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; class UpdatesPerfexCRMCustomer { @@ -19,7 +20,7 @@ class UpdatesPerfexCRMCustomer try{ $custom_fields = [ "customers" => [ - 2 => $companyReference + PerfexCRMCustomFields::CUSTOMERS_SHIPPING_PORTAL_REFERENCE => $companyReference ] ]; diff --git a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php index 565dcc99..3c0e4897 100644 --- a/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php +++ b/app/Classes/Modules/PerfexCRM/Services/UpdatesPerfexCRMLead.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\PerfexCRM\Services; use Illuminate\Support\Facades\Http; use App\Classes\Exceptions\MalformedRequestException; use Illuminate\Support\Facades\Log; +use App\Classes\ValueObjects\Constants\PerfexCRMCustomFields; class UpdatesPerfexCRMLead { @@ -18,7 +19,7 @@ class UpdatesPerfexCRMLead try{ $custom_fields = [ "leads" => [ - 4 => $companyReference + PerfexCRMCustomFields::LEADS_SHIPPING_PORTAL_REFERENCE => $companyReference ] ]; diff --git a/app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php b/app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php new file mode 100644 index 00000000..f40f4a1d --- /dev/null +++ b/app/Classes/ValueObjects/Constants/PerfexCRMCustomFields.php @@ -0,0 +1,18 @@ + 'MILESTONE 1 - Customer Paid', 'reference' => '', 'on_task_completion' => '', + 'department' => '', 'status' => PerfexCRMTaskStatus::COMPLETED ]; @@ -29,6 +30,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_1', 'on_task_completion' => 'TASK_POST_PAYMENT_2', + 'department' => 'Accounts', 'status' => PerfexCRMTaskStatus::IN_PROGRESS ]; public const TASK_POST_PAYMENT_2 = [ @@ -44,6 +46,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_2', 'on_task_completion' => 'TASK_POST_PAYMENT_3', + 'department' => 'Accounts', 'status' => '' ]; public const TASK_POST_PAYMENT_3 = [ @@ -59,6 +62,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_3', 'on_task_completion' => 'TASK_POST_PAYMENT_4', + 'department' => 'Accounts', 'status' => '' ]; public const TASK_POST_PAYMENT_4 = [ @@ -74,6 +78,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_POST_PAYMENT_4', 'on_task_completion' => '', + 'department' => 'Accounts', 'status' => '' ]; @@ -88,6 +93,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_LOADED_CONTAINER_1', 'on_task_completion' => 'TASK_LOADED_CONTAINER_2', + 'department' => 'Operations', 'status' => PerfexCRMTaskStatus::IN_PROGRESS ]; @@ -101,6 +107,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_LOADED_CONTAINER_2', 'on_task_completion' => '', + 'department' => 'Customer Services', 'status' => '' ]; @@ -118,6 +125,7 @@ class PerfexCRMTasks 'milestone' => '', 'reference' => 'TASK_IDENTIFICATION_1', 'on_task_completion' => '', + 'department' => 'Operations', 'status' => PerfexCRMTaskStatus::IN_PROGRESS ]; } diff --git a/routes/account.php b/routes/account.php index e857cf0a..7d12785f 100644 --- a/routes/account.php +++ b/routes/account.php @@ -35,7 +35,7 @@ Route::group(['prefix' => 'account', 'namespace' => 'Accounts', 'as' => 'account }); Route::group(['middleware' => 'valid.token', 'prefix' => 'user', 'as' => 'user.'], function () { - Route::get('/{email}', 'FetchUserByEmailController@fetch')->name('company'); + Route::get('/email/{email}', 'FetchUserByEmailController@fetch')->name('company'); Route::post('/show', 'FetchUserController@fetch')->name('show'); Route::get('/list', 'ListUsersController@list')->name('list'); Route::put('/update/{id}', 'UpdateUserController@update')->name('update');