From 6278ddb16b0438994c41c233dad01f277a15eaf0 Mon Sep 17 00:00:00 2001 From: Fairuz Date: Thu, 22 Jul 2021 11:28:58 +0800 Subject: [PATCH] WIP - Order steps & remaining APIs --- .../ControllersLogic/CreateBankLogic.php | 72 ++++++++++ .../ControllersLogic/DeleteBankLogic.php | 77 ++++++++++ .../Banks/ControllersLogic/ListBanksLogic.php | 62 ++++++++ .../SetBankToDefaultLogic.php | 78 ++++++++++ .../ControllersLogic/UpdateBankLogic.php | 85 +++++++++++ .../Banks/DataTransferObjects/BankObject.php | 136 ++++++++++++++++++ .../Modules/Banks/Services/CreatesBank.php | 33 +++++ .../Modules/Banks/Services/DeletesBank.php | 19 +++ .../Modules/Banks/Services/FetchesBank.php | 34 +++++ .../Modules/Banks/Services/ListsBanks.php | 33 +++++ .../Banks/Services/ResetsBanksDefault.php | 20 +++ .../Banks/Services/SetsBankToDefault.php | 22 +++ .../Modules/Banks/Services/UpdatesBank.php | 30 ++++ .../Banks/Standards/Rules/CanCreateBank.php | 50 +++++++ .../Banks/Standards/Rules/CanDeleteBank.php | 40 ++++++ .../Banks/Standards/Rules/CanListBanks.php | 37 +++++ .../Banks/Standards/Rules/CanUpdateBank.php | 54 +++++++ .../Standards/Validators/BankValidation.php | 46 ++++++ .../Processors/CreateEntityProcessor copy.php | 21 +++ .../GetContractObligationsProcessor.php | 5 +- .../Modules/Unity/Services/CreatesEntity.php | 30 ++++ .../Constants/BankAccountType.php | 11 ++ .../ValueObjects/Constants/UnityConfig.php | 15 ++ .../Banks/CreateBankController.php | 19 +++ .../Banks/DeleteBankController.php | 19 +++ .../Controllers/Banks/ListBanksController.php | 19 +++ .../Banks/SetBankToDefaultController.php | 20 +++ .../Banks/UpdateBankController.php | 20 +++ .../Remarks/CreateRemarkController.php | 20 +++ .../Remarks/DeleteRemarkController.php | 20 +++ .../Remarks/FetchRemarkController.php | 20 +++ .../Remarks/ListRemarksController.php | 20 +++ .../Remarks/UpdateRemarkController.php | 20 +++ .../Schedules/CreateScheduleController.php | 20 +++ .../Schedules/DeleteScheduleController.php | 20 +++ .../Schedules/FetchScheduleController.php | 20 +++ .../Schedules/ListSchedulesController.php | 20 +++ .../Schedules/UpdateScheduleController.php | 20 +++ .../Transports/CreateTransportController.php | 20 +++ .../Transports/DeleteTransportController.php | 20 +++ .../Transports/FetchTransportController.php | 20 +++ .../Transports/ListTransportsController.php | 20 +++ .../Transports/UpdateTransportController.php | 20 +++ app/Models/BankAccount.php | 28 ++++ app/Models/ContainerPackingList.php | 17 +++ app/Models/Package.php | 24 ++++ app/Models/PackageItem.php | 18 +++ app/Models/PackingList.php | 12 ++ app/Models/PackingListPackage.php | 23 +++ app/Models/Remark.php | 18 +++ app/Models/Schedule.php | 18 +++ app/Models/TransportArrangement.php | 11 ++ .../2021_07_05_115638_create_banks_table.php | 50 +++++++ ...021_07_21_110051_create_packages_table.php | 48 +++++++ ...7_21_110058_create_package_items_table.php | 43 ++++++ ...7_21_110059_create_packing_lists_table.php | 34 +++++ ...208_create_packing_list_packages_table.php | 37 +++++ ...0_create_container_packing_lists_table.php | 37 +++++ ...2021_07_21_110310_create_remarks_table.php | 39 +++++ ...34_create_transport_arrangements_table.php | 46 ++++++ ...21_07_21_110522_create_schedules_table.php | 42 ++++++ routes/bank.php | 11 ++ routes/remark.php | 11 ++ routes/schedule.php | 11 ++ routes/transport.php | 11 ++ 65 files changed, 1992 insertions(+), 4 deletions(-) create mode 100644 app/Classes/Modules/Banks/ControllersLogic/CreateBankLogic.php create mode 100644 app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php create mode 100644 app/Classes/Modules/Banks/ControllersLogic/ListBanksLogic.php create mode 100644 app/Classes/Modules/Banks/ControllersLogic/SetBankToDefaultLogic.php create mode 100644 app/Classes/Modules/Banks/ControllersLogic/UpdateBankLogic.php create mode 100644 app/Classes/Modules/Banks/DataTransferObjects/BankObject.php create mode 100644 app/Classes/Modules/Banks/Services/CreatesBank.php create mode 100644 app/Classes/Modules/Banks/Services/DeletesBank.php create mode 100644 app/Classes/Modules/Banks/Services/FetchesBank.php create mode 100644 app/Classes/Modules/Banks/Services/ListsBanks.php create mode 100644 app/Classes/Modules/Banks/Services/ResetsBanksDefault.php create mode 100644 app/Classes/Modules/Banks/Services/SetsBankToDefault.php create mode 100644 app/Classes/Modules/Banks/Services/UpdatesBank.php create mode 100644 app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php create mode 100644 app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php create mode 100644 app/Classes/Modules/Banks/Standards/Rules/CanListBanks.php create mode 100644 app/Classes/Modules/Banks/Standards/Rules/CanUpdateBank.php create mode 100644 app/Classes/Modules/Banks/Standards/Validators/BankValidation.php create mode 100644 app/Classes/Modules/Unity/Processors/CreateEntityProcessor copy.php create mode 100644 app/Classes/Modules/Unity/Services/CreatesEntity.php create mode 100644 app/Classes/ValueObjects/Constants/BankAccountType.php create mode 100644 app/Classes/ValueObjects/Constants/UnityConfig.php create mode 100644 app/Http/Controllers/Banks/CreateBankController.php create mode 100644 app/Http/Controllers/Banks/DeleteBankController.php create mode 100644 app/Http/Controllers/Banks/ListBanksController.php create mode 100644 app/Http/Controllers/Banks/SetBankToDefaultController.php create mode 100644 app/Http/Controllers/Banks/UpdateBankController.php create mode 100644 app/Http/Controllers/Remarks/CreateRemarkController.php create mode 100644 app/Http/Controllers/Remarks/DeleteRemarkController.php create mode 100644 app/Http/Controllers/Remarks/FetchRemarkController.php create mode 100644 app/Http/Controllers/Remarks/ListRemarksController.php create mode 100644 app/Http/Controllers/Remarks/UpdateRemarkController.php create mode 100644 app/Http/Controllers/Schedules/CreateScheduleController.php create mode 100644 app/Http/Controllers/Schedules/DeleteScheduleController.php create mode 100644 app/Http/Controllers/Schedules/FetchScheduleController.php create mode 100644 app/Http/Controllers/Schedules/ListSchedulesController.php create mode 100644 app/Http/Controllers/Schedules/UpdateScheduleController.php create mode 100644 app/Http/Controllers/Transports/CreateTransportController.php create mode 100644 app/Http/Controllers/Transports/DeleteTransportController.php create mode 100644 app/Http/Controllers/Transports/FetchTransportController.php create mode 100644 app/Http/Controllers/Transports/ListTransportsController.php create mode 100644 app/Http/Controllers/Transports/UpdateTransportController.php create mode 100644 app/Models/BankAccount.php create mode 100644 app/Models/ContainerPackingList.php create mode 100644 app/Models/Package.php create mode 100644 app/Models/PackageItem.php create mode 100644 app/Models/PackingList.php create mode 100644 app/Models/PackingListPackage.php create mode 100644 app/Models/Remark.php create mode 100644 app/Models/Schedule.php create mode 100644 app/Models/TransportArrangement.php create mode 100644 database/migrations/2021_07_05_115638_create_banks_table.php create mode 100644 database/migrations/2021_07_21_110051_create_packages_table.php create mode 100644 database/migrations/2021_07_21_110058_create_package_items_table.php create mode 100644 database/migrations/2021_07_21_110059_create_packing_lists_table.php create mode 100644 database/migrations/2021_07_21_110208_create_packing_list_packages_table.php create mode 100644 database/migrations/2021_07_21_110240_create_container_packing_lists_table.php create mode 100644 database/migrations/2021_07_21_110310_create_remarks_table.php create mode 100644 database/migrations/2021_07_21_110434_create_transport_arrangements_table.php create mode 100644 database/migrations/2021_07_21_110522_create_schedules_table.php create mode 100644 routes/bank.php create mode 100644 routes/remark.php create mode 100644 routes/schedule.php create mode 100644 routes/transport.php diff --git a/app/Classes/Modules/Banks/ControllersLogic/CreateBankLogic.php b/app/Classes/Modules/Banks/ControllersLogic/CreateBankLogic.php new file mode 100644 index 00000000..ff5b16c2 --- /dev/null +++ b/app/Classes/Modules/Banks/ControllersLogic/CreateBankLogic.php @@ -0,0 +1,72 @@ + 'Created Bank', + 'message' => 'You have successfully created a new Bank' + ]; + } + + /** @var CanCreateBank */ + private $canCreateBank; + + /** @var CreatesBank */ + private $createsBank; + + + /** + * CreateBankLogic constructor. + * @param CanCreateBank $canCreateBank + * @param CreatesBank $createsBank + */ + public function __construct( + CanCreateBank $canCreateBank, + CreatesBank $createsBank + ) + { + $this->canCreateBank = $canCreateBank; + $this->createsBank = $createsBank; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + + $bank_object = new BankObject($request->input('company_id'), $request->input('account_type'), + $request->input('bank_name'), $request->input('holder_name'), $request->input('account_no'), + $request->input('bank_branch'), $request->input('swift'), $request->input('snap'), + $request->input('country_id'), $request->input('reference')); + + $this->canCreateBank->passes($bank_object); + + $bank = $this->createsBank->execute($bank_object); + + return $this->resourceResponse(new BankResource($bank)); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php b/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php new file mode 100644 index 00000000..24975379 --- /dev/null +++ b/app/Classes/Modules/Banks/ControllersLogic/DeleteBankLogic.php @@ -0,0 +1,77 @@ + 'Delete Bank', + 'message' => 'You have successfully deleted the Bank' + ]; + } + + /** @var CanDeleteBank */ + private $canDeleteBank; + + /** @var DeletesBank */ + private $deletesBank; + + /** @var FetchesBank */ + private $fetchesBank; + + + /** + * DeleteBankLogic constructor. + * @param CanDeleteBank $canDeleteBank + * @param DeletesBank $deletesBank + * @param FetchesBank $fetchesBank + */ + public function __construct( + CanDeleteBank $canDeleteBank, + DeletesBank $deletesBank, + FetchesBank $fetchesBank + ) + { + $this->canDeleteBank = $canDeleteBank; + $this->deletesBank = $deletesBank; + $this->fetchesBank = $fetchesBank; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + + $this->canDeleteBank->passes(); + + $bank = $this->fetchesBank->execute(['id' => $request->route('id')]); + + if($bank->default){ + throw new RequestValidationException('You can\'t delete bank account when it set to default'); + } + + $this->deletesBank->execute($bank); + + return $this->response([]); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/ControllersLogic/ListBanksLogic.php b/app/Classes/Modules/Banks/ControllersLogic/ListBanksLogic.php new file mode 100644 index 00000000..94396d61 --- /dev/null +++ b/app/Classes/Modules/Banks/ControllersLogic/ListBanksLogic.php @@ -0,0 +1,62 @@ + 'Retrieve Banks', + 'message' => 'You have successfully retrieved a list of Banks' + ]; + } + + /** @var CanListBanks */ + private $canListBanks; + + /** @var ListsBanks */ + private $listsBanks; + + /** + * ListBanksLogic constructor. + * @param CanListBanks $canListBanks + * @param ListsBanks $listsBanks + */ + public function __construct(CanListBanks $canListBanks, ListsBanks $listsBanks) + { + $this->canListBanks = $canListBanks; + $this->listsBanks = $listsBanks; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $this->canListBanks->passes(); + + $banks = $this->listsBanks->execute($this->listsBanks->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(BankResource::collection($banks)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/ControllersLogic/SetBankToDefaultLogic.php b/app/Classes/Modules/Banks/ControllersLogic/SetBankToDefaultLogic.php new file mode 100644 index 00000000..0e9885ae --- /dev/null +++ b/app/Classes/Modules/Banks/ControllersLogic/SetBankToDefaultLogic.php @@ -0,0 +1,78 @@ + 'Updated Bank', + 'message' => 'You have successfully updated the Bank' + ]; + } + + /** @var ResetsBanksDefault */ + private $resetsBanksDefault; + + /** @var FetchesBank */ + private $fetchesBank; + + /** @var SetsBankToDefault*/ + private $setsBankToDefault ; + + /** + * SetBankToDefaultLogic constructor. + * @param ResetsBanksDefault $resetsBanksDefault + * @param FetchesBank $fetchesBank + * @param SetsBankToDefault $setsBankToDefault + */ + public function __construct(ResetsBanksDefault $resetsBanksDefault, FetchesBank $fetchesBank, SetsBankToDefault $setsBankToDefault) + { + $this->resetsBanksDefault = $resetsBanksDefault; + $this->fetchesBank = $fetchesBank; + $this->setsBankToDefault = $setsBankToDefault; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request) : JsonResponse + { + + /** @var Bank $bank */ + $bank = $this->fetchesBank->execute(['id' => $request->route('id')]); + + $this->resetsBanksDefault->execute($bank); + + $this->setsBankToDefault->execute($bank); + + return $this->resourceResponse(new BankResource($this->setsBankToDefault->execute($bank))); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/ControllersLogic/UpdateBankLogic.php b/app/Classes/Modules/Banks/ControllersLogic/UpdateBankLogic.php new file mode 100644 index 00000000..85e3449c --- /dev/null +++ b/app/Classes/Modules/Banks/ControllersLogic/UpdateBankLogic.php @@ -0,0 +1,85 @@ + 'Update Bank Account', + 'message' => 'You have successfully updated the Bank Account' + ]; + } + + /** @var CanUpdateBank */ + private $canUpdateBank; + + /** @var UpdatesBank */ + private $updatesBank; + + /** @var FetchesBank */ + private $fetchesBank; + + + /** + * UpdateBankLogic constructor. + * @param CanUpdateBank $canUpdateBank + * @param UpdatesBank $updatesBank + * @param FetchesBank $fetchesBank + */ + public function __construct( + CanUpdateBank $canUpdateBank, + UpdatesBank $updatesBank, + FetchesBank $fetchesBank + ) + { + $this->canUpdateBank = $canUpdateBank; + $this->updatesBank = $updatesBank; + $this->fetchesBank = $fetchesBank; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + + $bankObject = new BankObject($request->input('company_id'), $request->input('country_id'), + $request->input('reference'), $request->input('bank_name'), $request->input('holder_name'), + $request->input('account_no')); + + + $bank = $this->fetchesBank->execute(['id' => $request->route('id')]); + + $this->canUpdateBank->passes($bankObject); + + $bank_query = $this->updatesBank->execute($bank, $bankObject); + + return $this->resourceResponse(new BankResource($bank_query)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/DataTransferObjects/BankObject.php b/app/Classes/Modules/Banks/DataTransferObjects/BankObject.php new file mode 100644 index 00000000..43ba5fd9 --- /dev/null +++ b/app/Classes/Modules/Banks/DataTransferObjects/BankObject.php @@ -0,0 +1,136 @@ +company_id = $company_id; + $this->type = $type; + $this->bank_name = $bank_name; + $this->holder_name = $holder_name; + $this->account_no = $account_no; + $this->bank_branch = $bank_branch; + $this->swift = $swift; + $this->snap = $snap; + $this->country_id = $country_id; + $this->reference = $reference; + } + + /** + * @return int + */ + public function getCompanyId(): int + { + return $this->company_id; + } + + /** + * @return int + */ + public function getType(): int + { + return $this->type; + } + + /** + * @return string + */ + public function getBankName(): string + { + return $this->bank_name; + } + + /** + * @return string + */ + public function getHolderName(): string + { + return $this->holder_name; + } + + /** + * @return string + */ + public function getAccountNo(): string + { + return $this->account_no; + } + + /** + * @return null|string + */ + public function getBankBranch(): ?string + { + return $this->bank_branch; + } + + /** + * @return null|string + */ + public function getSwift(): ?string + { + return $this->swift; + } + + /** + * @return null|string + */ + public function getSnap(): ?string + { + return $this->snap; + } + + /** + * @return int + */ + public function getCountryId(): int + { + return $this->country_id; + } + + /** + * @return null|string + */ + public function getReference(): ?string + { + return $this->reference; + } + + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/CreatesBank.php b/app/Classes/Modules/Banks/Services/CreatesBank.php new file mode 100644 index 00000000..872dc7ce --- /dev/null +++ b/app/Classes/Modules/Banks/Services/CreatesBank.php @@ -0,0 +1,33 @@ +company_id = $object->getCompanyId(); + $model->reference = $object->getReference(); + $model->bank_name = $object->getBankName(); + $model->holder_name = $object->getHolderName(); + $model->account_no = $object->getAccountNo(); + $model->bank_branch = $object->getBankBranch(); + $model->swift = $object->getSwift(); + $model->snap = $object->getSnap(); + $model->type = $object->getType(); + $model->country_id = $object->getCountryId(); + + return $this->handler($model); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/DeletesBank.php b/app/Classes/Modules/Banks/Services/DeletesBank.php new file mode 100644 index 00000000..2aeb8ea7 --- /dev/null +++ b/app/Classes/Modules/Banks/Services/DeletesBank.php @@ -0,0 +1,19 @@ +handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/FetchesBank.php b/app/Classes/Modules/Banks/Services/FetchesBank.php new file mode 100644 index 00000000..dd075da6 --- /dev/null +++ b/app/Classes/Modules/Banks/Services/FetchesBank.php @@ -0,0 +1,34 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/ListsBanks.php b/app/Classes/Modules/Banks/Services/ListsBanks.php new file mode 100644 index 00000000..f1470ca4 --- /dev/null +++ b/app/Classes/Modules/Banks/Services/ListsBanks.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/ResetsBanksDefault.php b/app/Classes/Modules/Banks/Services/ResetsBanksDefault.php new file mode 100644 index 00000000..204ce719 --- /dev/null +++ b/app/Classes/Modules/Banks/Services/ResetsBanksDefault.php @@ -0,0 +1,20 @@ +company->banks()->where('type', $bank->type)->update(['default' => false]); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/SetsBankToDefault.php b/app/Classes/Modules/Banks/Services/SetsBankToDefault.php new file mode 100644 index 00000000..eab9b709 --- /dev/null +++ b/app/Classes/Modules/Banks/Services/SetsBankToDefault.php @@ -0,0 +1,22 @@ +default = true; + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Services/UpdatesBank.php b/app/Classes/Modules/Banks/Services/UpdatesBank.php new file mode 100644 index 00000000..6367a6aa --- /dev/null +++ b/app/Classes/Modules/Banks/Services/UpdatesBank.php @@ -0,0 +1,30 @@ +bank_name = $object->getBankName(); + $model->holder_name = $object->getHolderName(); + $model->account_no = $object->getAccountNo(); + $model->bank_branch = $object->getBankBranch(); + $model->swift = $object->getSwift(); + $model->snap = $object->getSnap(); + $model->default = $object->getDefault(); + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php b/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php new file mode 100644 index 00000000..8cef85d8 --- /dev/null +++ b/app/Classes/Modules/Banks/Standards/Rules/CanCreateBank.php @@ -0,0 +1,50 @@ +BankValidation = $BankValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + return true; + } + + /** + * @param CompanyObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->BankValidation->validate($object); + } + + /** + * @param CompanyObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php b/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php new file mode 100644 index 00000000..074550e5 --- /dev/null +++ b/app/Classes/Modules/Banks/Standards/Rules/CanDeleteBank.php @@ -0,0 +1,40 @@ +BankValidation = $BankValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param BankObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->BankValidation->validate($object); + } + + /** + * @param BankObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Banks/Standards/Validators/BankValidation.php b/app/Classes/Modules/Banks/Standards/Validators/BankValidation.php new file mode 100644 index 00000000..896f70bc --- /dev/null +++ b/app/Classes/Modules/Banks/Standards/Validators/BankValidation.php @@ -0,0 +1,46 @@ + $object->getCountryId(), + 'company_id' => $object->getCompanyId(), + 'bank_name' => $object->getBankName(), + 'holder_name' => $object->getHolderName(), + 'account_no' => $object->getAccountNo() + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'country_id' => 'required', + 'company_id' => 'required', + 'bank_name' => 'required', + 'holder_name' => 'required', + 'account_no' => 'required' + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Unity/Processors/CreateEntityProcessor copy.php b/app/Classes/Modules/Unity/Processors/CreateEntityProcessor copy.php new file mode 100644 index 00000000..0b844c93 --- /dev/null +++ b/app/Classes/Modules/Unity/Processors/CreateEntityProcessor copy.php @@ -0,0 +1,21 @@ +createsEntity = $createsEntity; + } + + public function execute(){ + return $this->createsEntity->execute(); + } +} diff --git a/app/Classes/Modules/Unity/Processors/GetContractObligationsProcessor.php b/app/Classes/Modules/Unity/Processors/GetContractObligationsProcessor.php index 337b3d7e..82aa0332 100644 --- a/app/Classes/Modules/Unity/Processors/GetContractObligationsProcessor.php +++ b/app/Classes/Modules/Unity/Processors/GetContractObligationsProcessor.php @@ -8,13 +8,10 @@ use App\Classes\Modules\Unity\Services\GetContractObligations; class GetContractObligationsProcessor { - private $unityConfig; - - private $GetContractObligations; + private $getContractObligations; public function __construct(GetContractObligations $getContractObligations) { - $this->unityConfig = Config::get('unity'); $this->getContractObligations = $getContractObligations; } diff --git a/app/Classes/Modules/Unity/Services/CreatesEntity.php b/app/Classes/Modules/Unity/Services/CreatesEntity.php new file mode 100644 index 00000000..4e473f19 --- /dev/null +++ b/app/Classes/Modules/Unity/Services/CreatesEntity.php @@ -0,0 +1,30 @@ +createEntityEndpoint = Config::get('unity.url').Config::get('unity.create_entity_endpoint'); + $this->getAccessToken = $getAccessToken; + } + + public function execute($entity_name){ + + $accesToken=$this->getAccessToken->execute(); + + $response = Http::withToken($accesToken)->post($this->createEntityEndpoint,['name'=>$entity_name])->object(); + + return (isset($response->data)) ? $response->data : []; + + } +} diff --git a/app/Classes/ValueObjects/Constants/BankAccountType.php b/app/Classes/ValueObjects/Constants/BankAccountType.php new file mode 100644 index 00000000..13a36fde --- /dev/null +++ b/app/Classes/ValueObjects/Constants/BankAccountType.php @@ -0,0 +1,11 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Banks/DeleteBankController.php b/app/Http/Controllers/Banks/DeleteBankController.php new file mode 100644 index 00000000..626842fc --- /dev/null +++ b/app/Http/Controllers/Banks/DeleteBankController.php @@ -0,0 +1,19 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Banks/ListBanksController.php b/app/Http/Controllers/Banks/ListBanksController.php new file mode 100644 index 00000000..b8708529 --- /dev/null +++ b/app/Http/Controllers/Banks/ListBanksController.php @@ -0,0 +1,19 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Banks/SetBankToDefaultController.php b/app/Http/Controllers/Banks/SetBankToDefaultController.php new file mode 100644 index 00000000..6d8688b0 --- /dev/null +++ b/app/Http/Controllers/Banks/SetBankToDefaultController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Banks/UpdateBankController.php b/app/Http/Controllers/Banks/UpdateBankController.php new file mode 100644 index 00000000..ddfb2ead --- /dev/null +++ b/app/Http/Controllers/Banks/UpdateBankController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Remarks/CreateRemarkController.php b/app/Http/Controllers/Remarks/CreateRemarkController.php new file mode 100644 index 00000000..530e2737 --- /dev/null +++ b/app/Http/Controllers/Remarks/CreateRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Remarks/DeleteRemarkController.php b/app/Http/Controllers/Remarks/DeleteRemarkController.php new file mode 100644 index 00000000..ab38015e --- /dev/null +++ b/app/Http/Controllers/Remarks/DeleteRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Remarks/FetchRemarkController.php b/app/Http/Controllers/Remarks/FetchRemarkController.php new file mode 100644 index 00000000..c9319712 --- /dev/null +++ b/app/Http/Controllers/Remarks/FetchRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Remarks/ListRemarksController.php b/app/Http/Controllers/Remarks/ListRemarksController.php new file mode 100644 index 00000000..fded91e7 --- /dev/null +++ b/app/Http/Controllers/Remarks/ListRemarksController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Remarks/UpdateRemarkController.php b/app/Http/Controllers/Remarks/UpdateRemarkController.php new file mode 100644 index 00000000..dcc60dc0 --- /dev/null +++ b/app/Http/Controllers/Remarks/UpdateRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Schedules/CreateScheduleController.php b/app/Http/Controllers/Schedules/CreateScheduleController.php new file mode 100644 index 00000000..530e2737 --- /dev/null +++ b/app/Http/Controllers/Schedules/CreateScheduleController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Schedules/DeleteScheduleController.php b/app/Http/Controllers/Schedules/DeleteScheduleController.php new file mode 100644 index 00000000..ab38015e --- /dev/null +++ b/app/Http/Controllers/Schedules/DeleteScheduleController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Schedules/FetchScheduleController.php b/app/Http/Controllers/Schedules/FetchScheduleController.php new file mode 100644 index 00000000..c9319712 --- /dev/null +++ b/app/Http/Controllers/Schedules/FetchScheduleController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Schedules/ListSchedulesController.php b/app/Http/Controllers/Schedules/ListSchedulesController.php new file mode 100644 index 00000000..fded91e7 --- /dev/null +++ b/app/Http/Controllers/Schedules/ListSchedulesController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Schedules/UpdateScheduleController.php b/app/Http/Controllers/Schedules/UpdateScheduleController.php new file mode 100644 index 00000000..dcc60dc0 --- /dev/null +++ b/app/Http/Controllers/Schedules/UpdateScheduleController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Transports/CreateTransportController.php b/app/Http/Controllers/Transports/CreateTransportController.php new file mode 100644 index 00000000..530e2737 --- /dev/null +++ b/app/Http/Controllers/Transports/CreateTransportController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Transports/DeleteTransportController.php b/app/Http/Controllers/Transports/DeleteTransportController.php new file mode 100644 index 00000000..ab38015e --- /dev/null +++ b/app/Http/Controllers/Transports/DeleteTransportController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Transports/FetchTransportController.php b/app/Http/Controllers/Transports/FetchTransportController.php new file mode 100644 index 00000000..c9319712 --- /dev/null +++ b/app/Http/Controllers/Transports/FetchTransportController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Transports/ListTransportsController.php b/app/Http/Controllers/Transports/ListTransportsController.php new file mode 100644 index 00000000..fded91e7 --- /dev/null +++ b/app/Http/Controllers/Transports/ListTransportsController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Transports/UpdateTransportController.php b/app/Http/Controllers/Transports/UpdateTransportController.php new file mode 100644 index 00000000..dcc60dc0 --- /dev/null +++ b/app/Http/Controllers/Transports/UpdateTransportController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Models/BankAccount.php b/app/Models/BankAccount.php new file mode 100644 index 00000000..94e2f00f --- /dev/null +++ b/app/Models/BankAccount.php @@ -0,0 +1,28 @@ +hasOne(Country::class, 'country_id', 'id'); + } + + public function owner(): morphTo + { + return $this->morphTo(); + } +} diff --git a/app/Models/ContainerPackingList.php b/app/Models/ContainerPackingList.php new file mode 100644 index 00000000..e305f3f8 --- /dev/null +++ b/app/Models/ContainerPackingList.php @@ -0,0 +1,17 @@ +hasMany(PackingList::class, 'packing_list_id', 'id'); + } +} diff --git a/app/Models/Package.php b/app/Models/Package.php new file mode 100644 index 00000000..06094305 --- /dev/null +++ b/app/Models/Package.php @@ -0,0 +1,24 @@ +BelongsTo(Order::class, 'order_id', 'id'); + } + + public function owner(): morphTo + { + return $this->morphTo(); + } + +} diff --git a/app/Models/PackageItem.php b/app/Models/PackageItem.php new file mode 100644 index 00000000..d1c44670 --- /dev/null +++ b/app/Models/PackageItem.php @@ -0,0 +1,18 @@ +BelongsTo(Package::class, 'package_id', 'id'); + } +} diff --git a/app/Models/PackingList.php b/app/Models/PackingList.php new file mode 100644 index 00000000..d1be3ed3 --- /dev/null +++ b/app/Models/PackingList.php @@ -0,0 +1,12 @@ +BelongsTo(Package::class, 'package_id', 'id'); + } + + public function packageList(): BelongsTo + { + return $this->BelongsTo(PackageList::class, 'package_list_id', 'id'); + } +} diff --git a/app/Models/Remark.php b/app/Models/Remark.php new file mode 100644 index 00000000..863c3001 --- /dev/null +++ b/app/Models/Remark.php @@ -0,0 +1,18 @@ +morphTo(); + } +} diff --git a/app/Models/Schedule.php b/app/Models/Schedule.php new file mode 100644 index 00000000..a2746382 --- /dev/null +++ b/app/Models/Schedule.php @@ -0,0 +1,18 @@ +morphTo(); + } +} diff --git a/app/Models/TransportArrangement.php b/app/Models/TransportArrangement.php new file mode 100644 index 00000000..cdf92994 --- /dev/null +++ b/app/Models/TransportArrangement.php @@ -0,0 +1,11 @@ +id(); + $table->morphs('owner'); + $table->foreignId('country_id')->unsigned(); + $table->string('bank_name',45); + $table->string('bank_branch',45)->nullable(); + $table->string('account_name',45); + $table->string('account_number',45); + $table->integer('type')->default(BankAccountType::EXTERNAL); + $table->integer('default')->default(false); + $table->integer('status')->default(ApprovalStatus::APPROVED); + + $table->softDeletes(); + $table->timestamps(); + + $table->foreign('country_id')->references('id')->on('countries'); + }); + + Schema::table('bank_accounts', function (Blueprint $table) { + $table->string('owner_type', 191)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('banks'); + } +} diff --git a/database/migrations/2021_07_21_110051_create_packages_table.php b/database/migrations/2021_07_21_110051_create_packages_table.php new file mode 100644 index 00000000..b23fb84d --- /dev/null +++ b/database/migrations/2021_07_21_110051_create_packages_table.php @@ -0,0 +1,48 @@ +id(); + $table->bigInteger('order_id')->unsigned()->index(); + $table->bigInteger('claimant_id')->unsigned()->index(); + $table->integer('type')->default(0); + + $table->string('description',45); + + $table->decimal('width', 8, 2); + $table->decimal('height', 8, 2); + $table->decimal('length', 8, 2); + $table->decimal('weight', 8, 2); + $table->integer('quantity')->default(0); + + $table->integer('status')->default(0); + $table->softDeletes(); + $table->timestamps(); + + $table->foreign('order_id')->references('id')->on('orders'); + $table->foreign('claimant_id')->references('id')->on('company_modules'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('packages'); + } +} diff --git a/database/migrations/2021_07_21_110058_create_package_items_table.php b/database/migrations/2021_07_21_110058_create_package_items_table.php new file mode 100644 index 00000000..599b691e --- /dev/null +++ b/database/migrations/2021_07_21_110058_create_package_items_table.php @@ -0,0 +1,43 @@ +id(); + $table->bigInteger('package_id')->unsigned()->index(); + $table->string('name',45); + $table->string('reference',45); + $table->string('description',45); + $table->decimal('quantity', 8, 2); + $table->string('uom',45); + $table->decimal('price', 8, 2); + $table->decimal('total', 8, 2); + $table->integer('status')->default(0); + $table->softDeletes(); + $table->timestamps(); + + $table->foreign('package_id')->references('id')->on('packages'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('package_items'); + } +} diff --git a/database/migrations/2021_07_21_110059_create_packing_lists_table.php b/database/migrations/2021_07_21_110059_create_packing_lists_table.php new file mode 100644 index 00000000..460dd35f --- /dev/null +++ b/database/migrations/2021_07_21_110059_create_packing_lists_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('reference',200); + $table->integer('status')->default(0); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('packing_lists'); + } +} diff --git a/database/migrations/2021_07_21_110208_create_packing_list_packages_table.php b/database/migrations/2021_07_21_110208_create_packing_list_packages_table.php new file mode 100644 index 00000000..4c3b2bb3 --- /dev/null +++ b/database/migrations/2021_07_21_110208_create_packing_list_packages_table.php @@ -0,0 +1,37 @@ +id(); + $table->bigInteger('packing_list_id')->unsigned()->index(); + $table->bigInteger('package_id')->unsigned()->index(); + $table->softDeletes(); + $table->timestamps(); + + $table->foreign('packing_list_id')->references('id')->on('packing_lists'); + $table->foreign('package_id')->references('id')->on('packages'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('packing_list_packages'); + } +} diff --git a/database/migrations/2021_07_21_110240_create_container_packing_lists_table.php b/database/migrations/2021_07_21_110240_create_container_packing_lists_table.php new file mode 100644 index 00000000..830e8eb1 --- /dev/null +++ b/database/migrations/2021_07_21_110240_create_container_packing_lists_table.php @@ -0,0 +1,37 @@ +id(); + $table->bigInteger('packing_list_id')->unsigned()->index(); + $table->string('container_reference',45); + $table->integer('container_type'); + $table->softDeletes(); + $table->timestamps(); + + $table->foreign('packing_list_id')->references('id')->on('packing_lists'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('container_packing_lists'); + } +} diff --git a/database/migrations/2021_07_21_110310_create_remarks_table.php b/database/migrations/2021_07_21_110310_create_remarks_table.php new file mode 100644 index 00000000..e02b0f44 --- /dev/null +++ b/database/migrations/2021_07_21_110310_create_remarks_table.php @@ -0,0 +1,39 @@ +id(); + $table->morphs('owner'); + $table->bigInteger('commenter_id')->unsigned()->index(); + $table->string('content',200); + $table->softDeletes(); + $table->timestamps(); + }); + + Schema::table('remarks', function (Blueprint $table) { + $table->string('owner_type', 191)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('remarks'); + } +} diff --git a/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php b/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php new file mode 100644 index 00000000..cc642694 --- /dev/null +++ b/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php @@ -0,0 +1,46 @@ +id(); + $table->morphs('owner'); + $table->integer('type')->default(0); + + $table->string('courier',45); + $table->string('tracking_number',45); + + $table->timestamp('dispacth_date')->nullable(); + $table->timestamp('drop_date')->nullable(); + + $table->integer('status')->default(0); + $table->softDeletes(); + $table->timestamps(); + }); + + Schema::table('transport_arrangements', function (Blueprint $table) { + $table->string('owner_type', 191)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('transport_arrangements'); + } +} diff --git a/database/migrations/2021_07_21_110522_create_schedules_table.php b/database/migrations/2021_07_21_110522_create_schedules_table.php new file mode 100644 index 00000000..0e2e8800 --- /dev/null +++ b/database/migrations/2021_07_21_110522_create_schedules_table.php @@ -0,0 +1,42 @@ +id(); + $table->morphs('owner'); + + $table->timestamp('etd')->nullable(); + $table->timestamp('eta')->nullable(); + + $table->integer('status')->default(0); + $table->softDeletes(); + $table->timestamps(); + }); + + Schema::table('schedules', function (Blueprint $table) { + $table->string('owner_type', 191)->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('schedules'); + } +} diff --git a/routes/bank.php b/routes/bank.php new file mode 100644 index 00000000..a17ceb63 --- /dev/null +++ b/routes/bank.php @@ -0,0 +1,11 @@ + 'bank', 'as' => 'bank.', 'namespace' => 'Banks'], function () { + Route::get('/list', 'ListBanksController@list')->name('list'); + Route::post('/create', 'CreateBankController@create')->name('create'); + Route::put('/update/{id}', 'UpdateBankController@update')->name('update'); + Route::put('/{id}/default', 'SetBankToDefaultController@update')->name('default'); + Route::delete('/delete/{id}', 'DeleteBankController@delete')->name('delete'); +}); \ No newline at end of file diff --git a/routes/remark.php b/routes/remark.php new file mode 100644 index 00000000..33756eee --- /dev/null +++ b/routes/remark.php @@ -0,0 +1,11 @@ + 'Remarks', 'as' => 'remark.', 'prefix' => 'remark'], function () { + Route::get('/{id}/show', 'FetchRemarkController@fetch')->name('show'); + Route::get('/list', 'ListRemarksController@list')->name('list'); + Route::post('/create', 'CreateRemarkController@create')->name('create'); + Route::put('/update/{id}', 'UpdateRemarkController@update')->name('update'); + Route::delete('/delete/{id}', 'DeleteRemarkController@delete')->name('delete'); +}); diff --git a/routes/schedule.php b/routes/schedule.php new file mode 100644 index 00000000..5e0dc86f --- /dev/null +++ b/routes/schedule.php @@ -0,0 +1,11 @@ + 'Schedules', 'as' => 'schedule.', 'prefix' => 'schedule'], function () { + Route::get('/{id}/show', 'FetchScheduleController@fetch')->name('show'); + Route::get('/list', 'ListScheduleController@list')->name('list'); + Route::post('/create', 'CreateScheduleController@create')->name('create'); + Route::put('/update/{id}', 'UpdateScheduleController@update')->name('update'); + Route::delete('/delete/{id}', 'DeleteScheduleController@delete')->name('delete'); +}); diff --git a/routes/transport.php b/routes/transport.php new file mode 100644 index 00000000..412005ee --- /dev/null +++ b/routes/transport.php @@ -0,0 +1,11 @@ + 'Transports', 'as' => 'transport.', 'prefix' => 'transport'], function () { + Route::get('/{id}/show', 'FetchTransportController@fetch')->name('show'); + Route::get('/list', 'ListTransportController@list')->name('list'); + Route::post('/create', 'CreateTransportController@create')->name('create'); + Route::put('/update/{id}', 'UpdateTransportController@update')->name('update'); + Route::delete('/delete/{id}', 'DeleteTransportController@delete')->name('delete'); +});