diff --git a/.gitignore b/.gitignore index de84bee2..ac0eb695 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,8 @@ public/.DS_Store public/images/.DS_Store gox.iml rebuild_docker.sh +r.sh docker/* db/* docker-compose.yml -package-lock.json \ No newline at end of file +package-lock.json 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/Companies/ControllersLogic/CreateCompanyLogic.php b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php index c0b60806..55c7f574 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyLogic.php @@ -2,7 +2,6 @@ namespace App\Classes\Modules\Companies\ControllersLogic; - use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor; use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor; @@ -15,15 +14,17 @@ use Illuminate\Http\Request; class CreateCompanyLogic extends AbstractControllerLogic { + /** * CreateCompanyLogic constructor. * @param CreateCompanyProcessor $createCompanyProcessor * @param CreateCompanyModuleProcessor $createCompanyModuleProcessor */ - public function __construct(CreateCompanyProcessor $createCompanyProcessor ,CreateCompanyModuleProcessor $createCompanyModuleProcessor) + public function __construct(CreateCompanyProcessor $createCompanyProcessor ,CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateEntityProcessor $createUnityEntityProcessor) { $this->createCompanyProcessor = $createCompanyProcessor; $this->createCompanyModuleProcessor = $createCompanyModuleProcessor; + $this->createUnityEntityProcessor = $createUnityEntityProcessor; } /** @@ -56,4 +57,4 @@ class CreateCompanyLogic extends AbstractControllerLogic return $this->resourceResponse(new CompanyResource($company)); } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/DataTransferObjects/CompanyModuleObject.php b/app/Classes/Modules/Companies/DataTransferObjects/CompanyModuleObject.php index 10e2a7ae..8dc949fd 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/CompanyModuleObject.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/CompanyModuleObject.php @@ -15,17 +15,21 @@ class CompanyModuleObject implements DataTransferObject /** @var int|null */ private $status; + /** @var string */ + private $unity_hash_id; + /** * CompanyObject constructor. * @param int $companyId * @param int|null $type * @param int|null $status */ - public function __construct(int $companyId, int $type, int $status) + public function __construct(int $companyId, int $type, int $status, ?string $unity_hash_id) { $this->companyId = $companyId; $this->type = $type; $this->status = $status; + $this->unity_hash_id = $unity_hash_id; } /** @@ -51,4 +55,12 @@ class CompanyModuleObject implements DataTransferObject { return $this->status; } + + /** + * @return string + */ + public function getUnityHashId(): string + { + return $this->unity_hash_id; + } } diff --git a/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php b/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php index 3bd52d5c..94818a7a 100644 --- a/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php +++ b/app/Classes/Modules/Companies/DataTransferObjects/CompanyObject.php @@ -20,6 +20,9 @@ class CompanyObject implements DataTransferObject /** @var int|null */ private $status; + /** @var string */ + private $unity_hash_id; + /** * CompanyObject constructor. * @param string $name @@ -71,7 +74,4 @@ class CompanyObject implements DataTransferObject return $this->status; } - - - -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php index 2d117fc1..8569db18 100644 --- a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php +++ b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php @@ -2,13 +2,12 @@ namespace App\Classes\Modules\Companies\Processors; +use App\Classes\Modules\Unity\Processors\CreateEntityProcessor; use App\Classes\Modules\Companies\DataTransferObjects\CompanyModuleObject; use App\Classes\Modules\Companies\Services\CreatesCompanyModule; - +use App\Classes\Modules\Companies\Standards\Rules\CanCreateCompanyModule; use App\Classes\ValueObjects\Constants\BusinessType; - use Illuminate\Database\Eloquent\Model; - use App\Models\Company; class CreateCompanyModuleProcessor @@ -17,13 +16,19 @@ class CreateCompanyModuleProcessor /** @var CreatesCompanyModule */ private $createsCompanyModule; + private $createUnityEntityProcessor; + + private $canCreateCompanyModule; + /** * CreateCompanyModuleProcessor constructor. * @param CreatesCompanyModule $createsCompanyModule */ - public function __construct(CreatesCompanyModule $createsCompanyModule) + public function __construct(CanCreateCompanyModule $canCreateCompanyModule, CreatesCompanyModule $createsCompanyModule, CreateEntityProcessor $createUnityEntityProcessor) { $this->createsCompanyModule = $createsCompanyModule; + $this->createUnityEntityProcessor = $createUnityEntityProcessor; + $this->canCreateCompanyModule = $canCreateCompanyModule; } /** @@ -32,12 +37,17 @@ class CreateCompanyModuleProcessor */ public function execute(Company $company , ?int $businessType): Model { + $unityEntity = $this->createUnityEntityProcessor->execute($company->name); + $company_module_object = new CompanyModuleObject( $company->id, $businessType??BusinessType::IMPORTER, $company->status, + $unityEntity->hash_id ); + $this->canCreateCompanyModule->passes($company_module_object); + return $this->createsCompanyModule->execute($company_module_object); } } diff --git a/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php b/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php index 95ef5eb9..09516c9d 100644 --- a/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php +++ b/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php @@ -50,8 +50,8 @@ class CreateCompanyProcessor $companyName, mt_rand(1000, 9999).(new GeneratesInitials())->name($companyName)->length(3)->generate(), $companyType, - $status); - + $status + ); $this->canCreateCompany->passes($company_object); @@ -59,4 +59,4 @@ class CreateCompanyProcessor } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Companies/Services/CreatesCompanyModule.php b/app/Classes/Modules/Companies/Services/CreatesCompanyModule.php index ae6b2b78..ba974838 100644 --- a/app/Classes/Modules/Companies/Services/CreatesCompanyModule.php +++ b/app/Classes/Modules/Companies/Services/CreatesCompanyModule.php @@ -20,6 +20,7 @@ class CreatesCompanyModule extends AbstractUpdateRecord $model->company_id = $object->getCompanyId(); $model->type = $object->getType(); $model->status = $object->getStatus(); + $model->unity_hash_id = $object->getUnityHashId(); return $this->handler($model); } diff --git a/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php b/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php new file mode 100644 index 00000000..e017c7f1 --- /dev/null +++ b/app/Classes/Modules/Companies/Standards/Rules/CanCreateCompanyModule.php @@ -0,0 +1,51 @@ +companyModuleValidation = $companyModuleValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param CompanyObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->companyModuleValidation->validate($object); + } + + /** + * @param CompanyObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } +} diff --git a/app/Classes/Modules/Companies/Standards/Validators/CompanyModuleValidation.php b/app/Classes/Modules/Companies/Standards/Validators/CompanyModuleValidation.php new file mode 100644 index 00000000..f12dc234 --- /dev/null +++ b/app/Classes/Modules/Companies/Standards/Validators/CompanyModuleValidation.php @@ -0,0 +1,39 @@ + $object->getUnityHashId() + ]; + } + + /** + * @param string $type + * @return array + */ + protected function rules(): array + { + return [ + 'unity_hash_id' => 'required' + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} diff --git a/app/Classes/Modules/Companies/Standards/Validators/CompanyValidation.php b/app/Classes/Modules/Companies/Standards/Validators/CompanyValidation.php index 5ea263ac..e9809fff 100644 --- a/app/Classes/Modules/Companies/Standards/Validators/CompanyValidation.php +++ b/app/Classes/Modules/Companies/Standards/Validators/CompanyValidation.php @@ -15,7 +15,7 @@ class CompanyValidation extends AbstractValidation { return [ 'company_name' => $object->getName(), - 'company_reference' => $object->getReference(), + 'company_reference' => $object->getReference() ]; } diff --git a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/CreateContainerPackingListLogic.php b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/CreateContainerPackingListLogic.php new file mode 100644 index 00000000..383b5f6f --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/CreateContainerPackingListLogic.php @@ -0,0 +1,67 @@ + 'Created PackingList', + 'message' => 'You have successfully created a new PackingList' + ]; + } + + /** @var CanCreateContainerPackingList */ + private $canCreateContainerPackingList; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var CreatesPackingList */ + private $createsContainerPackingList; + + public function __construct(CanCreateContainerPackingList $canCreateContainerPackingList, FetchesPackingList $fetchesPackingList, CreatesContainerPackingList $createsContainerPackingList) + { + $this->canCreateContainerPackingList = $canCreateContainerPackingList; + $this->fetchesPackingList = $fetchesPackingList; + $this->createsContainerPackingList = $createsContainerPackingList; + } + + /** + * @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 + { + + $packingList = $this->fetchesPackingList->execute(['id' => $request->input('packing_list_id')]); + + $object = new ContainerPackingListObject( $packingList->id , $request->input('container_reference'), $request->input('container_type'), $request->input('seal_reference')); + + $this->canCreateContainerPackingList->passes($object); + + $query = $this->createsContainerPackingList->execute($object); + + return $this->resourceResponse(new ContainerPackingListResource($query)); + + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/DeleteContainerPackingListLogic.php b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/DeleteContainerPackingListLogic.php new file mode 100644 index 00000000..dfd94848 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/DeleteContainerPackingListLogic.php @@ -0,0 +1,73 @@ + 'Deleted ContainerPackingList', + 'message' => 'You have successfully deleted a ContainerPackingList' + ]; + } + + + /** @var CanDeleteContainerPackingList */ + private $canDeleteContainerPackingList; + + /** @var DeletesContainerPackingList */ + private $deletesContainerPackingList; + + /** @var FetchesContainerPackingList */ + private $fetchesContainerPackingList; + + /** + * DeleteContainerPackingListControllersLogic constructor. + * @param CanDeleteContainerPackingList $canDeleteContainerPackingList + * @param DeletesContainerPackingList $deletesContainerPackingList + * @param FetchesContainerPackingList $fetchesContainerPackingList + */ + public function __construct(CanDeleteContainerPackingList $canDeleteContainerPackingList, DeletesContainerPackingList $deletesContainerPackingList, FetchesContainerPackingList $fetchesContainerPackingList) + { + $this->canDeleteContainerPackingList = $canDeleteContainerPackingList; + $this->deletesContainerPackingList = $deletesContainerPackingList; + $this->fetchesContainerPackingList = $fetchesContainerPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canDeleteContainerPackingList->passes(); + + $query = $this->fetchesContainerPackingList->execute(['id' => $request->route('id')]); + + $this->deletesContainerPackingList->execute($query); + + return $this->response([]); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/FetchContainerPackingListLogic.php b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/FetchContainerPackingListLogic.php new file mode 100644 index 00000000..21e4e1c9 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/FetchContainerPackingListLogic.php @@ -0,0 +1,66 @@ + 'Retrieved ContainerPackingList', + 'message' => 'You have successfully retrieved a ContainerPackingList' + ]; + } + + /** @var CanFetchContainerPackingList */ + private $canFetchContainerPackingList; + + /** @var FetchesContainerPackingList */ + private $fetchesContainerPackingList; + + /** + * FetchContainerPackingListControllersLogic constructor. + * @param CanFetchContainerPackingList $canFetchContainerPackingList + * @param FetchesContainerPackingList $fetchesContainerPackingList + */ + public function __construct(CanFetchContainerPackingList $canFetchContainerPackingList, FetchesContainerPackingList $fetchesContainerPackingList) + { + $this->canFetchContainerPackingList = $canFetchContainerPackingList; + $this->fetchesContainerPackingList = $fetchesContainerPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canFetchContainerPackingList->passes(); + + $query = $this->fetchesContainerPackingList->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new ContainerPackingListResource($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/ListContainerPackingListsLogic.php b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/ListContainerPackingListsLogic.php new file mode 100644 index 00000000..50e34101 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/ListContainerPackingListsLogic.php @@ -0,0 +1,66 @@ + 'Retrieved ContainerPackingLists', + 'message' => 'You have successfully retrieved a list of ContainerPackingLists' + ]; + } + + /** @var CanListContainerPackingLists */ + private $canListContainerPackingLists; + + /** @var ListsContainerPackingLists */ + private $listsContainerPackingLists; + + /** + * ListContainerPackingListsLogic constructor. + * @param CanListContainerPackingLists $canListContainerPackingLists + * @param ListsContainerPackingLists $listsContainerPackingLists + */ + public function __construct(CanListContainerPackingLists $canListContainerPackingLists, ListsContainerPackingLists $listsContainerPackingLists) + { + $this->canListContainerPackingLists = $canListContainerPackingLists; + $this->listsContainerPackingLists = $listsContainerPackingLists; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canListContainerPackingLists->passes(); + + $query = $this->listsContainerPackingLists->execute($this->listsContainerPackingLists->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(ContainerPackingListResource::collection($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/UpdateContainerPackingListLogic.php b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/UpdateContainerPackingListLogic.php new file mode 100644 index 00000000..8ae97336 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/ControllersLogic/UpdateContainerPackingListLogic.php @@ -0,0 +1,72 @@ + 'Updated ContainerPackingList', + 'message' => 'You have successfully updated the ContainerPackingList' + ]; + } + + /** @var CanUpdateContainerPackingList */ + private $canUpdateContainerPackingList; + + /** @var UpdatesContainerPackingList */ + private $updatesContainerPackingList; + + /** @var FetchesContainerPackingList */ + private $fetchesContainerPackingList; + + /** + * UpdateContainerPackingListLogic constructor. + * @param CanUpdateContainerPackingList $canUpdateContainerPackingList + * @param UpdatesContainerPackingList $updatesContainerPackingList + * @param FetchesContainerPackingList $fetchesContainerPackingList + */ + public function __construct(CanUpdateContainerPackingList $canUpdateContainerPackingList, UpdatesContainerPackingList $updatesContainerPackingList, FetchesContainerPackingList $fetchesContainerPackingList) + { + $this->canUpdateContainerPackingList = $canUpdateContainerPackingList; + $this->updatesContainerPackingList = $updatesContainerPackingList; + $this->fetchesContainerPackingList = $fetchesContainerPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + + $container = $this->fetchesContainerPackingList->execute(['id' => $request->route('id')]); + + $object = new ContainerPackingListObject( $container->packing_list_id , $request->input('container_reference'), $request->input('container_type'), $request->input('seal_reference')); + + $this->canUpdateContainerPackingList->passes($object); + + $query = $this->updatesContainerPackingList->execute($container, $object); + + return $this->resourceResponse(new ContainerPackingListResource($query)); + + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/DataTransferObjects/ContainerPackingListObject.php b/app/Classes/Modules/ContainerPackingLists/DataTransferObjects/ContainerPackingListObject.php new file mode 100644 index 00000000..067033ff --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/DataTransferObjects/ContainerPackingListObject.php @@ -0,0 +1,45 @@ +packingListId = $packingListId; + $this->containerReference = $containerReference; + $this->containerType = $containerType; + $this->sealReference = $sealReference; + } + + public function getPackingListId(): int + { + return $this->packingListId; + } + + public function getContainerReference(): ?string + { + return $this->containerReference; + } + + public function getContainerType(): int + { + return $this->containerType; + } + + public function getSealReference(): ?string + { + return $this->sealReference; + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/CreatesContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Services/CreatesContainerPackingList.php new file mode 100644 index 00000000..07c3e135 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Services/CreatesContainerPackingList.php @@ -0,0 +1,27 @@ +packing_list_id = $object->getPackingListId(); + $model->container_reference = $object->getContainerReference(); + $model->container_type = $object->getContainerType(); + $model->seal_reference = $object->getSealReference(); + + return $this->handler($model); + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/DeletesContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Services/DeletesContainerPackingList.php new file mode 100644 index 00000000..abd524eb --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Services/DeletesContainerPackingList.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/FetchesContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Services/FetchesContainerPackingList.php new file mode 100644 index 00000000..a10e13de --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Services/FetchesContainerPackingList.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/ListsContainerPackingLists.php b/app/Classes/Modules/ContainerPackingLists/Services/ListsContainerPackingLists.php new file mode 100644 index 00000000..e3991a3f --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Services/ListsContainerPackingLists.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/UpdatesContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Services/UpdatesContainerPackingList.php new file mode 100644 index 00000000..649e3077 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Services/UpdatesContainerPackingList.php @@ -0,0 +1,27 @@ +container_reference = $object->getContainerReference(); + $model->container_type = $object->getContainerType(); + $model->seal_reference = $object->getSealReference(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanCreateContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanCreateContainerPackingList.php new file mode 100644 index 00000000..d12e0aa3 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanCreateContainerPackingList.php @@ -0,0 +1,57 @@ +containerPackingListValidation = $containerPackingListValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackingListObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->containerPackingListValidation->validate($object); + + } + + + /** + * @param PackingListObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanDeleteContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanDeleteContainerPackingList.php new file mode 100644 index 00000000..7056d7a4 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanDeleteContainerPackingList.php @@ -0,0 +1,43 @@ +ContainerPackingListValidation = $ContainerPackingListValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param ContainerPackingListObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->ContainerPackingListValidation->validate($object); + + } + + + /** + * @param ContainerPackingListObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Validators/ContainerPackingListValidation.php b/app/Classes/Modules/ContainerPackingLists/Standards/Validators/ContainerPackingListValidation.php new file mode 100644 index 00000000..d8ed3fa9 --- /dev/null +++ b/app/Classes/Modules/ContainerPackingLists/Standards/Validators/ContainerPackingListValidation.php @@ -0,0 +1,42 @@ + $object->getPackingListId(), + 'container_reference' => $object->getContainerReference(), + 'container_type' => $object->getContainerType(), + 'seal_reference' => $object->getSealReference(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'packing_list_id' => 'required', + 'container_reference' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php index 2f39e830..9f781c9a 100644 --- a/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php @@ -35,9 +35,9 @@ class CreateOrderStepsProcessor $this->fetchesOrderSteps = $fetchesOrderSteps; } - public function execute(Model $order, string $currentStep){ + public function execute(Model $order, string $currentStep, $appointee_id){ - $order_steps_object = new OrderStepsObject($order->id, $order->company_module_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null); + $order_steps_object = new OrderStepsObject($order->id, $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null); $this->canCreateOrderStep->passes($order_steps_object); diff --git a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php index 97789148..343c0ad0 100644 --- a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php +++ b/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php @@ -27,24 +27,23 @@ class GenerateOrderStepsProcessor private $createsManyOrderStep; - private $unityConfig; - private $updateOrderStepProcessors; - private $getContractObligationsProcessor; + private $getUnityContractObligationsProcessor; - public function __construct(UpdatesOrderCurrentStepProcessor $updatesOrderCurrentStep, CreatesManyOrderSteps $createsManyOrderStep, UpdateOrderStepsProcessor $updateOrderStepProcessors, GetContractObligationsProcessor $getContractObligationsProcessor) + public function __construct(UpdatesOrderCurrentStepProcessor $updatesOrderCurrentStep, CreatesManyOrderSteps $createsManyOrderStep, UpdateOrderStepsProcessor $updateOrderStepProcessors, GetContractObligationsProcessor $getUnityContractObligationsProcessor) { $this->updatesOrderCurrentStep = $updatesOrderCurrentStep; - $this->unityConfig = Config::get('unity'); $this->createsManyOrderStep = $createsManyOrderStep; $this->updateOrderStepProcessors = $updateOrderStepProcessors; - $this->getContractObligationsProcessor = $getContractObligationsProcessor; + $this->getUnityContractObligationsProcessor = $getUnityContractObligationsProcessor; } public function execute(Order $order){ - $obligations = $this->getContractObligationsProcessor->execute(); + $obligations = $this->getUnityContractObligationsProcessor->execute(); + + //TODO: Update Appointee ID to Entity User base on hash key foreach($obligations as $step){ $orderSteps[] = new OrderStepsObject( diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php index cd8d43c9..42e625c2 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php @@ -35,12 +35,6 @@ class CreateOrderLogic extends AbstractControllerLogic $order = $this->createOrderProcessor->execute($request); - //$order_object = new OrderObject($request->get('company_module_id'), '', '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING); - - //$this->canCreateOrder->passes($order_object); - - //$order = $this->createsOrder->execute($order_object); - return $this->resourceResponse(new OrderResource($order)); } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php index 74b50ed9..2bf0ea54 100644 --- a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php @@ -1,53 +1,40 @@ canUpdateCurrentStep = $canUpdateCurrentStep; - $this->updatesCurrentStep = $updatesCurrentStep; + $this->canConfirmOrder = $canConfirmOrder; + $this->generateOrderStepsProcessor = $generateOrderStepsProcessor; $this->fetchesOrder = $fetchesOrder; - $this->fetchesOrderSteps = $fetchesOrderSteps; - $this->updateOrderStepProcessors = $updateOrderStepProcessors; } - public function execute(int $orderId, string $currentStep){ + public function execute(int $orderId){ - $order_object = new OrderObject(0, '', '', 0, 0, $currentStep, $orderId); + $order_object = new OrderObject(0,'','',0,0, '',$orderId); - $this->canUpdateCurrentStep->passes($order_object); + $this->canConfirmOrder->passes($order_object); $order = $this->fetchesOrder->execute(['id'=>$order_object->getId()]); - $order_steps = $this->fetchesOrderSteps->execute(['order_id'=>$order_object->getId(), 'status'=> OrderStatus::PROCESSING, 'order_by' => 'sequence', 'per_page' => 1]); - - $order_object->setCurrentStep($currentStep); - - $order = $this->updatesCurrentStep->execute($order, $order_object); - - $this->updateOrderStepProcessors->execute($currentStep); + $this->generateOrderStepsProcessor->execute($order); } } diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php index 4b2708da..884eda4d 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\Orders\Processors; use App\Classes\Modules\Orders\DataTransferObjects\OrderObject; use App\Classes\Modules\Orders\Services\CreatesOrder; use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrder; +use App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor; use App\Classes\Modules\OrderSteps\Processors\CreateOrderStepsProcessor; use App\Classes\ValueObjects\Constants\OrderStatus; use App\Classes\ValueObjects\Constants\OrderSteps; @@ -17,26 +18,40 @@ class CreateOrderProcessor private $createsOrder; + private $confirmOrderProcessor; + private $createOrderStepsProcessor; - public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor) + public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreateOrderStepsProcessor $createOrderStepsProcessor, ConfirmOrderProcessor $confirmOrderProcessor) { $this->canCreateOrder = $canCreateOrder; $this->createsOrder = $createsOrder; + $this->confirmOrderProcessor = $confirmOrderProcessor; $this->createOrderStepsProcessor = $createOrderStepsProcessor; } public function execute(Request $request){ - $order_object = new OrderObject($request->get('company_module_id'), $request->get('reference'), '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING); + $reference_no = rand(1000000, 9999999); + + //TODO: Call Unity to create contract and get contract reference no (and all the obligations) + //$contract_reference_no = 99; + + $order_object = new OrderObject($request->get('company_module_id'), $reference_no, '', OrderType::SHARED_CONTAINER, OrderStatus::PROCESSING, OrderSteps::PROCESSING); $this->canCreateOrder->passes($order_object); $order = $this->createsOrder->execute($order_object); //Add processing to order step - $this->createOrderStepsProcessor->execute($order, OrderSteps::PROCESSING); + //Note: For processing apointee_id is CIEF Freight Forward , id is 1, reserved in company table + $this->createOrderStepsProcessor->execute($order, OrderSteps::PROCESSING, 1); + + //Pre-approved order, no need Admin to process it + $this->confirmOrderProcessor->execute($order->id); + + //TODO: Add order roles - Allow multiple entity to process this order return $order; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/CreatePackageItemLogic.php b/app/Classes/Modules/PackageItems/ControllersLogic/CreatePackageItemLogic.php new file mode 100644 index 00000000..9c3ba7b5 --- /dev/null +++ b/app/Classes/Modules/PackageItems/ControllersLogic/CreatePackageItemLogic.php @@ -0,0 +1,86 @@ + 'Created PackageItem', + 'message' => 'You have successfully created a new PackageItem' + ]; + } + + /** @var CanCreatePackageItem */ + private $canCreatePackageItem; + + /** @var FetchesPackage */ + private $fetchesPackage; + + /** @var CreatesPackageItem */ + private $createsPackageItem; + + /** + * CreatePackageItemLogic constructor. + * @param CanCreatePackageItem $canCreatePackageItem + * @param FetchesPackage $fetchesPackage + * @param CreatesPackageItem $createsPackageItem + */ + public function __construct(CanCreatePackageItem $canCreatePackageItem, FetchesPackage $fetchesPackage, CreatesPackageItem $createsPackageItem) + { + $this->canCreatePackageItem = $canCreatePackageItem; + $this->fetchesPackage = $fetchesPackage; + $this->createsPackageItem = $createsPackageItem; + } + + /** + * @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 + { + + $package = $this->fetchesPackage->execute(['id' => $request->input('package_id')]); + + $reference_no = rand(1000000, 9999999); + + $object = new PackageItemObject( + $package->id, + $request->input('name'), + $reference_no, + $request->input('description'), + $request->input('quantity'), + $request->input('uom'), + $request->input('price'), + $request->input('total'), + ApprovalStatus::PENDING_SUBMISSION); + + $this->canCreatePackageItem->passes($object); + + $query = $this->createsPackageItem->execute($object); + + return $this->resourceResponse(new PackageItemResource($query)); + + } + +} diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/DeletePackageItemLogic.php b/app/Classes/Modules/PackageItems/ControllersLogic/DeletePackageItemLogic.php new file mode 100644 index 00000000..0e9ea84b --- /dev/null +++ b/app/Classes/Modules/PackageItems/ControllersLogic/DeletePackageItemLogic.php @@ -0,0 +1,73 @@ + 'Deleted PackageItem', + 'message' => 'You have successfully deleted a PackageItem' + ]; + } + + + /** @var CanDeletePackageItem */ + private $canDeletePackageItem; + + /** @var DeletesPackageItem */ + private $deletesPackageItem; + + /** @var FetchesPackageItem */ + private $fetchesPackageItem; + + /** + * DeletePackageItemControllersLogic constructor. + * @param CanDeletePackageItem $canDeletePackageItem + * @param DeletesPackageItem $deletesPackageItem + * @param FetchesPackageItem $fetchesPackageItem + */ + public function __construct(CanDeletePackageItem $canDeletePackageItem, DeletesPackageItem $deletesPackageItem, FetchesPackageItem $fetchesPackageItem) + { + $this->canDeletePackageItem = $canDeletePackageItem; + $this->deletesPackageItem = $deletesPackageItem; + $this->fetchesPackageItem = $fetchesPackageItem; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canDeletePackageItem->passes(); + + $query = $this->fetchesPackageItem->execute(['id' => $request->route('id')]); + + $this->deletesPackageItem->execute($query); + + return $this->response([]); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/FetchPackageItemLogic.php b/app/Classes/Modules/PackageItems/ControllersLogic/FetchPackageItemLogic.php new file mode 100644 index 00000000..4013720e --- /dev/null +++ b/app/Classes/Modules/PackageItems/ControllersLogic/FetchPackageItemLogic.php @@ -0,0 +1,66 @@ + 'Retrieved PackageItem', + 'message' => 'You have successfully retrieved a PackageItem' + ]; + } + + /** @var CanFetchPackageItem */ + private $canFetchPackageItem; + + /** @var FetchesPackageItem */ + private $fetchesPackageItem; + + /** + * FetchPackageItemControllersLogic constructor. + * @param CanFetchPackageItem $canFetchPackageItem + * @param FetchesPackageItem $fetchesPackageItem + */ + public function __construct(CanFetchPackageItem $canFetchPackageItem, FetchesPackageItem $fetchesPackageItem) + { + $this->canFetchPackageItem = $canFetchPackageItem; + $this->fetchesPackageItem = $fetchesPackageItem; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canFetchPackageItem->passes(); + + $query = $this->fetchesPackageItem->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new PackageItemResource($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/ListPackageItemsLogic.php b/app/Classes/Modules/PackageItems/ControllersLogic/ListPackageItemsLogic.php new file mode 100644 index 00000000..268a9624 --- /dev/null +++ b/app/Classes/Modules/PackageItems/ControllersLogic/ListPackageItemsLogic.php @@ -0,0 +1,66 @@ + 'Retrieved PackageItems', + 'message' => 'You have successfully retrieved a list of PackageItems' + ]; + } + + /** @var CanListPackageItems */ + private $canListPackageItems; + + /** @var ListsPackageItems */ + private $listsPackageItems; + + /** + * ListPackageItemsLogic constructor. + * @param CanListPackageItems $canListPackageItems + * @param ListsPackageItems $listsPackageItems + */ + public function __construct(CanListPackageItems $canListPackageItems, ListsPackageItems $listsPackageItems) + { + $this->canListPackageItems = $canListPackageItems; + $this->listsPackageItems = $listsPackageItems; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canListPackageItems->passes(); + + $query = $this->listsPackageItems->execute($this->listsPackageItems->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(PackageItemResource::collection($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/UpdatePackageItemLogic.php b/app/Classes/Modules/PackageItems/ControllersLogic/UpdatePackageItemLogic.php new file mode 100644 index 00000000..698a464f --- /dev/null +++ b/app/Classes/Modules/PackageItems/ControllersLogic/UpdatePackageItemLogic.php @@ -0,0 +1,80 @@ + 'Updated PackageItem', + 'message' => 'You have successfully updated the PackageItem' + ]; + } + + /** @var CanUpdatePackageItem */ + private $canUpdatePackageItem; + + /** @var UpdatesPackageItem */ + private $updatesPackageItem; + + /** @var FetchesPackageItem */ + private $fetchesPackageItem; + + /** + * UpdatePackageItemLogic constructor. + * @param CanUpdatePackageItem $canUpdatePackageItem + * @param UpdatesPackageItem $updatesPackageItem + * @param FetchesPackageItem $fetchesPackageItem + */ + public function __construct(CanUpdatePackageItem $canUpdatePackageItem, UpdatesPackageItem $updatesPackageItem, FetchesPackageItem $fetchesPackageItem) + { + $this->canUpdatePackageItem = $canUpdatePackageItem; + $this->updatesPackageItem = $updatesPackageItem; + $this->fetchesPackageItem = $fetchesPackageItem; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $packageItem = $this->fetchesPackageItem->execute(['id' => $request->route('id')]); + + $object = new PackageItemObject( + $packageItem->package_id, + $request->input('name'), + $packageItem->reference, + $request->input('description'), + $request->input('quantity'), + $request->input('uom'), + $request->input('price'), + $request->input('total'), + $request->input('status')); + + $this->canUpdatePackageItem->passes($object); + + $query = $this->updatesPackageItem->execute($packageItem, $object); + + return $this->resourceResponse(new PackageItemResource($query)); + + } + +} diff --git a/app/Classes/Modules/PackageItems/DataTransferObjects/PackageItemObject.php b/app/Classes/Modules/PackageItems/DataTransferObjects/PackageItemObject.php new file mode 100644 index 00000000..ce40104e --- /dev/null +++ b/app/Classes/Modules/PackageItems/DataTransferObjects/PackageItemObject.php @@ -0,0 +1,86 @@ +packageId = $packageId; + $this->name = $name; + $this->reference = $reference; + $this->description = $description; + $this->quantity = $quantity; + $this->uom = $uom; + $this->price = $price; + $this->total = $total; + $this->status = $status; + } + + public function getPackageId(): int + { + return $this->packageId; + } + + public function getName(): ?string + { + return $this->name; + } + + public function getReference(): ?string + { + return $this->reference; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function getQuantity(): int + { + return $this->quantity; + } + + public function getUom(): ?string + { + return $this->uom; + } + + public function getPrice(): float + { + return $this->price; + } + + public function getTotal(): float + { + return $this->total; + } + + public function getStatus(): int + { + return $this->status; + } + +} diff --git a/app/Classes/Modules/PackageItems/Services/CreatesPackageItem.php b/app/Classes/Modules/PackageItems/Services/CreatesPackageItem.php new file mode 100644 index 00000000..6124f720 --- /dev/null +++ b/app/Classes/Modules/PackageItems/Services/CreatesPackageItem.php @@ -0,0 +1,26 @@ +package_id = $object->getPackageId(); + $model->name = $object->getName(); + $model->reference = $object->getReference(); + $model->description = $object->getDescription(); + $model->quantity = $object->getQuantity(); + $model->uom = $object->getUom(); + $model->price = $object->getPrice(); + $model->total = $object->getTotal(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/PackageItems/Services/DeletesPackageItem.php b/app/Classes/Modules/PackageItems/Services/DeletesPackageItem.php new file mode 100644 index 00000000..c5506a1a --- /dev/null +++ b/app/Classes/Modules/PackageItems/Services/DeletesPackageItem.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/PackageItems/Services/FetchesPackageItem.php b/app/Classes/Modules/PackageItems/Services/FetchesPackageItem.php new file mode 100644 index 00000000..a31b95e0 --- /dev/null +++ b/app/Classes/Modules/PackageItems/Services/FetchesPackageItem.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/PackageItems/Services/ListsPackageItems.php b/app/Classes/Modules/PackageItems/Services/ListsPackageItems.php new file mode 100644 index 00000000..5a616642 --- /dev/null +++ b/app/Classes/Modules/PackageItems/Services/ListsPackageItems.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/PackageItems/Services/UpdatesPackageItem.php b/app/Classes/Modules/PackageItems/Services/UpdatesPackageItem.php new file mode 100644 index 00000000..68a15ce2 --- /dev/null +++ b/app/Classes/Modules/PackageItems/Services/UpdatesPackageItem.php @@ -0,0 +1,25 @@ +name = $object->getName(); + $model->reference = $object->getReference(); + $model->description = $object->getDescription(); + $model->quantity = $object->getQuantity(); + $model->uom = $object->getUom(); + $model->price = $object->getPrice(); + $model->total = $object->getTotal(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/PackageItems/Standards/Rules/CanCreatePackageItem.php b/app/Classes/Modules/PackageItems/Standards/Rules/CanCreatePackageItem.php new file mode 100644 index 00000000..80faf565 --- /dev/null +++ b/app/Classes/Modules/PackageItems/Standards/Rules/CanCreatePackageItem.php @@ -0,0 +1,57 @@ +packageItemValidation = $packageItemValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackageItemObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->packageItemValidation->validate($object); + + } + + + /** + * @param PackageItemObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/PackageItems/Standards/Rules/CanDeletePackageItem.php b/app/Classes/Modules/PackageItems/Standards/Rules/CanDeletePackageItem.php new file mode 100644 index 00000000..4d5f34d5 --- /dev/null +++ b/app/Classes/Modules/PackageItems/Standards/Rules/CanDeletePackageItem.php @@ -0,0 +1,43 @@ +PackageItemValidation = $PackageItemValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackageItemObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->PackageItemValidation->validate($object); + + } + + + /** + * @param PackageItemObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/PackageItems/Standards/Validators/PackageItemValidation.php b/app/Classes/Modules/PackageItems/Standards/Validators/PackageItemValidation.php new file mode 100644 index 00000000..d827c21d --- /dev/null +++ b/app/Classes/Modules/PackageItems/Standards/Validators/PackageItemValidation.php @@ -0,0 +1,52 @@ + $object->getPackageId(), + 'name' => $object->getName(), + 'reference' => $object->getReference(), + 'description' => $object->getDescription(), + 'quantity' => $object->getQuantity(), + 'uom' => $object->getUom(), + 'price' => $object->getPrice(), + 'total' => $object->getTotal(), + 'status' => $object->getStatus(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'package_id' => 'required', + 'name' => 'required', + 'reference' => 'required', + 'quantity' => 'required', + 'price' => 'required', + 'total' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php b/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php new file mode 100644 index 00000000..5c17b99f --- /dev/null +++ b/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php @@ -0,0 +1,89 @@ + 'Created Package', + 'message' => 'You have successfully created a new Package' + ]; + } + + /** @var CanCreatePackage */ + private $canCreatePackage; + + /** @var FetchesOrder */ + private $fetchesOrder; + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var CreatesPackage */ + private $createsPackage; + + /** + * CreatePackageLogic constructor. + * @param CanCreatePackage $canCreatePackage + * @param FetchesOrder $fetchesOrder + * @param FetchesCompany $fetchesCompany + * @param CreatesPackage $createsPackage + */ + public function __construct(CanCreatePackage $canCreatePackage, FetchesOrder $fetchesOrder, FetchesCompany $fetchesCompany, CreatesPackage $createsPackage) + { + $this->canCreatePackage = $canCreatePackage; + $this->fetchesOrder = $fetchesOrder; + $this->fetchesCompany = $fetchesCompany; + $this->createsPackage = $createsPackage; + } + + /** + * @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 + { + + $order = $this->fetchesOrder->execute(['id' => $request->input('order_id')]); + + $object = new PackageObject( + $order->id, + null, + $request->input('type'), + $request->input('description'), + $request->input('width'), + $request->input('height'), + $request->input('length'), + $request->input('weight'), + $request->input('quantity'), + ApprovalStatus::PENDING_SUBMISSION); + + $this->canCreatePackage->passes($object); + + $query = $this->createsPackage->execute($object); + + return $this->resourceResponse(new PackageResource($query)); + + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/DeletePackageLogic.php b/app/Classes/Modules/Packages/ControllersLogic/DeletePackageLogic.php new file mode 100644 index 00000000..3fc88e79 --- /dev/null +++ b/app/Classes/Modules/Packages/ControllersLogic/DeletePackageLogic.php @@ -0,0 +1,73 @@ + 'Deleted Package', + 'message' => 'You have successfully deleted a Package' + ]; + } + + + /** @var CanDeletePackage */ + private $canDeletePackage; + + /** @var DeletesPackage */ + private $deletesPackage; + + /** @var FetchesPackage */ + private $fetchesPackage; + + /** + * DeletePackageControllersLogic constructor. + * @param CanDeletePackage $canDeletePackage + * @param DeletesPackage $deletesPackage + * @param FetchesPackage $fetchesPackage + */ + public function __construct(CanDeletePackage $canDeletePackage, DeletesPackage $deletesPackage, FetchesPackage $fetchesPackage) + { + $this->canDeletePackage = $canDeletePackage; + $this->deletesPackage = $deletesPackage; + $this->fetchesPackage = $fetchesPackage; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canDeletePackage->passes(); + + $query = $this->fetchesPackage->execute(['id' => $request->route('id')]); + + $this->deletesPackage->execute($query); + + return $this->response([]); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/FetchPackageLogic.php b/app/Classes/Modules/Packages/ControllersLogic/FetchPackageLogic.php new file mode 100644 index 00000000..20ea0a94 --- /dev/null +++ b/app/Classes/Modules/Packages/ControllersLogic/FetchPackageLogic.php @@ -0,0 +1,66 @@ + 'Retrieved Package', + 'message' => 'You have successfully retrieved a Package' + ]; + } + + /** @var CanFetchPackage */ + private $canFetchPackage; + + /** @var FetchesPackage */ + private $fetchesPackage; + + /** + * FetchPackageControllersLogic constructor. + * @param CanFetchPackage $canFetchPackage + * @param FetchesPackage $fetchesPackage + */ + public function __construct(CanFetchPackage $canFetchPackage, FetchesPackage $fetchesPackage) + { + $this->canFetchPackage = $canFetchPackage; + $this->fetchesPackage = $fetchesPackage; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canFetchPackage->passes(); + + $query = $this->fetchesPackage->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new PackageResource($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/ListPackagesLogic.php b/app/Classes/Modules/Packages/ControllersLogic/ListPackagesLogic.php new file mode 100644 index 00000000..69acf7b6 --- /dev/null +++ b/app/Classes/Modules/Packages/ControllersLogic/ListPackagesLogic.php @@ -0,0 +1,66 @@ + 'Retrieved Packages', + 'message' => 'You have successfully retrieved a list of Packages' + ]; + } + + /** @var CanListPackages */ + private $canListPackages; + + /** @var ListsPackages */ + private $listsPackages; + + /** + * ListPackagesLogic constructor. + * @param CanListPackages $canListPackages + * @param ListsPackages $listsPackages + */ + public function __construct(CanListPackages $canListPackages, ListsPackages $listsPackages) + { + $this->canListPackages = $canListPackages; + $this->listsPackages = $listsPackages; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canListPackages->passes(); + + $query = $this->listsPackages->execute($this->listsPackages->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(PackageResource::collection($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/UpdatePackageLogic.php b/app/Classes/Modules/Packages/ControllersLogic/UpdatePackageLogic.php new file mode 100644 index 00000000..baf6e2ca --- /dev/null +++ b/app/Classes/Modules/Packages/ControllersLogic/UpdatePackageLogic.php @@ -0,0 +1,81 @@ + 'Updated Package', + 'message' => 'You have successfully updated the Package' + ]; + } + + /** @var CanUpdatePackage */ + private $canUpdatePackage; + + /** @var UpdatesPackage */ + private $updatesPackage; + + /** @var FetchesPackage */ + private $fetchesPackage; + + + /** + * UpdatePackageLogic constructor. + * @param CanUpdatePackage $canUpdatePackage + * @param UpdatesPackage $updatesPackage + * @param FetchesPackage $fetchesPackage + */ + public function __construct(CanUpdatePackage $canUpdatePackage, UpdatesPackage $updatesPackage, FetchesPackage $fetchesPackage) + { + $this->canUpdatePackage = $canUpdatePackage; + $this->updatesPackage = $updatesPackage; + $this->fetchesPackage = $fetchesPackage; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $package = $this->fetchesPackage->execute(['id' => $request->route('id')]); + + $object = new PackageObject( + $package->order_id, + null, + $request->input('type'), + $request->input('description'), + $request->input('width'), + $request->input('height'), + $request->input('length'), + $request->input('weight'), + $request->input('quantity'), + $request->input('status')); + + $this->canUpdatePackage->passes($object); + + $query = $this->updatesPackage->execute($package, $object); + + return $this->resourceResponse(new PackageResource($query)); + } + +} diff --git a/app/Classes/Modules/Packages/DataTransferObjects/PackageObject.php b/app/Classes/Modules/Packages/DataTransferObjects/PackageObject.php new file mode 100644 index 00000000..7672c3c6 --- /dev/null +++ b/app/Classes/Modules/Packages/DataTransferObjects/PackageObject.php @@ -0,0 +1,93 @@ +orderId = $orderId; + $this->claimantId = $claimantId; + $this->type = $type; + $this->description = $description; + $this->width = $width; + $this->height = $height; + $this->length = $length; + $this->weight = $weight; + $this->quantity = $quantity; + $this->status = $status; + } + + public function getOrderId(): int + { + return $this->orderId; + } + + public function getClaimantId(): ?int + { + return $this->claimantId; + } + + public function getType(): int + { + return $this->type; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function getWidth(): float + { + return $this->width; + } + + public function getHeight(): float + { + return $this->height; + } + + public function getLength(): float + { + return $this->length; + } + + public function getWeight(): float + { + return $this->weight; + } + + public function getQuantity(): int + { + return $this->quantity; + } + + public function getStatus(): int + { + return $this->status; + } +} diff --git a/app/Classes/Modules/Packages/Services/CreatesPackage.php b/app/Classes/Modules/Packages/Services/CreatesPackage.php new file mode 100644 index 00000000..e7c8ad94 --- /dev/null +++ b/app/Classes/Modules/Packages/Services/CreatesPackage.php @@ -0,0 +1,27 @@ +order_id = $object->getOrderId(); + $model->claimant_id = $object->getClaimantId(); + $model->type = $object->getType(); + $model->description = $object->getDescription(); + $model->width = $object->getWidth(); + $model->height = $object->getHeight(); + $model->length = $object->getLength(); + $model->weight = $object->getWeight(); + $model->quantity = $object->getQuantity(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/Packages/Services/DeletesPackage.php b/app/Classes/Modules/Packages/Services/DeletesPackage.php new file mode 100644 index 00000000..ec780b79 --- /dev/null +++ b/app/Classes/Modules/Packages/Services/DeletesPackage.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/Packages/Services/FetchesPackage.php b/app/Classes/Modules/Packages/Services/FetchesPackage.php new file mode 100644 index 00000000..310b6620 --- /dev/null +++ b/app/Classes/Modules/Packages/Services/FetchesPackage.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Packages/Services/ListsPackages.php b/app/Classes/Modules/Packages/Services/ListsPackages.php new file mode 100644 index 00000000..40bdd5bb --- /dev/null +++ b/app/Classes/Modules/Packages/Services/ListsPackages.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Packages/Services/UpdatesPackage.php b/app/Classes/Modules/Packages/Services/UpdatesPackage.php new file mode 100644 index 00000000..90488bc8 --- /dev/null +++ b/app/Classes/Modules/Packages/Services/UpdatesPackage.php @@ -0,0 +1,26 @@ +claimant_id = $object->getClaimantId(); + $model->type = $object->getType(); + $model->description = $object->getDescription(); + $model->width = $object->getWidth(); + $model->height = $object->getHeight(); + $model->length = $object->getLength(); + $model->weight = $object->getWeight(); + $model->quantity = $object->getQuantity(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackage.php b/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackage.php new file mode 100644 index 00000000..d40b1591 --- /dev/null +++ b/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackage.php @@ -0,0 +1,57 @@ +PackageValidation = $PackageValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackageObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->PackageValidation->validate($object); + + } + + + /** + * @param PackageObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackageItem.php b/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackageItem.php new file mode 100644 index 00000000..d94d7bdd --- /dev/null +++ b/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackageItem.php @@ -0,0 +1,57 @@ +packageItemValidation = $packageItemValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackageObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->packageItemValidation->validate($object); + + } + + + /** + * @param PackageObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Packages/Standards/Rules/CanDeletePackage.php b/app/Classes/Modules/Packages/Standards/Rules/CanDeletePackage.php new file mode 100644 index 00000000..80139d86 --- /dev/null +++ b/app/Classes/Modules/Packages/Standards/Rules/CanDeletePackage.php @@ -0,0 +1,43 @@ +PackageValidation = $PackageValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackageObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->PackageValidation->validate($object); + + } + + + /** + * @param PackageObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php b/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php new file mode 100644 index 00000000..cf237b9f --- /dev/null +++ b/app/Classes/Modules/Packages/Standards/Validators/PackageValidation.php @@ -0,0 +1,51 @@ + $object->getOrderId(), + 'type' => $object->getType(), + 'width' => $object->getWidth(), + 'height' => $object->getHeight(), + 'length' => $object->getLength(), + 'weight' => $object->getWeight(), + 'quantity' => $object->getQuantity(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'order_id' => 'required', + 'type' => 'required', + 'width' => 'required', + 'height' => 'required', + 'length' => 'required', + 'weight' => 'required', + 'quantity' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php new file mode 100644 index 00000000..3774a025 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php @@ -0,0 +1,93 @@ + 'Created PackingList', + 'message' => 'You have successfully created a new PackingList' + ]; + } + + /** @var CanCreatePackingList */ + private $canCreatePackingList; + + private $canCreatePackingListPackage; + + /** @var FetchesCompany */ + private $fetchesPackage; + + /** @var CreatesPackingList */ + private $createsPackingList; + + private $createsPackingListPackage; + + /** + * CreatePackingListLogic constructor. + * @param CanCreatePackingList $canCreatePackingList + * @param FetchesCompany $fetchesCompany + * @param CreatesPackingList $createsPackingList + */ + public function __construct(CanCreatePackingList $canCreatePackingList, CanCreatePackingListPackage $canCreatePackingListPackage, FetchesPackage $fetchesPackage, CreatesPackingList $createsPackingList, CreatesPackingListPackage $createsPackingListPackage) + { + $this->canCreatePackingList = $canCreatePackingList; + $this->canCreatePackingListPackage = $canCreatePackingListPackage; + $this->fetchesPackage = $fetchesPackage; + $this->createsPackingList = $createsPackingList; + $this->createsPackingListPackage = $createsPackingListPackage; + } + + /** + * @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 + { + + $package = $this->fetchesPackage->execute(['id'=>$request->input('package_id')]); + + $reference_no = rand(1000000, 9999999); + + + $object = new PackingListObject($reference_no, ApprovalStatus::PENDING_SUBMISSION); + + $this->canCreatePackingList->passes($object); + + $packageList = $this->createsPackingList->execute( $object); + + + $object = new PackingListPackageObject($packageList->id, $package->id); + + $this->canCreatePackingListPackage->passes($object); + + $query = $this->createsPackingListPackage->execute($object); + + + return $this->resourceResponse(new PackingListResource($query)); + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/DeletePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/DeletePackingListLogic.php new file mode 100644 index 00000000..850f196b --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/DeletePackingListLogic.php @@ -0,0 +1,73 @@ + 'Deleted PackingList', + 'message' => 'You have successfully deleted a PackingList' + ]; + } + + + /** @var CanDeletePackingList */ + private $canDeletePackingList; + + /** @var DeletesPackingList */ + private $deletesPackingList; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * DeletePackingListControllersLogic constructor. + * @param CanDeletePackingList $canDeletePackingList + * @param DeletesPackingList $deletesPackingList + * @param FetchesPackingList $fetchesPackingList + */ + public function __construct(CanDeletePackingList $canDeletePackingList, DeletesPackingList $deletesPackingList, FetchesPackingList $fetchesPackingList) + { + $this->canDeletePackingList = $canDeletePackingList; + $this->deletesPackingList = $deletesPackingList; + $this->fetchesPackingList = $fetchesPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canDeletePackingList->passes(); + + $query = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + + $this->deletesPackingList->execute($query); + + return $this->response([]); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/FetchPackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/FetchPackingListLogic.php new file mode 100644 index 00000000..6d722729 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/FetchPackingListLogic.php @@ -0,0 +1,66 @@ + 'Retrieved PackingList', + 'message' => 'You have successfully retrieved a PackingList' + ]; + } + + /** @var CanFetchPackingList */ + private $canFetchPackingList; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * FetchPackingListControllersLogic constructor. + * @param CanFetchPackingList $canFetchPackingList + * @param FetchesPackingList $fetchesPackingList + */ + public function __construct(CanFetchPackingList $canFetchPackingList, FetchesPackingList $fetchesPackingList) + { + $this->canFetchPackingList = $canFetchPackingList; + $this->fetchesPackingList = $fetchesPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canFetchPackingList->passes(); + + $query = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new PackingListResource($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php new file mode 100644 index 00000000..a1e485ce --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/ListPackingListsLogic.php @@ -0,0 +1,66 @@ + 'Retrieved PackingLists', + 'message' => 'You have successfully retrieved a list of PackingLists' + ]; + } + + /** @var CanListPackingLists */ + private $canListPackingLists; + + /** @var ListsPackingLists */ + private $listsPackingLists; + + /** + * ListPackingListsLogic constructor. + * @param CanListPackingLists $canListPackingLists + * @param ListsPackingLists $listsPackingLists + */ + public function __construct(CanListPackingLists $canListPackingLists, ListsPackingLists $listsPackingLists) + { + $this->canListPackingLists = $canListPackingLists; + $this->listsPackingLists = $listsPackingLists; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canListPackingLists->passes(); + + $query = $this->listsPackingLists->execute($this->listsPackingLists->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(PackingListResource::collection($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListLogic.php new file mode 100644 index 00000000..926b9873 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListLogic.php @@ -0,0 +1,69 @@ + 'Updated PackingList', + 'message' => 'You have successfully updated the PackingList' + ]; + } + + /** @var CanUpdatePackingList */ + private $canUpdatePackingList; + + /** @var UpdatesPackingList */ + private $updatesPackingList; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * UpdatePackingListLogic constructor. + * @param CanUpdatePackingList $canUpdatePackingList + * @param UpdatesPackingList $updatesPackingList + * @param FetchesPackingList $fetchesPackingList + */ + public function __construct(CanUpdatePackingList $canUpdatePackingList, UpdatesPackingList $updatesPackingList, FetchesPackingList $fetchesPackingList) + { + $this->canUpdatePackingList = $canUpdatePackingList; + $this->updatesPackingList = $updatesPackingList; + $this->fetchesPackingList = $fetchesPackingList; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $packingList = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + + $object = new PackingListObject($packingList->reference, $request->input('status')); + + $this->canUpdatePackingList->passes($object); + + $query = $this->updatesPackingList->execute($packingList, $object); + + return $this->resourceResponse(new PackingListResource($query)); + } + +} diff --git a/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php b/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php new file mode 100644 index 00000000..c0dbe006 --- /dev/null +++ b/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php @@ -0,0 +1,30 @@ +reference = $reference; + $this->status = $status; + } + + public function getReference(): ?string + { + return $this->reference; + } + + public function getStatus(): int + { + return $this->status; + } + +} diff --git a/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListPackageObject.php b/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListPackageObject.php new file mode 100644 index 00000000..3c1aef5b --- /dev/null +++ b/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListPackageObject.php @@ -0,0 +1,30 @@ +packingListId = $packingListId; + $this->packageId = $packageId; + } + + public function getPackingListId(): int + { + return $this->packingListId; + } + + public function getPackageId(): int + { + return $this->packageId; + } + +} diff --git a/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php b/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php new file mode 100644 index 00000000..2cb151c5 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php @@ -0,0 +1,19 @@ +reference = $object->getReference(); + $model->status = $object->getStatus(); + + return $this->handler($model); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/CreatesPackingListPackage.php b/app/Classes/Modules/PackingLists/Services/CreatesPackingListPackage.php new file mode 100644 index 00000000..8d14744d --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/CreatesPackingListPackage.php @@ -0,0 +1,19 @@ +packing_list_id = $object->getPackingListId(); + $model->package_id = $object->getPackageId(); + + return $this->handler( $model); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/DeletesPackingList.php b/app/Classes/Modules/PackingLists/Services/DeletesPackingList.php new file mode 100644 index 00000000..c0102a97 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/DeletesPackingList.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/FetchesPackingList.php b/app/Classes/Modules/PackingLists/Services/FetchesPackingList.php new file mode 100644 index 00000000..7d16bafe --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/FetchesPackingList.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/ListsPackingLists.php b/app/Classes/Modules/PackingLists/Services/ListsPackingLists.php new file mode 100644 index 00000000..7cf87438 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/ListsPackingLists.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/UpdatesPackingList.php b/app/Classes/Modules/PackingLists/Services/UpdatesPackingList.php new file mode 100644 index 00000000..7f81ae22 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/UpdatesPackingList.php @@ -0,0 +1,26 @@ +reference = $object->getReference(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreateContainerPackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreateContainerPackingList.php new file mode 100644 index 00000000..56161688 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreateContainerPackingList.php @@ -0,0 +1,57 @@ +containerPackingListValidation = $containerPackingListValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackingListObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->containerPackingListValidation->validate($object); + + } + + + /** + * @param PackingListObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php new file mode 100644 index 00000000..399a0fae --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingList.php @@ -0,0 +1,57 @@ +packingListValidation = $packingListValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackingListObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->packingListValidation->validate($object); + + } + + + /** + * @param PackingListObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php new file mode 100644 index 00000000..aca44c8b --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanCreatePackingListPackage.php @@ -0,0 +1,57 @@ +packingListPackageValidation = $packingListPackageValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackingListObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->packingListPackageValidation->validate($object); + + } + + + /** + * @param PackingListObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php new file mode 100644 index 00000000..ac8abc28 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Rules/CanDeletePackingList.php @@ -0,0 +1,43 @@ +PackingListValidation = $PackingListValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param PackingListObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->PackingListValidation->validate($object); + + } + + + /** + * @param PackingListObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/PackingLists/Standards/Validators/ContainerPackingListValidation.php b/app/Classes/Modules/PackingLists/Standards/Validators/ContainerPackingListValidation.php new file mode 100644 index 00000000..0ff94dc7 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Validators/ContainerPackingListValidation.php @@ -0,0 +1,45 @@ + $object->getPackingListId(), + 'reference' => $object->getContainerReference(), + 'container_type' => $object->getContainerType(), + 'seal_reference' => $object->getSealReference(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'status' => 'required', + 'reference' => 'required', + 'container_type' => 'required', + 'seal_reference' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/PackingLists/Standards/Validators/PackingListPackageValidation.php b/app/Classes/Modules/PackingLists/Standards/Validators/PackingListPackageValidation.php new file mode 100644 index 00000000..ad87e77e --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Validators/PackingListPackageValidation.php @@ -0,0 +1,41 @@ + $object->getPackingListId(), + 'package_id' => $object->getPackageId() + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'packing_list_id' => 'required', + 'package_id' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/PackingLists/Standards/Validators/PackingListValidation.php b/app/Classes/Modules/PackingLists/Standards/Validators/PackingListValidation.php new file mode 100644 index 00000000..65dd3380 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Standards/Validators/PackingListValidation.php @@ -0,0 +1,41 @@ + $object->getStatus(), + 'reference' => $object->getReference() + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'status' => 'required', + 'reference' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Receipts/DataTransferObjects/ReceiptObject.php b/app/Classes/Modules/Receipts/DataTransferObjects/ReceiptObject.php index 91107fc3..7554fb2f 100644 --- a/app/Classes/Modules/Receipts/DataTransferObjects/ReceiptObject.php +++ b/app/Classes/Modules/Receipts/DataTransferObjects/ReceiptObject.php @@ -8,17 +8,17 @@ class ReceiptObject implements DataTransferObject { /* - * + * * return [ 'id' => $this->id, 'trans_type1' => $this->trans_type1, 'trans_type2' => $this->trans_type2, 'bill_no' => (int) $this->bill_no, - 'amount' => (double) $this->amount, + 'amount' => (float) $this->amount, 'currency_id' => (int) $this->currency_id, - 'original_amount' => (double) $this->original_amount, + 'original_amount' => (float) $this->original_amount, 'original_currency_id' => (int) $this->original_currency_id, - 'currency_rate' => (double) $this->currency_rate, + 'currency_rate' => (float) $this->currency_rate, 'dt_transaction' => $this->dt_transaction, 'status' => (int) $this->status, 'booking_id' => (int) $this->booking_id, @@ -26,29 +26,29 @@ class ReceiptObject implements DataTransferObject ]; */ private $trans_type1; - + private $trans_type2; - + private $bill_no; - + private $amount; - + private $currency_id; - + private $original_amount; - + private $original_currency_id; private $currency_rate; - + private $dt_transaction; - + private $status; - + private $booking_id; - + private $company_id; - + public function __construct( int $bill_no,string $trans_type1,string $trans_type2, float $amount, int $currency_id, int $original_amount, @@ -70,7 +70,7 @@ class ReceiptObject implements DataTransferObject $this->company_id = $company_id; } - + /** * @return int */ @@ -78,7 +78,7 @@ class ReceiptObject implements DataTransferObject { return $this->bill_no; } - + /** * @return string */ @@ -86,7 +86,7 @@ class ReceiptObject implements DataTransferObject { return $this->trans_type1; } - + /** * @return string */ @@ -94,8 +94,8 @@ class ReceiptObject implements DataTransferObject { return $this->trans_type2; } - - + + public function getAmount(): float { return $this->amount; @@ -108,23 +108,23 @@ class ReceiptObject implements DataTransferObject { return $this->currency_id; } - - + + public function getOriginalAmount(): float { return $this->original_amount; } - + public function getOriginalCurrency(): int { return $this->original_currency_id; } - + public function getCurrencyRate(): float { return $this->currency_rate; } - + /** * @return string */ @@ -132,19 +132,19 @@ class ReceiptObject implements DataTransferObject { return $this->dt_transaction; } - + public function getStatus(): int { return $this->original_currency_id; } - + public function getBookingId(): int { return $this->booking_id; } - + public function getCompanyId(): int { return $this->company_id; } -} \ No newline at end of file +} diff --git a/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php new file mode 100644 index 00000000..a5bf50b0 --- /dev/null +++ b/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php @@ -0,0 +1,70 @@ + 'Created Remark', + 'message' => 'You have successfully created a new Remark' + ]; + } + + /** @var CanCreateRemark */ + private $canCreateRemark; + + /** @var CreatesRemark */ + private $createsRemark; + + /** @var FetchesUser */ + private $fetchesUser; + + /** + * CreateRemarkLogic constructor. + * @param CanCreateRemark $canCreateRemark + * @param CreatesRemark $createsRemark + */ + public function __construct(CanCreateRemark $canCreateRemark, CreatesRemark $createsRemark, FetchesUser $fetchesUser) + { + $this->canCreateRemark = $canCreateRemark; + $this->createsRemark = $createsRemark; + $this->fetchesUser = $fetchesUser; + } + + /** + * @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 + { + + $object = new RemarkObject($request->input('content'), $request->input('commenter_id')); + + $this->canCreateRemark->passes($object); + + $query = $this->createsRemark->execute($this->fetchesUser->execute(['id' => $request->input('commenter_id')]), $object); + + return $this->resourceResponse(new RemarkResource($query)); + + } + +} diff --git a/app/Classes/Modules/Remarks/ControllersLogic/DeleteRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/DeleteRemarkLogic.php new file mode 100644 index 00000000..b593d603 --- /dev/null +++ b/app/Classes/Modules/Remarks/ControllersLogic/DeleteRemarkLogic.php @@ -0,0 +1,66 @@ + 'Deleted Remark', + 'message' => 'You have successfully deleted a Remark' + ]; + } + + + /** @var CanDeleteRemark */ + private $canDeleteRemark; + + /** @var DeletesRemark */ + private $deletesRemark; + + /** @var FetchesRemark */ + private $fetchesRemark; + + /** + * DeleteRemarkControllersLogic constructor. + * @param CanDeleteRemark $canDeleteRemark + * @param DeletesRemark $deletesRemark + * @param FetchesRemark $fetchesRemark + */ + public function __construct(CanDeleteRemark $canDeleteRemark, DeletesRemark $deletesRemark, FetchesRemark $fetchesRemark) + { + $this->canDeleteRemark = $canDeleteRemark; + $this->deletesRemark = $deletesRemark; + $this->fetchesRemark = $fetchesRemark; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canDeleteRemark->passes(); + + $query = $this->fetchesRemark->execute(['id' => $request->route('id')]); + + $this->deletesRemark->execute($query); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Remarks/ControllersLogic/FetchRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/FetchRemarkLogic.php new file mode 100644 index 00000000..9c5aa5af --- /dev/null +++ b/app/Classes/Modules/Remarks/ControllersLogic/FetchRemarkLogic.php @@ -0,0 +1,59 @@ + 'Retrieved Remark', + 'message' => 'You have successfully retrieved a Remark' + ]; + } + + /** @var CanFetchRemark */ + private $canFetchRemark; + + /** @var FetchesRemark */ + private $fetchesRemark; + + /** + * FetchRemarkControllersLogic constructor. + * @param CanFetchRemark $canFetchRemark + * @param FetchesRemark $fetchesRemark + */ + public function __construct(CanFetchRemark $canFetchRemark, FetchesRemark $fetchesRemark) + { + $this->canFetchRemark = $canFetchRemark; + $this->fetchesRemark = $fetchesRemark; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchRemark->passes(); + + $query = $this->fetchesRemark->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new RemarkResource($query)); + } + +} diff --git a/app/Classes/Modules/Remarks/ControllersLogic/ListRemarksLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/ListRemarksLogic.php new file mode 100644 index 00000000..c70ccee1 --- /dev/null +++ b/app/Classes/Modules/Remarks/ControllersLogic/ListRemarksLogic.php @@ -0,0 +1,59 @@ + 'Retrieved Remarks', + 'message' => 'You have successfully retrieved a list of Remarks' + ]; + } + + /** @var CanListRemarks */ + private $canListRemarks; + + /** @var ListsRemarks */ + private $listsRemarks; + + /** + * ListRemarksLogic constructor. + * @param CanListRemarks $canListRemarks + * @param ListsRemarks $listsRemarks + */ + public function __construct(CanListRemarks $canListRemarks, ListsRemarks $listsRemarks) + { + $this->canListRemarks = $canListRemarks; + $this->listsRemarks = $listsRemarks; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canListRemarks->passes(); + + $query = $this->listsRemarks->execute($this->listsRemarks->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(RemarkResource::collection($query)); + } + +} diff --git a/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php new file mode 100644 index 00000000..e9c0738f --- /dev/null +++ b/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php @@ -0,0 +1,69 @@ + 'Updated Remark', + 'message' => 'You have successfully updated the Remark' + ]; + } + + /** @var CanUpdateRemark */ + private $canUpdateRemark; + + /** @var UpdatesRemark */ + private $updatesRemark; + + /** @var FetchesRemark */ + private $fetchesRemark; + + /** + * UpdateRemarkLogic constructor. + * @param CanUpdateRemark $canUpdateRemark + * @param UpdatesRemark $updatesRemark + * @param FetchesRemark $fetchesRemark + */ + public function __construct(CanUpdateRemark $canUpdateRemark, UpdatesRemark $updatesRemark, FetchesRemark $fetchesRemark) + { + $this->canUpdateRemark = $canUpdateRemark; + $this->updatesRemark = $updatesRemark; + $this->fetchesRemark = $fetchesRemark; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $object = new RemarkObject($request->input('content'), $request->input('commenter_id')); + + $this->canUpdateRemark->passes($object); + + $query = $this->fetchesRemark->execute(['id' => $request->route('id')]); + + $query = $this->updatesRemark->execute($query, $object); + + return $this->resourceResponse(new RemarkResource($query)); + } + +} diff --git a/app/Classes/Modules/Remarks/DataTransferObjects/RemarkObject.php b/app/Classes/Modules/Remarks/DataTransferObjects/RemarkObject.php new file mode 100644 index 00000000..44a9507f --- /dev/null +++ b/app/Classes/Modules/Remarks/DataTransferObjects/RemarkObject.php @@ -0,0 +1,38 @@ +commenterID = $commenterID; + $this->content = $content; + } + + /** + * @return int + */ + public function getCommenterId(): string + { + return $this->commenterID; + } + + /** + * @return string + */ + public function getContent(): ?string + { + return $this->content; + } + +} diff --git a/app/Classes/Modules/Remarks/Services/CreatesRemark.php b/app/Classes/Modules/Remarks/Services/CreatesRemark.php new file mode 100644 index 00000000..8c221878 --- /dev/null +++ b/app/Classes/Modules/Remarks/Services/CreatesRemark.php @@ -0,0 +1,29 @@ +commenter_id = $object->getCommenterId(); + $model->content = $object->getContent(); + + return $this->handler($user->remarks(), $model); + + } +} diff --git a/app/Classes/Modules/Remarks/Services/DeletesRemark.php b/app/Classes/Modules/Remarks/Services/DeletesRemark.php new file mode 100644 index 00000000..4c29be9d --- /dev/null +++ b/app/Classes/Modules/Remarks/Services/DeletesRemark.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/Remarks/Services/FetchesRemark.php b/app/Classes/Modules/Remarks/Services/FetchesRemark.php new file mode 100644 index 00000000..a3b5c765 --- /dev/null +++ b/app/Classes/Modules/Remarks/Services/FetchesRemark.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Remarks/Services/ListsRemarks.php b/app/Classes/Modules/Remarks/Services/ListsRemarks.php new file mode 100644 index 00000000..53479558 --- /dev/null +++ b/app/Classes/Modules/Remarks/Services/ListsRemarks.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Remarks/Services/UpdatesRemark.php b/app/Classes/Modules/Remarks/Services/UpdatesRemark.php new file mode 100644 index 00000000..4ba9501c --- /dev/null +++ b/app/Classes/Modules/Remarks/Services/UpdatesRemark.php @@ -0,0 +1,26 @@ +commenter_id = $object->getCommenterId(); + $model->content = $object->getContent(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php b/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php new file mode 100644 index 00000000..fc51178f --- /dev/null +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanCreateRemark.php @@ -0,0 +1,57 @@ +RemarkValidation = $RemarkValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param RemarkObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->RemarkValidation->validate($object); + + } + + + /** + * @param RemarkObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php b/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php new file mode 100644 index 00000000..7ddece31 --- /dev/null +++ b/app/Classes/Modules/Remarks/Standards/Rules/CanDeleteRemark.php @@ -0,0 +1,43 @@ +RemarkValidation = $RemarkValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param RemarkObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->RemarkValidation->validate($object); + + } + + + /** + * @param RemarkObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Remarks/Standards/Validators/RemarkValidation.php b/app/Classes/Modules/Remarks/Standards/Validators/RemarkValidation.php new file mode 100644 index 00000000..b35d3bde --- /dev/null +++ b/app/Classes/Modules/Remarks/Standards/Validators/RemarkValidation.php @@ -0,0 +1,41 @@ + $object->getCommenterId(), + 'content' => $object->getContent(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'commenter_id' => 'required', + 'content' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Schedules/ControllersLogic/CreateScheduleLogic.php b/app/Classes/Modules/Schedules/ControllersLogic/CreateScheduleLogic.php new file mode 100644 index 00000000..5bf9c7e9 --- /dev/null +++ b/app/Classes/Modules/Schedules/ControllersLogic/CreateScheduleLogic.php @@ -0,0 +1,68 @@ + 'Created Schedule', + 'message' => 'You have successfully created a new Schedule' + ]; + } + + /** @var CanCreateSchedule */ + private $canCreateSchedule; + + /** @var FetchesTransport */ + private $fetchesTransport; + + /** @var CreatesSchedule */ + private $createsSchedule; + + /** + * CreateScheduleLogic constructor. + * @param CanCreateSchedule $canCreateSchedule + * @param FetchesTransport $fetchesTransport + * @param CreatesSchedule $createsSchedule + */ + public function __construct(CanCreateSchedule $canCreateSchedule, FetchesTransport $fetchesTransport, CreatesSchedule $createsSchedule) + { + $this->canCreateSchedule = $canCreateSchedule; + $this->fetchesTransport = $fetchesTransport; + $this->createsSchedule = $createsSchedule; + } + + /** + * @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 + { + $object = new ScheduleObject($request->input('etd'), $request->input('eta'), $request->input('transport_id'), ApprovalStatus::PENDING_SUBMISSION); + + $this->canCreateSchedule->passes($object); + + $query = $this->createsSchedule->execute($this->fetchesTransport->execute(['id' => $request->input('transport_id')]), $object); + + return $this->resourceResponse(new ScheduleResource($query)); + } + +} diff --git a/app/Classes/Modules/Schedules/ControllersLogic/DeleteScheduleLogic.php b/app/Classes/Modules/Schedules/ControllersLogic/DeleteScheduleLogic.php new file mode 100644 index 00000000..06184388 --- /dev/null +++ b/app/Classes/Modules/Schedules/ControllersLogic/DeleteScheduleLogic.php @@ -0,0 +1,65 @@ + 'Deleted Schedule', + 'message' => 'You have successfully deleted a Schedule' + ]; + } + + + /** @var CanDeleteSchedule */ + private $canDeleteSchedule; + + /** @var DeletesSchedule */ + private $deletesSchedule; + + /** @var FetchesSchedule */ + private $fetchesSchedule; + + /** + * DeleteScheduleControllersLogic constructor. + * @param CanDeleteSchedule $canDeleteSchedule + * @param DeletesSchedule $deletesSchedule + * @param FetchesSchedule $fetchesSchedule + */ + public function __construct(CanDeleteSchedule $canDeleteSchedule, DeletesSchedule $deletesSchedule, FetchesSchedule $fetchesSchedule) + { + $this->canDeleteSchedule = $canDeleteSchedule; + $this->deletesSchedule = $deletesSchedule; + $this->fetchesSchedule = $fetchesSchedule; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canDeleteSchedule->passes(); + + $query = $this->fetchesSchedule->execute(['id' => $request->route('id')]); + + $this->deletesSchedule->execute($query); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Schedules/ControllersLogic/FetchScheduleLogic.php b/app/Classes/Modules/Schedules/ControllersLogic/FetchScheduleLogic.php new file mode 100644 index 00000000..7b5bd11f --- /dev/null +++ b/app/Classes/Modules/Schedules/ControllersLogic/FetchScheduleLogic.php @@ -0,0 +1,59 @@ + 'Retrieved Schedule', + 'message' => 'You have successfully retrieved a Schedule' + ]; + } + + /** @var CanFetchSchedule */ + private $canFetchSchedule; + + /** @var FetchesSchedule */ + private $fetchesSchedule; + + /** + * FetchScheduleControllersLogic constructor. + * @param CanFetchSchedule $canFetchSchedule + * @param FetchesSchedule $fetchesSchedule + */ + public function __construct(CanFetchSchedule $canFetchSchedule, FetchesSchedule $fetchesSchedule) + { + $this->canFetchSchedule = $canFetchSchedule; + $this->fetchesSchedule = $fetchesSchedule; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchSchedule->passes(); + + $query = $this->fetchesSchedule->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new ScheduleResource($query)); + } + +} diff --git a/app/Classes/Modules/Schedules/ControllersLogic/ListSchedulesLogic.php b/app/Classes/Modules/Schedules/ControllersLogic/ListSchedulesLogic.php new file mode 100644 index 00000000..d0666763 --- /dev/null +++ b/app/Classes/Modules/Schedules/ControllersLogic/ListSchedulesLogic.php @@ -0,0 +1,59 @@ + 'Retrieved Schedules', + 'message' => 'You have successfully retrieved a list of Schedules' + ]; + } + + /** @var CanListSchedules */ + private $canListSchedules; + + /** @var ListsSchedules */ + private $listsSchedules; + + /** + * ListSchedulesLogic constructor. + * @param CanListSchedules $canListSchedules + * @param ListsSchedules $listsSchedules + */ + public function __construct(CanListSchedules $canListSchedules, ListsSchedules $listsSchedules) + { + $this->canListSchedules = $canListSchedules; + $this->listsSchedules = $listsSchedules; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canListSchedules->passes(); + + $query = $this->listsSchedules->execute($this->listsSchedules->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(ScheduleResource::collection($query)); + } + +} diff --git a/app/Classes/Modules/Schedules/ControllersLogic/UpdateScheduleLogic.php b/app/Classes/Modules/Schedules/ControllersLogic/UpdateScheduleLogic.php new file mode 100644 index 00000000..2805c927 --- /dev/null +++ b/app/Classes/Modules/Schedules/ControllersLogic/UpdateScheduleLogic.php @@ -0,0 +1,71 @@ + 'Updated Schedule', + 'message' => 'You have successfully updated the Schedule' + ]; + } + + /** @var CanUpdateSchedule */ + private $canUpdateSchedule; + + /** @var UpdatesSchedule */ + private $updatesSchedule; + + /** @var FetchesSchedule */ + private $fetchesSchedule; + + + /** + * UpdateScheduleLogic constructor. + * @param CanUpdateSchedule $canUpdateSchedule + * @param UpdatesSchedule $updatesSchedule + * @param FetchesSchedule $fetchesSchedule + */ + public function __construct(CanUpdateSchedule $canUpdateSchedule, UpdatesSchedule $updatesSchedule, FetchesSchedule $fetchesSchedule) + { + $this->canUpdateSchedule = $canUpdateSchedule; + $this->updatesSchedule = $updatesSchedule; + $this->fetchesSchedule = $fetchesSchedule; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $query = $this->fetchesSchedule->execute(['id' => $request->route('id')]); + + $object = new ScheduleObject($request->input('etd'), $request->input('eta'), $query->owner_id, $request->input('status')); + + $this->canUpdateSchedule->passes($object); + + $query = $this->updatesSchedule->execute($query, $object); + + return $this->resourceResponse(new ScheduleResource($query)); + } + +} diff --git a/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php b/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php new file mode 100644 index 00000000..026e10d2 --- /dev/null +++ b/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php @@ -0,0 +1,68 @@ +etd = $etd; + $this->eta = $eta; + $this->transport_id = $transport_id; + $this->status = $status; + } + + /** + * @return string + */ + public function getETD(): Carbon + { + return Carbon::parse($this->etd); + } + + /** + * @return string + */ + public function getETA(): Carbon + { + return Carbon::parse($this->eta); + } + + /** + * @return int + */ + public function getTransportId(): int + { + return $this->transport_id; + } + + /** + * @return int + */ + public function getStatus(): int + { + return $this->status; + } +} diff --git a/app/Classes/Modules/Schedules/Services/CreatesSchedule.php b/app/Classes/Modules/Schedules/Services/CreatesSchedule.php new file mode 100644 index 00000000..7dad5210 --- /dev/null +++ b/app/Classes/Modules/Schedules/Services/CreatesSchedule.php @@ -0,0 +1,29 @@ +etd = $object->getETD(); + $model->eta = $object->getETA(); + + return $this->handler($transport->schedules(), $model); + + } +} diff --git a/app/Classes/Modules/Schedules/Services/DeletesSchedule.php b/app/Classes/Modules/Schedules/Services/DeletesSchedule.php new file mode 100644 index 00000000..cd1368cf --- /dev/null +++ b/app/Classes/Modules/Schedules/Services/DeletesSchedule.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/Schedules/Services/FetchesSchedule.php b/app/Classes/Modules/Schedules/Services/FetchesSchedule.php new file mode 100644 index 00000000..eb7e4311 --- /dev/null +++ b/app/Classes/Modules/Schedules/Services/FetchesSchedule.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Schedules/Services/ListsSchedules.php b/app/Classes/Modules/Schedules/Services/ListsSchedules.php new file mode 100644 index 00000000..aeacc9e3 --- /dev/null +++ b/app/Classes/Modules/Schedules/Services/ListsSchedules.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Schedules/Services/UpdatesSchedule.php b/app/Classes/Modules/Schedules/Services/UpdatesSchedule.php new file mode 100644 index 00000000..42571373 --- /dev/null +++ b/app/Classes/Modules/Schedules/Services/UpdatesSchedule.php @@ -0,0 +1,27 @@ +etd = $object->getETD(); + $model->eta = $object->getETA(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php b/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php new file mode 100644 index 00000000..38dadf18 --- /dev/null +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanCreateSchedule.php @@ -0,0 +1,57 @@ +ScheduleValidation = $ScheduleValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param ScheduleObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->ScheduleValidation->validate($object); + + } + + + /** + * @param ScheduleObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php b/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php new file mode 100644 index 00000000..31b5fb08 --- /dev/null +++ b/app/Classes/Modules/Schedules/Standards/Rules/CanDeleteSchedule.php @@ -0,0 +1,43 @@ +ScheduleValidation = $ScheduleValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param ScheduleObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->ScheduleValidation->validate($object); + + } + + + /** + * @param ScheduleObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Schedules/Standards/Validators/ScheduleValidation.php b/app/Classes/Modules/Schedules/Standards/Validators/ScheduleValidation.php new file mode 100644 index 00000000..7d14a3f1 --- /dev/null +++ b/app/Classes/Modules/Schedules/Standards/Validators/ScheduleValidation.php @@ -0,0 +1,44 @@ + $object->getTransportId(), + 'etd' => $object->getETD(), + 'eta' => $object->getETA(), + 'status' => $object->getStatus(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'transport_id' => 'required', + 'etd' => 'required', + 'eta' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Transports/ControllersLogic/CreateTransportLogic.php b/app/Classes/Modules/Transports/ControllersLogic/CreateTransportLogic.php new file mode 100644 index 00000000..73bdafac --- /dev/null +++ b/app/Classes/Modules/Transports/ControllersLogic/CreateTransportLogic.php @@ -0,0 +1,71 @@ + 'Created Transport', + 'message' => 'You have successfully created a new Transport' + ]; + } + + /** @var CanCreateTransport */ + private $canCreateTransport; + + /** @var FetchesContainerPackingList */ + private $fetchesContainerPackingList; + + /** @var CreatesTransport */ + private $createsTransport; + + /** + * CreateTransportLogic constructor. + * @param CanCreateTransport $canCreateTransport + * @param FetchesContainerPackingList $fetchesContainerPackingList + * @param CreatesTransport $createsTransport + */ + public function __construct(CanCreateTransport $canCreateTransport, FetchesContainerPackingList $fetchesContainerPackingList, CreatesTransport $createsTransport) + { + $this->canCreateTransport = $canCreateTransport; + $this->fetchesContainerPackingList = $fetchesContainerPackingList; + $this->createsTransport = $createsTransport; + } + + /** + * @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 + { + + $object = new TransportObject($request->input('type'), $request->input('courier'), $request->input('tracking_number'), null, null, ApprovalStatus::PENDING_SUBMISSION); + + $this->canCreateTransport->passes($object); + + $query = $this->createsTransport->execute($this->fetchesContainerPackingList->execute(['id' => $request->input('container_id')]), $object); + + return $this->resourceResponse(new TransportResource($query)); + + } + +} diff --git a/app/Classes/Modules/Transports/ControllersLogic/DeleteTransportLogic.php b/app/Classes/Modules/Transports/ControllersLogic/DeleteTransportLogic.php new file mode 100644 index 00000000..a8d22ac3 --- /dev/null +++ b/app/Classes/Modules/Transports/ControllersLogic/DeleteTransportLogic.php @@ -0,0 +1,66 @@ + 'Deleted Transport', + 'message' => 'You have successfully deleted a Transport' + ]; + } + + + /** @var CanDeleteTransport */ + private $canDeleteTransport; + + /** @var DeletesTransport */ + private $deletesTransport; + + /** @var FetchesTransport */ + private $fetchesTransport; + + /** + * DeleteTransportControllersLogic constructor. + * @param CanDeleteTransport $canDeleteTransport + * @param DeletesTransport $deletesTransport + * @param FetchesTransport $fetchesTransport + */ + public function __construct(CanDeleteTransport $canDeleteTransport, DeletesTransport $deletesTransport, FetchesTransport $fetchesTransport) + { + $this->canDeleteTransport = $canDeleteTransport; + $this->deletesTransport = $deletesTransport; + $this->fetchesTransport = $fetchesTransport; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canDeleteTransport->passes(); + + $query = $this->fetchesTransport->execute(['id' => $request->route('id')]); + + $this->deletesTransport->execute($query); + + return $this->response([]); + } + +} diff --git a/app/Classes/Modules/Transports/ControllersLogic/FetchTransportLogic.php b/app/Classes/Modules/Transports/ControllersLogic/FetchTransportLogic.php new file mode 100644 index 00000000..6129e6ed --- /dev/null +++ b/app/Classes/Modules/Transports/ControllersLogic/FetchTransportLogic.php @@ -0,0 +1,59 @@ + 'Retrieved Transport', + 'message' => 'You have successfully retrieved a Transport' + ]; + } + + /** @var CanFetchTransport */ + private $canFetchTransport; + + /** @var FetchesTransport */ + private $fetchesTransport; + + /** + * FetchTransportControllersLogic constructor. + * @param CanFetchTransport $canFetchTransport + * @param FetchesTransport $fetchesTransport + */ + public function __construct(CanFetchTransport $canFetchTransport, FetchesTransport $fetchesTransport) + { + $this->canFetchTransport = $canFetchTransport; + $this->fetchesTransport = $fetchesTransport; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canFetchTransport->passes(); + + $query = $this->fetchesTransport->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new TransportResource($query)); + } + +} diff --git a/app/Classes/Modules/Transports/ControllersLogic/ListTransportsLogic.php b/app/Classes/Modules/Transports/ControllersLogic/ListTransportsLogic.php new file mode 100644 index 00000000..b85e07e7 --- /dev/null +++ b/app/Classes/Modules/Transports/ControllersLogic/ListTransportsLogic.php @@ -0,0 +1,59 @@ + 'Retrieved Transports', + 'message' => 'You have successfully retrieved a list of Transports' + ]; + } + + /** @var CanListTransports */ + private $canListTransports; + + /** @var ListsTransports */ + private $listsTransports; + + /** + * ListTransportsLogic constructor. + * @param CanListTransports $canListTransports + * @param ListsTransports $listsTransports + */ + public function __construct(CanListTransports $canListTransports, ListsTransports $listsTransports) + { + $this->canListTransports = $canListTransports; + $this->listsTransports = $listsTransports; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $this->canListTransports->passes(); + + $query = $this->listsTransports->execute($this->listsTransports->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(TransportResource::collection($query)); + } + +} diff --git a/app/Classes/Modules/Transports/ControllersLogic/UpdateTransportLogic.php b/app/Classes/Modules/Transports/ControllersLogic/UpdateTransportLogic.php new file mode 100644 index 00000000..cab03419 --- /dev/null +++ b/app/Classes/Modules/Transports/ControllersLogic/UpdateTransportLogic.php @@ -0,0 +1,70 @@ + 'Updated Transport', + 'message' => 'You have successfully updated the Transport' + ]; + } + + /** @var CanUpdateTransport */ + private $canUpdateTransport; + + /** @var UpdatesTransport */ + private $updatesTransport; + + /** @var FetchesTransport */ + private $fetchesTransport; + + /** + * UpdateTransportLogic constructor. + * @param CanUpdateTransport $canUpdateTransport + * @param UpdatesTransport $updatesTransport + * @param FetchesTransport $fetchesTransport + */ + public function __construct(CanUpdateTransport $canUpdateTransport, UpdatesTransport $updatesTransport, FetchesTransport $fetchesTransport) + { + $this->canUpdateTransport = $canUpdateTransport; + $this->updatesTransport = $updatesTransport; + $this->fetchesTransport = $fetchesTransport; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $query = $this->fetchesTransport->execute(['id' => $request->route('id')]); + + $object = new TransportObject($request->input('type'), $request->input('courier'), $request->input('tracking_number'), $request->input('dispatch_date'), $request->input('drop_date'), $request->input('status')); + + $this->canUpdateTransport->passes($object); + + $query = $this->updatesTransport->execute($query, $object); + + return $this->resourceResponse(new TransportResource($query)); + } + +} diff --git a/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php b/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php new file mode 100644 index 00000000..c391ac72 --- /dev/null +++ b/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php @@ -0,0 +1,97 @@ +type = $type; + $this->courier = $courier; + $this->tracking_number = $tracking_number; + $this->dispatch_date = $dispatch_date; + $this->drop_date = $drop_date; + $this->status = $status; + } + + /** + * @return int + */ + public function getType(): int + { + return $this->type; + } + + /** + * @return null|string + */ + public function getCourier(): ?string + { + return $this->courier; + } + + /** + * @return int + */ + public function getTrackingNumber(): string + { + return $this->tracking_number; + } + + /** + * @return int + */ + public function getDispatchDate(): ?Carbon + { + return $this->dispatch_date ? Carbon::parse($this->dispatch_date) : null; + } + + /** + * @return int + */ + public function getDropDate(): ?Carbon + { + return $this->drop_date ? Carbon::parse($this->drop_date) : null; + } + + /** + * @return int + */ + public function getStatus(): int + { + return $this->status; + } + + +} diff --git a/app/Classes/Modules/Transports/Services/CreatesTransport.php b/app/Classes/Modules/Transports/Services/CreatesTransport.php new file mode 100644 index 00000000..53981bd8 --- /dev/null +++ b/app/Classes/Modules/Transports/Services/CreatesTransport.php @@ -0,0 +1,33 @@ +type = $object->getType(); + $model->courier = $object->getCourier(); + $model->tracking_number = $object->getTrackingNumber(); + $model->dispatch_date = $object->getDispatchDate(); + $model->drop_date = $object->getDropDate(); + $model->status = $object->getStatus(); + + return $this->handler($containerPackingList->transports(), $model); + + } +} diff --git a/app/Classes/Modules/Transports/Services/DeletesTransport.php b/app/Classes/Modules/Transports/Services/DeletesTransport.php new file mode 100644 index 00000000..b75d7db3 --- /dev/null +++ b/app/Classes/Modules/Transports/Services/DeletesTransport.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/Transports/Services/FetchesTransport.php b/app/Classes/Modules/Transports/Services/FetchesTransport.php new file mode 100644 index 00000000..2d507237 --- /dev/null +++ b/app/Classes/Modules/Transports/Services/FetchesTransport.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Transports/Services/ListsTransports.php b/app/Classes/Modules/Transports/Services/ListsTransports.php new file mode 100644 index 00000000..904dab0f --- /dev/null +++ b/app/Classes/Modules/Transports/Services/ListsTransports.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} diff --git a/app/Classes/Modules/Transports/Services/UpdatesTransport.php b/app/Classes/Modules/Transports/Services/UpdatesTransport.php new file mode 100644 index 00000000..4172a3db --- /dev/null +++ b/app/Classes/Modules/Transports/Services/UpdatesTransport.php @@ -0,0 +1,30 @@ +type = $object->getType(); + $model->courier = $object->getCourier(); + $model->tracking_number = $object->getTrackingNumber(); + $model->dispatch_date = $object->getDispatchDate(); + $model->drop_date = $object->getDropDate(); + $model->status = $object->getStatus(); + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php b/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php new file mode 100644 index 00000000..a7e41ea1 --- /dev/null +++ b/app/Classes/Modules/Transports/Standards/Rules/CanCreateTransport.php @@ -0,0 +1,57 @@ +TransportValidation = $TransportValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param TransportObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->TransportValidation->validate($object); + + } + + + /** + * @param TransportObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php b/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php new file mode 100644 index 00000000..1d1e94ab --- /dev/null +++ b/app/Classes/Modules/Transports/Standards/Rules/CanDeleteTransport.php @@ -0,0 +1,43 @@ +TransportValidation = $TransportValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param TransportObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->TransportValidation->validate($object); + + } + + + /** + * @param TransportObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Transports/Standards/Validators/TransportValidation.php b/app/Classes/Modules/Transports/Standards/Validators/TransportValidation.php new file mode 100644 index 00000000..daefb5dd --- /dev/null +++ b/app/Classes/Modules/Transports/Standards/Validators/TransportValidation.php @@ -0,0 +1,47 @@ + $object->getType(), + 'courier' => $object->getCourier(), + 'tracking_number' => $object->getTrackingNumber(), + 'dispacth_date' => $object->getDispatchDate(), + 'drop_date' => $object->getDropDate(), + 'status' => $object->getStatus(), + ]; + } + + /** + * @return array + */ + protected function rules(): array { + return [ + 'type' => 'required', + 'courier' => 'required', + 'tracking_number' => 'required', + 'status' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array { + return []; + } + +} diff --git a/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php b/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php new file mode 100644 index 00000000..70756d75 --- /dev/null +++ b/app/Classes/Modules/Unity/Processors/CreateContractProcessor.php @@ -0,0 +1,21 @@ +getContractObligations = $getContractObligations; + } + + public function execute(){ + return $this->getContractObligations->execute(); + } +} diff --git a/app/Classes/Modules/Unity/Processors/CreateEntityProcessor.php b/app/Classes/Modules/Unity/Processors/CreateEntityProcessor.php new file mode 100644 index 00000000..ccffb96b --- /dev/null +++ b/app/Classes/Modules/Unity/Processors/CreateEntityProcessor.php @@ -0,0 +1,21 @@ +createsEntity = $createsEntity; + } + + public function execute($entity_name){ + return $this->createsEntity->execute($entity_name); + } +} 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/Processors/UpdateObligationStatus.php b/app/Classes/Modules/Unity/Processors/UpdateObligationStatus.php new file mode 100644 index 00000000..951b52fb --- /dev/null +++ b/app/Classes/Modules/Unity/Processors/UpdateObligationStatus.php @@ -0,0 +1,21 @@ +getContractObligations = $getContractObligations; + } + + public function execute(){ + return $this->getContractObligations->execute(); + } +} diff --git a/app/Classes/Modules/Unity/Services/CreatesEntity.php b/app/Classes/Modules/Unity/Services/CreatesEntity.php new file mode 100644 index 00000000..d6dc7d7f --- /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 : null; + + } +} diff --git a/app/Classes/Modules/Unity/Services/GetAccessToken.php b/app/Classes/Modules/Unity/Services/GetAccessToken.php index 353389ed..fe1e78be 100644 --- a/app/Classes/Modules/Unity/Services/GetAccessToken.php +++ b/app/Classes/Modules/Unity/Services/GetAccessToken.php @@ -21,7 +21,7 @@ class GetAccessToken $accesToken=''; if($this->unityConfig['default_auth']=='login'){ $loginDetails = $this->unityConfig['auth']['login']; - $response = Http::post($this->unityConfig['url'].$loginDetails['endpoint'], [ + $response = Http::post($this->unityConfig['url'].$this->unityConfig['endpoint']['login'], [ 'email' => $loginDetails['username'], 'password' => $loginDetails['password'], ])->object(); diff --git a/app/Classes/Modules/Unity/Services/GetContractObligations.php b/app/Classes/Modules/Unity/Services/GetContractObligations.php index 480fee3f..fed54aa8 100644 --- a/app/Classes/Modules/Unity/Services/GetContractObligations.php +++ b/app/Classes/Modules/Unity/Services/GetContractObligations.php @@ -8,13 +8,14 @@ use App\Classes\Modules\Unity\Services\GetAccessToken; class GetContractObligations { - private $unityConfig; + private $getContractObligationsEndpoint; private $getAccessToken; public function __construct(GetAccessToken $getAccessToken) { - $this->unityConfig = Config::get('unity'); + $this->getContractObligationsEndpoint = Config::get('unity.url').Config::get('unity.get_ob_endpoint'); + $this->getAccessToken = $getAccessToken; } @@ -22,8 +23,7 @@ class GetContractObligations $accesToken=$this->getAccessToken->execute(); - $response = Http::withToken($accesToken)->get($this->unityConfig['url'].$this->unityConfig['steps_endpoint'])->object(); - $orderSteps = []; + $response = Http::withToken($accesToken)->get($this->getContractObligationsEndpoint)->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/Packages/CreatePackageController.php b/app/Http/Controllers/Packages/CreatePackageController.php new file mode 100644 index 00000000..458936fa --- /dev/null +++ b/app/Http/Controllers/Packages/CreatePackageController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/DeletePackageController.php b/app/Http/Controllers/Packages/DeletePackageController.php new file mode 100644 index 00000000..a39a9cc2 --- /dev/null +++ b/app/Http/Controllers/Packages/DeletePackageController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/FetchPackageController.php b/app/Http/Controllers/Packages/FetchPackageController.php new file mode 100644 index 00000000..b3c1db46 --- /dev/null +++ b/app/Http/Controllers/Packages/FetchPackageController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/ListPackagesController.php b/app/Http/Controllers/Packages/ListPackagesController.php new file mode 100644 index 00000000..30367587 --- /dev/null +++ b/app/Http/Controllers/Packages/ListPackagesController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/PackageItems/CreatePackageItemController.php b/app/Http/Controllers/Packages/PackageItems/CreatePackageItemController.php new file mode 100644 index 00000000..4334e044 --- /dev/null +++ b/app/Http/Controllers/Packages/PackageItems/CreatePackageItemController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/PackageItems/DeletePackageItemController.php b/app/Http/Controllers/Packages/PackageItems/DeletePackageItemController.php new file mode 100644 index 00000000..3e2e9ea5 --- /dev/null +++ b/app/Http/Controllers/Packages/PackageItems/DeletePackageItemController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/PackageItems/FetchPackageItemController.php b/app/Http/Controllers/Packages/PackageItems/FetchPackageItemController.php new file mode 100644 index 00000000..c2e808b2 --- /dev/null +++ b/app/Http/Controllers/Packages/PackageItems/FetchPackageItemController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/PackageItems/ListPackageItemsController.php b/app/Http/Controllers/Packages/PackageItems/ListPackageItemsController.php new file mode 100644 index 00000000..9f701bf9 --- /dev/null +++ b/app/Http/Controllers/Packages/PackageItems/ListPackageItemsController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/PackageItems/UpdatePackageItemController.php b/app/Http/Controllers/Packages/PackageItems/UpdatePackageItemController.php new file mode 100644 index 00000000..1406f45f --- /dev/null +++ b/app/Http/Controllers/Packages/PackageItems/UpdatePackageItemController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Packages/UpdatePackageController.php b/app/Http/Controllers/Packages/UpdatePackageController.php new file mode 100644 index 00000000..6c945c30 --- /dev/null +++ b/app/Http/Controllers/Packages/UpdatePackageController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php new file mode 100644 index 00000000..257128c9 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php new file mode 100644 index 00000000..25cb6bb8 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php new file mode 100644 index 00000000..0fecdb0a --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php b/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php new file mode 100644 index 00000000..12c01a28 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php new file mode 100644 index 00000000..eac24070 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/CreatePackingListController.php b/app/Http/Controllers/PackingLists/CreatePackingListController.php new file mode 100644 index 00000000..c0cec426 --- /dev/null +++ b/app/Http/Controllers/PackingLists/CreatePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/DeletePackingListController.php b/app/Http/Controllers/PackingLists/DeletePackingListController.php new file mode 100644 index 00000000..7bf70f04 --- /dev/null +++ b/app/Http/Controllers/PackingLists/DeletePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/FetchPackingListController.php b/app/Http/Controllers/PackingLists/FetchPackingListController.php new file mode 100644 index 00000000..0c2e3afb --- /dev/null +++ b/app/Http/Controllers/PackingLists/FetchPackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/ListPackingListsController.php b/app/Http/Controllers/PackingLists/ListPackingListsController.php new file mode 100644 index 00000000..d006c892 --- /dev/null +++ b/app/Http/Controllers/PackingLists/ListPackingListsController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/UpdatePackingListController.php b/app/Http/Controllers/PackingLists/UpdatePackingListController.php new file mode 100644 index 00000000..008b1b2a --- /dev/null +++ b/app/Http/Controllers/PackingLists/UpdatePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/Remarks/CreateRemarkController.php b/app/Http/Controllers/Remarks/CreateRemarkController.php new file mode 100644 index 00000000..a66aa8fd --- /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..8d0163c0 --- /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..ba43be07 --- /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..3dd98051 --- /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..ae53f6b7 --- /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..96bbfeda --- /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..d47bb7d2 --- /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..af3f7203 --- /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..edc6563a --- /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..43b931dc --- /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..e1852f4a --- /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..e1ff8e66 --- /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..33df3c38 --- /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..cc704684 --- /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..a475d96b --- /dev/null +++ b/app/Http/Controllers/Transports/UpdateTransportController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Resources/ContainerPackingListResource.php b/app/Http/Resources/ContainerPackingListResource.php new file mode 100644 index 00000000..b98b5f00 --- /dev/null +++ b/app/Http/Resources/ContainerPackingListResource.php @@ -0,0 +1,25 @@ + $this->id, + 'packing_list_id' => $this->packing_list_id, + 'container_reference' => $this->container_reference, + 'container_type' => $this->container_type, + 'seal_reference' => $this->seal_reference, + ]; + } +} diff --git a/app/Http/Resources/PackageItemResource.php b/app/Http/Resources/PackageItemResource.php new file mode 100644 index 00000000..02be692c --- /dev/null +++ b/app/Http/Resources/PackageItemResource.php @@ -0,0 +1,30 @@ + $this->id, + 'package_id' => $this->package_id, + 'name' => $this->name, + 'reference' => $this->reference, + 'description' => $this->description, + 'quantity' => $this->quantity, + 'uom' => $this->uom, + 'price' => $this->price, + 'total' => $this->total, + 'status' => $this->status, + ]; + } +} diff --git a/app/Http/Resources/PackageResource.php b/app/Http/Resources/PackageResource.php new file mode 100644 index 00000000..0c1530b8 --- /dev/null +++ b/app/Http/Resources/PackageResource.php @@ -0,0 +1,31 @@ + $this->id, + 'order_id' => $this->order_id, + 'claimant_id' => $this->claimant_id, + 'type' => $this->type, + 'description' => $this->description, + 'width' => $this->width, + 'height' => $this->height, + 'length' => $this->length, + 'weight' => $this->weight, + 'quantity' => $this->quantity, + 'status' => $this->status, + ]; + } +} diff --git a/app/Http/Resources/PackingListResource.php b/app/Http/Resources/PackingListResource.php new file mode 100644 index 00000000..a143d523 --- /dev/null +++ b/app/Http/Resources/PackingListResource.php @@ -0,0 +1,23 @@ + $this->id, + 'reference' => $this->reference, + 'status' => $this->status, + ]; + } +} diff --git a/app/Http/Resources/RemarkResource.php b/app/Http/Resources/RemarkResource.php new file mode 100644 index 00000000..d5f93d79 --- /dev/null +++ b/app/Http/Resources/RemarkResource.php @@ -0,0 +1,23 @@ + $this->id, + 'commenter_id' => $this->commenter_id, + 'content' => $this->content, + ]; + } +} diff --git a/app/Http/Resources/ScheduleResource.php b/app/Http/Resources/ScheduleResource.php new file mode 100644 index 00000000..702fb642 --- /dev/null +++ b/app/Http/Resources/ScheduleResource.php @@ -0,0 +1,24 @@ + $this->id, + 'etd' => $this->etd, + 'eta' => $this->eta, + 'status' => $this->status, + ]; + } +} diff --git a/app/Http/Resources/TransportResource.php b/app/Http/Resources/TransportResource.php new file mode 100644 index 00000000..86e894cf --- /dev/null +++ b/app/Http/Resources/TransportResource.php @@ -0,0 +1,27 @@ + $this->id, + 'type' => $this->type, + 'courier' => $this->courier, + 'tracking_number' => $this->tracking_number, + 'dispatch_date' => $this->dispatch_date, + 'drop_date' => $this->drop_date, + 'status' => $this->status, + ]; + } +} 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..4aa74c4b --- /dev/null +++ b/app/Models/ContainerPackingList.php @@ -0,0 +1,27 @@ +hasMany(PackingList::class, 'packing_list_id', 'id'); + } + + /** + * @return MorphMany + */ + public function transports(): morphMany + { + return $this->morphMany(Transport::class, 'owner'); + } +} 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..edca8c38 --- /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, 'packing_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..8d8f1f95 --- /dev/null +++ b/app/Models/Schedule.php @@ -0,0 +1,24 @@ +morphTo(); + } + + public function transport(): BelongsTo + { + return $this->BelongsTo(Transport::class, 'transport_id', 'id'); + } +} diff --git a/app/Models/Transport.php b/app/Models/Transport.php new file mode 100644 index 00000000..ce83dc56 --- /dev/null +++ b/app/Models/Transport.php @@ -0,0 +1,31 @@ +morphTo(); + } + + /** + * @return MorphMany + */ + public function schedules(): morphMany + { + return $this->morphMany(Schedule::class, 'owner'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 33da7042..dccda6d2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -73,4 +73,12 @@ class User extends AbstractModel implements { return $this->morphMany(Contact::class, 'owner'); } + + /** + * @return MorphMany + */ + public function remarks(): morphMany + { + return $this->morphMany(Remark::class, 'owner'); + } } diff --git a/config/unity.php b/config/unity.php index 7d3ea452..7408dc8c 100644 --- a/config/unity.php +++ b/config/unity.php @@ -1,9 +1,22 @@ env('UNITY_API_URL', 'https://dev.unity.izyim.com/user-backsys/api/'), + 'endpoint' => [ + 'login' => env('UNITY_LOGIN_ENDPOINT','login'), + 'create_entity' => env('UNITY_CREATE_ENTITY_ENDPOINT','entity/store'), + 'get_contract_obligations' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), + 'create_contract' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), + 'update_obligation_status' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), + ], + + 'default_auth' => env('UNITY_AUTH','login'), + 'auth' => [ 'api_key' => [ @@ -13,30 +26,28 @@ return [ 'login' => [ 'username' => env('UNITY_LOGIN_USERNAME','one@izyim.com'), 'password' => env('UNITY_LOGIN_PASSWORD','pass123'), - 'endpoint' => env('UNITY_LOGIN_ENDPOINT','login') ], ], - 'steps_endpoint' => env('UNITY_LOGIN_ENDPOINT','contract-template-obligation/list'), + 'get_ob_endpoint' => env('UNITY_OB_LIST_ENDPOINT','contract-template-obligation/list'), - 'default_auth' => env('UNITY_AUTH','login'), + 'create_entity_endpoint' => env('UNITY_CREATE_ENTITY_ENDPOINT','entity/store'), 'on_error_email' => env('UNITY_ON_ERROR_EMAIL','dev@shipping.com,dev@unity.com'), 'contract_template_id' => env('UNITY_CONTRACT_TEMPLATE_ID', 102), + 'contract_template_hash_id' => env('UNITY_CONTRACT_TEMPLATE_HASH_ID', '5lpn70mA2VmgxoekgYrJ'), + 'contract_template_cache' => env('UNITY_CONTRACT_TEMPLATE_CACHE','60'), - 'entity' => [ - 'xxx' => App\Classes\ValueObjects\Constants\OrderEntity::SUPPLIER, - 'zzz' => App\Classes\ValueObjects\Constants\OrderEntity::WAREHOUSE_YIWU, - 'vvv' => App\Classes\ValueObjects\Constants\OrderEntity::WAREHOUSE_GUANG_ZHOU, - 'wwww' => App\Classes\ValueObjects\Constants\OrderEntity::SUPPLIER, + 'obligations' => [ + 'PACKING' => Constant\OrderSteps::PACKING, ], - 'step_processor' => [ - App\Classes\ValueObjects\Constants\OrderSteps::PACKING => App\Classes\Modules\OrderSteps\Processors\Steps\Packing::class, + 'step_processors' => [ + Constant\OrderSteps::PACKING => Step\Packing::class, ], ]; diff --git a/database/migrations/2021_07_05_115638_create_banks_table.php b/database/migrations/2021_07_05_115638_create_banks_table.php new file mode 100644 index 00000000..6b416d79 --- /dev/null +++ b/database/migrations/2021_07_05_115638_create_banks_table.php @@ -0,0 +1,50 @@ +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..a21244ea --- /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()->nullable(true); + $table->integer('type')->default(0); + + $table->string('description',45)->nullable(true); + + $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..9f98061f --- /dev/null +++ b/database/migrations/2021_07_21_110240_create_container_packing_lists_table.php @@ -0,0 +1,38 @@ +id(); + $table->bigInteger('packing_list_id')->unsigned()->index(); + $table->string('container_reference',45); + $table->integer('container_type'); + $table->string('seal_reference',45); + $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..c01bbe62 --- /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('dispatch_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/database/migrations/2021_07_22_145827_modify_company_table.php b/database/migrations/2021_07_22_145827_modify_company_table.php new file mode 100644 index 00000000..59bc2b9e --- /dev/null +++ b/database/migrations/2021_07_22_145827_modify_company_table.php @@ -0,0 +1,30 @@ +string('unity_hash_id',200)->nullable()->after('status'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/seeders/CompaniesTableSeeder.php b/database/seeders/CompaniesTableSeeder.php index 8593efa4..fcb6a33a 100644 --- a/database/seeders/CompaniesTableSeeder.php +++ b/database/seeders/CompaniesTableSeeder.php @@ -22,6 +22,13 @@ class CompaniesTableSeeder extends Seeder { $companies = [ + [ + 'id' => 1, //Reserve ID + 'name' => 'CIEF SDN BHD', + 'reference' => 'CIEF', + 'type' => CompanyType::COMPANY_BUSINESS, + 'status' => ApprovalStatus::APPROVED, + ], [ 'name' => 'Guang Zhou', 'reference' => 'guangzhouwarehouse', @@ -42,13 +49,18 @@ class CompaniesTableSeeder extends Seeder $company = Company::create($company); - CompanyModule::create( - [ - 'company_id' => $company->id, - 'type' => BusinessType::WAREHOUSE, - 'status' => ApprovalStatus::APPROVED, - ] - ); + $companyModule = [ + 'company_id' => $company->id, + 'type' => BusinessType::WAREHOUSE, + 'status' => ApprovalStatus::APPROVED, + ]; + + if($company['reference']=='CIEF'){ + $companyModule['id']= 1; //Reserve ID + $companyModule['type']=BusinessType::FREIGHT_FORWARDER; + } + + CompanyModule::create($companyModule); } } } diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index 36b0abd8..2a23ab93 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -1,944 +1,3177 @@ { -"swagger": "2.0", -"info": { -"description": "Shipping Portal to manage parcel", -"version": "1.0.0", -"title": "Shipping Portal" -}, -"host": "{{request()->getHttpHost()}}", -"basePath": "/api/v1", -"tags": [ -{ -"name": "Account", -"description": "Endpoints related to user module, e.g. login, register." -}, -{ -"name": "Address", -"description": "Endpoints related to address module, e.g. create, district." -}, -{ -"name": "Company", -"description": "Endpoints related to company module." -}, -{ -"name": "Order", -"description": "Endpoints related to order module." -}, -{ -"name": "Flow - Registration", -"description": "Endpoints related to registration flow." -} -], -"schemes": [ -"http", -"https" -], -"paths": { -"/order/create": { -"post": { -"tags": [ -"Order" -], -"produces": [ -"application/json" -], -"operationId": "createOrder", -"summary": "Create order", -"description": "", -"parameters": [ -{ -"name": "company_module_id", -"in": "query", -"description": "Company Module ID", -"required": true, -"type": "integer" -}, -{ -"name": "reference", -"in": "query", -"description": "Internal reference id", -"required": true, -"type": "string" -}, -{ -"name": "reference_contract", -"in": "query", -"description": "Unity contract reference id", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/order/confirm/{id}": { -"put": { -"tags": [ -"Order" -], -"produces": [ -"application/json" -], -"operationId": "confirmOrder", -"summary": "Admin confirms order", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Order ID", -"required": true, -"type": "integer" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/order/{id}/step/completes": { -"post": { -"tags": [ -"Order" -], -"produces": [ -"application/json" -], -"operationId": "createOrder", -"summary": "Completes order step", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Order Id", -"required": true, -"type": "integer" -}, -{ -"name": "reference", -"in": "query", -"description": "Order step reference", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/create": { -"post": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "createAddress", -"summary": "Create address", -"description": "", -"parameters": [ -{ -"name": "district_id", -"in": "query", -"description": "District id", -"required": true, -"type": "integer" -}, -{ -"name": "street_one", -"in": "query", -"description": "Address line 1", -"required": true, -"type": "string" -}, -{ -"name": "street_two", -"in": "query", -"description": "Address line 2", -"required": true, -"type": "string" -}, -{ -"name": "post_code", -"in": "query", -"description": "Postcode of the address", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/delete/{id}": { -"delete": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "deleteAddress", -"summary": "Delete address", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "District id", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/district/list": { -"get": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "listDistrictAddress", -"summary": "List districts", -"description": "", -"parameters": [ -{ -"name": "filter", -"in": "query", -"description": "Filters", -"required": false, -"type": "array", -"items": { -"type": "string" -} -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/list": { -"get": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "listAddress", -"summary": "List addresses of logged in user", -"description": "", -"parameters": [ -{ -"name": "filter", -"in": "query", -"description": "Filters", -"required": false, -"type": "array", -"items": { -"type": "string" -} -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/{id}/show": { -"get": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "showAddress", -"summary": "List addresses of logged in user", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Address id", -"required": true, -"type": "integer" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/{id}/default": { -"put": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "setDefaultAddress", -"summary": "Set default address", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Address id", -"required": true, -"type": "integer" -}, -{ -"name": "district_id", -"in": "query", -"description": "District id", -"required": true, -"type": "integer" -}, -{ -"name": "street_one", -"in": "query", -"description": "Address line 1", -"required": true, -"type": "string" -}, -{ -"name": "street_two", -"in": "query", -"description": "Address line 2", -"required": true, -"type": "string" -}, -{ -"name": "post_code", -"in": "query", -"description": "Postcode of the address", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/address/update/{id}": { -"put": { -"tags": [ -"Address" -], -"produces": [ -"application/json" -], -"operationId": "setDefaultAddress", -"summary": "Set default address", -"description": "", -"parameters": [ -{ -"name": "id", -"in": "path", -"description": "Address id", -"required": true, -"type": "integer" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"422": { -"description": "Invalid input supplied" -} -} -} -}, -"/account/authentication/login/check_email": { -"post": { -"tags": [ -"Account", -"Flow - Registration" -], -"summary": "Check if email registered", -"description": "", -"operationId": "userList", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [ -{ -"name": "email", -"in": "query", -"description": "email", -"required": true, -"type": "string" -} -], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/account/registration/registration": { -"post": { -"tags": [ -"Account", -"Flow - Registration" -], -"produces": [ -"application/json" -], -"summary": "Register user into the system", -"description": "", -"parameters": [ -{ -"name": "name", -"in": "query", -"description": "The name of user", -"required": true, -"type": "string" -}, -{ -"name": "email", -"in": "query", -"description": "The email for login", -"required": true, -"type": "string", -"format": "email" -}, -{ -"name": "password", -"in": "query", -"description": "The password for login", -"required": true, -"type": "string", -"format": "password" -}, -{ -"name": "password_confirmation", -"in": "query", -"description": "The confirmation password for login", -"required": true, -"type": "string", -"format": "password" -}, -{ -"name": "type", -"in": "query", -"description": "Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1", -"required": true, -"type": "integer" -}, -{ -"name": "phone", -"in": "query", -"description": "Contact phone number", -"required": true, -"type": "string" -}, -{ -"name": "contact_email", -"in": "query", -"description": "Contact email", -"required": true, -"type": "string" -}, -{ -"name": "company_name", -"in": "query", -"description": "The company name - if not defined , name of user will save as the company name", -"required": false, -"type": "string" -}, -{ -"name": "business_type", -"in": "query", -"description": "Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4", -"required": false, -"default": 2, -"type": "integer" -}, -{ -"name": "wechat_id", -"in": "query", -"description": "Contact Wechat id", -"required": false, -"type": "string" -}, -{ -"name": "files[0]", -"in": "query", -"description": "File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';", -"required": true, -"type": "string" -}, -{ -"name": "identification_no", -"in": "query", -"description": "Personal identification no or company registration no", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"400": { -"description": "Invalid username/password supplied" -} -} -} -}, -"/account/authentication/login/attempt": { -"post": { -"tags": [ -"Account" -], -"produces": [ -"application/json" -], -"summary": "Logs user into the system", -"operationId": "aaa", -"description": "", -"parameters": [ -{ -"name": "email", -"in": "query", -"description": "The user name for login", -"required": true, -"type": "string" -}, -{ -"name": "password", -"in": "query", -"description": "The password for login in clear text", -"required": true, -"type": "string" -} -], -"responses": { -"200": { -"description": "successful operation", -"headers": { -"X-Expires-After": { -"type": "string", -"format": "date-time", -"description": "date in UTC when token expires" -}, -"X-Rate-Limit": { -"type": "integer", -"format": "int32", -"description": "calls per hour allowed by the user" -} -}, -"schema": { -"type": "string" -} -}, -"400": { -"description": "Invalid username/password supplied" -} -} -} -}, -"/account/authentication/logout": { -"get": { -"tags": [ -"Account" -], -"summary": "Logs out current logged in user session", -"description": "", -"operationId": "logoutUser", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/account/user/list": { -"get": { -"tags": [ -"Account" -], -"summary": "Logs out current logged in user session", -"description": "", -"operationId": "userList", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/company/list": { -"get": { -"tags": [ -"Company" -], -"summary": "List of Companies", -"description": "example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)", -"operationId": "companyList", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [ -{ -"name": "filters", -"in": "query", -"description": "Eloquent Filter", -"required": false, -"type": "array", -"items": { -"type": "string" -} -} -], -"responses": { -"default": { -"description": "successful operation" -} -} -} -}, -"/company/create": { -"post": { -"tags": [ -"Company" -], -"summary": "Create company", -"description": "", -"operationId": "companyCreate", -"produces": [ -"application/json", -"application/xml" -], -"parameters": [ -{ -"name": "type", -"in": "query", -"description": "Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1", -"required": true, -"type": "integer", -"enum": [ -0, -1 -] -}, -{ -"name": "business_type", -"in": "query", -"description": "Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4", -"required": true, -"type": "integer", -"enum": [ -1, -2, -3, -4 -] -}, -{ -"name": "name", -"in": "query", -"description": "Fill in name if type = 0", -"required": false, -"type": "string" -}, -{ -"name": "name", -"in": "query", -"description": "Fill in name if type = 0", -"required": false, -"type": "string" -}, -{ -"name": "company_name", -"in": "query", -"description": "Fill in company_name if type = 1", -"required": false, -"type": "string" -} -], -"responses": { -"default": { -"description": "successful operation" -} -} -} -} -}, -"securityDefinitions": { -"Authorization": { -"type": "apiKey", -"name": "api_key", -"in": "header" -}, -"petstore_auth": { -"type": "oauth2", -"authorizationUrl": "https://petstore.swagger.io/oauth/authorize", -"flow": "implicit", -"scopes": { -"read:pets": "read your pets", -"write:pets": "modify pets in your account" -} -} -}, -"definitions": { -"ApiResponse": { -"type": "object", -"properties": { -"code": { -"type": "integer", -"format": "int32" -}, -"title": { -"type": "string" -}, -"message": { -"type": "string" -}, -"payload": { -"type": "object" -} -} -} -} + "swagger": "2.0", + "info": { + "description": "Shipping Portal to manage parcel", + "version": "1.0.0", + "title": "Shipping Portal" + }, + "host": "{{request()->getHttpHost()}}", + "basePath": "/api/v1", + "tags": [ + { + "name": "Account", + "description": "Endpoints related to user module, e.g. login, register." + }, + { + "name": "Address", + "description": "Endpoints related to address module, e.g. create, district." + }, + { + "name": "Bank", + "description": "Endpoints related to bank module." + }, + { + "name": "Company", + "description": "Endpoints related to company module." + }, + { + "name": "Order", + "description": "Endpoints related to order module." + }, + { + "name": "Package", + "description": "Endpoints related to package module." + }, + { + "name": "Packing", + "description": "Endpoints related to packing module." + }, + { + "name": "Transport", + "description": "Endpoints related to transport module." + }, + { + "name": "Schedule", + "description": "Endpoints related to schedule module." + }, + { + "name": "Remark", + "description": "Endpoints related to remark module." + }, + { + "name": "Flow - Registration", + "description": "Endpoints related to registration flow." + } + ], + "schemes": [ + "http", + "https" + ], + "paths": { + "/packing_list/create": { + "post": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "createPacking", + "summary": "Create packing", + "description": "", + "parameters": [ + { + "name": "package_id", + "in": "query", + "description": "Package Id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/list": { + "get": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "listPacking", + "summary": "List packing", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/{id}/show": { + "get": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "showPacking", + "summary": "Show packing", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/update/{id}": { + "put": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "updatePacking", + "summary": "Update packing", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Packing list id", + "required": true, + "type": "integer" + }, + { + "name": "status", + "in": "query", + "description": "Status", + "required": true, + "type": "integer" + }, + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/delete/{id}": { + "delete": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "deletePacking", + "summary": "Delete packing", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/container/create": { + "post": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "createContainerPackingList", + "summary": "Create container packing list", + "description": "", + "parameters": [ + { + "name": "packing_list_id", + "in": "query", + "description": "Packing list id", + "required": true, + "type": "integer" + }, + { + "name": "container_reference", + "in": "query", + "description": "Container reference", + "required": true, + "type": "string" + }, + { + "name": "container_type", + "in": "query", + "description": "Container type", + "required": true, + "type": "integer" + }, + { + "name": "seal_reference", + "in": "query", + "description": "Seal reference", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/container/list": { + "get": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "containerListPacking", + "summary": "Container list packing", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/container/{id}/show": { + "get": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "showContainerPacking", + "summary": "Show container packing list", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Container packing list id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/container/update/{id}": { + "put": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "updateContainerPacking", + "summary": "Update packing", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Container packing list id", + "required": true, + "type": "integer" + }, + { + "name": "packing_list_id", + "in": "query", + "description": "Packing list id", + "required": true, + "type": "integer" + }, + { + "name": "container_reference", + "in": "query", + "description": "Container reference", + "required": true, + "type": "string" + }, + { + "name": "container_type", + "in": "query", + "description": "Container type", + "required": true, + "type": "integer" + }, + { + "name": "seal_reference", + "in": "query", + "description": "Seal reference", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/packing_list/container/delete/{id}": { + "delete": { + "tags": [ + "Packing" + ], + "produces": [ + "application/json" + ], + "operationId": "deleteContainerPackingList", + "summary": "Delete container packing list", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Container packing list id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/bank/create": { + "post": { + "tags": [ + "Bank" + ], + "produces": [ + "application/json" + ], + "operationId": "createBank", + "summary": "Create bank", + "description": "", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "Transport type", + "required": true, + "type": "integer" + }, + { + "name": "courier", + "in": "query", + "description": "Courier Provider Name", + "required": true, + "type": "string" + }, + { + "name": "tracking_number", + "in": "query", + "description": "Tracking No.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/bank/list": { + "get": { + "tags": [ + "Bank" + ], + "produces": [ + "application/json" + ], + "operationId": "listBank", + "summary": "List bank account", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/bank/{id}/show": { + "get": { + "tags": [ + "Bank" + ], + "produces": [ + "application/json" + ], + "operationId": "showBank", + "summary": "Show bank account", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/bank/update/{id}": { + "put": { + "tags": [ + "Bank" + ], + "produces": [ + "application/json" + ], + "operationId": "updateBank", + "summary": "Update bank", + "description": "", + "parameters": [ + { + "name": "id", + "in": "query", + "description": "transport id", + "required": true, + "type": "integer" + }, + { + "name": "commenter_id", + "in": "query", + "description": "Commenter id", + "required": true, + "type": "integer" + }, + { + "name": "comment", + "in": "query", + "description": "Comment", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/bank/delete/{id}": { + "delete": { + "tags": [ + "Bank" + ], + "produces": [ + "application/json" + ], + "operationId": "deleteBank", + "summary": "Delete bank", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Bank id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/create": { + "post": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "createPackage", + "summary": "Create package", + "description": "", + "parameters": [ + { + "name": "order_id", + "in": "query", + "description": "Order Id", + "required": true, + "type": "integer" + }, + { + "name": "description", + "in": "query", + "description": "Description", + "required": false, + "type": "string" + }, + { + "name": "type", + "in": "query", + "description": "Package type", + "required": true, + "type": "integer" + }, + { + "name": "width", + "in": "query", + "description": "Width", + "required": true, + "type": "number" + }, + { + "name": "height", + "in": "query", + "description": "Height", + "required": true, + "type": "number" + }, + { + "name": "length", + "in": "query", + "description": "Length", + "required": true, + "type": "number" + }, + { + "name": "weight", + "in": "query", + "description": "Weight", + "required": true, + "type": "number" + }, + { + "name": "quantity", + "in": "query", + "description": "Quantity", + "required": true, + "type": "integer" + }, + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/list": { + "get": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "listPackage", + "summary": "List package", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/{id}/show": { + "get": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "showPackage", + "summary": "Show package", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/update/{id}": { + "put": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "updatePackage", + "summary": "Update package", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package id", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "Description", + "required": false, + "type": "string" + }, + { + "name": "type", + "in": "query", + "description": "Package type", + "required": true, + "type": "integer" + }, + { + "name": "width", + "in": "query", + "description": "Width", + "required": true, + "type": "number" + }, + { + "name": "height", + "in": "query", + "description": "Height", + "required": true, + "type": "number" + }, + { + "name": "length", + "in": "query", + "description": "Length", + "required": true, + "type": "number" + }, + { + "name": "weight", + "in": "query", + "description": "Weight", + "required": true, + "type": "number" + }, + { + "name": "quantity", + "in": "query", + "description": "Quantity", + "required": true, + "type": "integer" + }, + { + "name": "status", + "in": "query", + "description": "Status", + "required": true, + "type": "integer" + }, + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/delete/{id}": { + "delete": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "deletePackage", + "summary": "Delete package", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/item/create": { + "post": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "createPackageItem", + "summary": "Create package item", + "description": "", + "parameters": [ + { + "name": "package_id", + "in": "query", + "description": "Package Id", + "required": true, + "type": "integer" + }, + { + "name": "name", + "in": "query", + "description": "Name", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "Description", + "required": false, + "type": "string" + }, + { + "name": "quantity", + "in": "query", + "description": "Quantity", + "required": true, + "type": "number" + }, + { + "name": "uom", + "in": "query", + "description": "UOM", + "required": true, + "type": "string" + }, + { + "name": "price", + "in": "query", + "description": "Price", + "required": true, + "type": "number" + }, + { + "name": "total", + "in": "query", + "description": "Total", + "required": true, + "type": "number" + }, + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/item/list": { + "get": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "listPackageItem", + "summary": "List package item", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/item/{id}/show": { + "get": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "showPackageItem", + "summary": "Show package item", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package item id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/item/update/{id}": { + "put": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "updatePackageItem", + "summary": "Update package item", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package item id", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "query", + "description": "Name", + "required": true, + "type": "string" + }, + { + "name": "description", + "in": "query", + "description": "Description", + "required": false, + "type": "string" + }, + { + "name": "quantity", + "in": "query", + "description": "Quantity", + "required": true, + "type": "number" + }, + { + "name": "uom", + "in": "query", + "description": "UOM", + "required": true, + "type": "string" + }, + { + "name": "price", + "in": "query", + "description": "Price", + "required": true, + "type": "number" + }, + { + "name": "total", + "in": "query", + "description": "Total", + "required": true, + "type": "number" + }, + { + "name": "status", + "in": "query", + "description": "Status", + "required": true, + "type": "integer" + }, + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/package/item/delete/{id}": { + "delete": { + "tags": [ + "Package" + ], + "produces": [ + "application/json" + ], + "operationId": "deletePackageItem", + "summary": "Delete package item", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Package item id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/transport/create": { + "post": { + "tags": [ + "Transport" + ], + "produces": [ + "application/json" + ], + "operationId": "createTransport", + "summary": "Create transport", + "description": "", + "parameters": [ + { + "name": "container_id", + "in": "query", + "description": "Container Id", + "required": true, + "type": "integer" + }, + { + "name": "type", + "in": "query", + "description": "Transport type", + "required": true, + "type": "integer" + }, + { + "name": "courier", + "in": "query", + "description": "Courier Provider Name", + "required": true, + "type": "string" + }, + { + "name": "tracking_number", + "in": "query", + "description": "Tracking No.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/transport/list": { + "get": { + "tags": [ + "Transport" + ], + "produces": [ + "application/json" + ], + "operationId": "listTransport", + "summary": "List transport", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/transport/{id}/show": { + "get": { + "tags": [ + "Transport" + ], + "produces": [ + "application/json" + ], + "operationId": "showTransport", + "summary": "Show transport", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Transport id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/transport/update/{id}": { + "put": { + "tags": [ + "Transport" + ], + "produces": [ + "application/json" + ], + "operationId": "updateTransport", + "summary": "Update transport", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "transport id", + "required": true, + "type": "integer" + }, + { + "name": "type", + "in": "query", + "description": "Transport type", + "required": true, + "type": "integer" + }, + { + "name": "courier", + "in": "query", + "description": "Courier Provider Name", + "required": true, + "type": "string" + }, + { + "name": "tracking_number", + "in": "query", + "description": "Tracking No.", + "required": true, + "type": "string" + }, + { + "name": "dispatch_date", + "in": "query", + "description": "Dispatch date (e.g. 2021-09-01)", + "required": true, + "type": "string" + }, + { + "name": "drop_date", + "in": "query", + "description": "Drop date (e.g. 2021-09-01)", + "required": true, + "type": "string" + }, + { + "name": "status", + "in": "query", + "description": "Status", + "required": true, + "type": "integer" + }, + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/transport/delete/{id}": { + "delete": { + "tags": [ + "Transport" + ], + "produces": [ + "application/json" + ], + "operationId": "deleteTransport", + "summary": "Delete transport", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Transport id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/schedule/create": { + "post": { + "tags": [ + "Schedule" + ], + "produces": [ + "application/json" + ], + "operationId": "createSchedule", + "summary": "Create schedule", + "description": "", + "parameters": [ + { + "name": "transport_id", + "in": "query", + "description": "Transport id", + "required": true, + "type": "integer" + }, + { + "name": "etd", + "in": "query", + "description": "Estimate time deliver (e.g. 2021-09-01)", + "required": true, + "type": "string" + }, + { + "name": "eta", + "in": "query", + "description": "Estimate time arrival (e.g. 2021-09-01)", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/schedule/list": { + "get": { + "tags": [ + "Schedule" + ], + "produces": [ + "application/json" + ], + "operationId": "listSchedule", + "summary": "List schedule", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/schedule/{id}/show": { + "get": { + "tags": [ + "Schedule" + ], + "produces": [ + "application/json" + ], + "operationId": "showSchedule", + "summary": "Show schedules", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Schedule id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/schedule/update/{id}": { + "put": { + "tags": [ + "Schedule" + ], + "produces": [ + "application/json" + ], + "operationId": "updateSchedule", + "summary": "Update schedule", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Schedule id", + "required": true, + "type": "integer" + }, + { + "name": "etd", + "in": "query", + "description": "Estimate time deliver (e.g. 2021-09-01)", + "required": true, + "type": "string" + }, + { + "name": "eta", + "in": "query", + "description": "Estimate time arrival (e.g. 2021-09-01)", + "required": true, + "type": "string" + }, + { + "name": "status", + "in": "query", + "description": "Status", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/schedule/delete/{id}": { + "delete": { + "tags": [ + "Schedule" + ], + "produces": [ + "application/json" + ], + "operationId": "deleteSchedule", + "summary": "Delete schedule", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Schedule id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/remark/create": { + "post": { + "tags": [ + "Remark" + ], + "produces": [ + "application/json" + ], + "operationId": "createRemark", + "summary": "Create remark", + "description": "", + "parameters": [ + { + "name": "commenter_id", + "in": "query", + "description": "Commenter id", + "required": true, + "type": "integer" + }, + { + "name": "content", + "in": "query", + "description": "Content", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/remark/update/{id}": { + "put": { + "tags": [ + "Remark" + ], + "produces": [ + "application/json" + ], + "operationId": "updateRemark", + "summary": "Update remark", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Remark id", + "required": true, + "type": "string" + }, + { + "name": "commenter_id", + "in": "query", + "description": "Commenter id", + "required": true, + "type": "integer" + }, + { + "name": "content", + "in": "query", + "description": "Content", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/remark/{id}/show": { + "get": { + "tags": [ + "Remark" + ], + "produces": [ + "application/json" + ], + "operationId": "showRemark", + "summary": "Show remarks", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Remark id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/remark/delete/{id}": { + "delete": { + "tags": [ + "Remark" + ], + "produces": [ + "application/json" + ], + "operationId": "deleteRemark", + "summary": "Delete remark", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Remark id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/remark/list": { + "get": { + "tags": [ + "Remark" + ], + "produces": [ + "application/json" + ], + "operationId": "listRemarks", + "summary": "List remarks", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/order/create": { + "post": { + "tags": [ + "Order" + ], + "produces": [ + "application/json" + ], + "operationId": "createOrder", + "summary": "Create order", + "description": "", + "parameters": [ + { + "name": "company_module_id", + "in": "query", + "description": "Company Module ID", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/order/confirm/{id}": { + "put": { + "tags": [ + "Order" + ], + "produces": [ + "application/json" + ], + "operationId": "confirmOrder", + "summary": "Admin confirms order", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Order ID", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/order/{id}/step/completes": { + "post": { + "tags": [ + "Order" + ], + "produces": [ + "application/json" + ], + "operationId": "completeOrderStep", + "summary": "Completes order step", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Order Id", + "required": true, + "type": "integer" + }, + { + "name": "reference", + "in": "query", + "description": "Order step reference", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/create": { + "post": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "createAddress", + "summary": "Create address", + "description": "", + "parameters": [ + { + "name": "district_id", + "in": "query", + "description": "District id", + "required": true, + "type": "integer" + }, + { + "name": "street_one", + "in": "query", + "description": "Address line 1", + "required": true, + "type": "string" + }, + { + "name": "street_two", + "in": "query", + "description": "Address line 2", + "required": true, + "type": "string" + }, + { + "name": "post_code", + "in": "query", + "description": "Postcode of the address", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/delete/{id}": { + "delete": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "deleteAddress", + "summary": "Delete address", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "District id", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/district/list": { + "get": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "listDistrictAddress", + "summary": "List districts", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/list": { + "get": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "listAddress", + "summary": "List addresses of logged in user", + "description": "", + "parameters": [ + { + "name": "filter", + "in": "query", + "description": "Filters", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/{id}/show": { + "get": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "showAddress", + "summary": "List addresses of logged in user", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Address id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/{id}/default": { + "put": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "setDefaultAddress", + "summary": "Set default address", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Address id", + "required": true, + "type": "integer" + }, + { + "name": "district_id", + "in": "query", + "description": "District id", + "required": true, + "type": "integer" + }, + { + "name": "street_one", + "in": "query", + "description": "Address line 1", + "required": true, + "type": "string" + }, + { + "name": "street_two", + "in": "query", + "description": "Address line 2", + "required": true, + "type": "string" + }, + { + "name": "post_code", + "in": "query", + "description": "Postcode of the address", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/address/update/{id}": { + "put": { + "tags": [ + "Address" + ], + "produces": [ + "application/json" + ], + "operationId": "updateAddress", + "summary": "Set default address", + "description": "", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Address id", + "required": true, + "type": "integer" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "422": { + "description": "Invalid input supplied" + } + } + } + }, + "/account/authentication/login/check_email": { + "post": { + "tags": [ + "Account", + "Flow - Registration" + ], + "summary": "Check if email registered", + "description": "", + "operationId": "checkEmail", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "email", + "in": "query", + "description": "email", + "required": true, + "type": "string" + } + ], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/account/registration/registration": { + "post": { + "tags": [ + "Account", + "Flow - Registration" + ], + "produces": [ + "application/json" + ], + "summary": "Register user into the system", + "description": "", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "The name of user", + "required": true, + "type": "string" + }, + { + "name": "email", + "in": "query", + "description": "The email for login", + "required": true, + "type": "string", + "format": "email" + }, + { + "name": "password", + "in": "query", + "description": "The password for login", + "required": true, + "type": "string", + "format": "password" + }, + { + "name": "password_confirmation", + "in": "query", + "description": "The confirmation password for login", + "required": true, + "type": "string", + "format": "password" + }, + { + "name": "type", + "in": "query", + "description": "Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1", + "required": true, + "type": "integer" + }, + { + "name": "phone", + "in": "query", + "description": "Contact phone number", + "required": true, + "type": "string" + }, + { + "name": "contact_email", + "in": "query", + "description": "Contact email", + "required": true, + "type": "string" + }, + { + "name": "company_name", + "in": "query", + "description": "The company name - if not defined , name of user will save as the company name", + "required": false, + "type": "string" + }, + { + "name": "business_type", + "in": "query", + "description": "Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4", + "required": false, + "default": 2, + "type": "integer" + }, + { + "name": "wechat_id", + "in": "query", + "description": "Contact Wechat id", + "required": false, + "type": "string" + }, + { + "name": "files[0]", + "in": "query", + "description": "File need to convert to base64 example : 'data:application/pdf;base64,{Base64}';", + "required": true, + "type": "string" + }, + { + "name": "identification_no", + "in": "query", + "description": "Personal identification no or company registration no", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "400": { + "description": "Invalid username/password supplied" + } + } + } + }, + "/account/authentication/login/attempt": { + "post": { + "tags": [ + "Account" + ], + "produces": [ + "application/json" + ], + "summary": "Logs user into the system", + "operationId": "aaa", + "description": "", + "parameters": [ + { + "name": "email", + "in": "query", + "description": "The user name for login", + "required": true, + "type": "string" + }, + { + "name": "password", + "in": "query", + "description": "The password for login in clear text", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "X-Expires-After": { + "type": "string", + "format": "date-time", + "description": "date in UTC when token expires" + }, + "X-Rate-Limit": { + "type": "integer", + "format": "int32", + "description": "calls per hour allowed by the user" + } + }, + "schema": { + "type": "string" + } + }, + "400": { + "description": "Invalid username/password supplied" + } + } + } + }, + "/account/authentication/logout": { + "get": { + "tags": [ + "Account" + ], + "summary": "Logs out current logged in user session", + "description": "", + "operationId": "logoutUser", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/account/user/list": { + "get": { + "tags": [ + "Account" + ], + "summary": "Logs out current logged in user session", + "description": "", + "operationId": "userList", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/company/list": { + "get": { + "tags": [ + "Company" + ], + "summary": "List of Companies", + "description": "example filters={\"WithCompanyModuleType\":4,\"order_by\":{\"column\":\"id\",\"DESC\":true}} | to get list of company with company_module.Type(business type) = 4(Warehouse)", + "operationId": "companyList", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "filters", + "in": "query", + "description": "Eloquent Filter", + "required": false, + "type": "array", + "items": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "successful operation" + } + } + } + }, + "/company/create": { + "post": { + "tags": [ + "Company" + ], + "summary": "Create company", + "description": "", + "operationId": "companyCreate", + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "name": "type", + "in": "query", + "description": "Company Type - PERSONAL_BUSINESS:0 , COMPANY_BUSINESS:1", + "required": true, + "type": "integer", + "enum": [ + 0, + 1 + ] + }, + { + "name": "business_type", + "in": "query", + "description": "Business Type - FREIGHT_FORWARDER:1, IMPORTER:2, CURRENCY_VENDOR:3, WAREHOUSE:4", + "required": true, + "type": "integer", + "enum": [ + 1, + 2, + 3, + 4 + ] + }, + { + "name": "name", + "in": "query", + "description": "Fill in name if type = 0", + "required": false, + "type": "string" + }, + { + "name": "name", + "in": "query", + "description": "Fill in name if type = 0", + "required": false, + "type": "string" + }, + { + "name": "company_name", + "in": "query", + "description": "Fill in company_name if type = 1", + "required": false, + "type": "string" + } + ], + "responses": { + "default": { + "description": "successful operation" + } + } + } + } + }, + "securityDefinitions": { + "Authorization": { + "type": "apiKey", + "name": "api_key", + "in": "header" + }, + "petstore_auth": { + "type": "oauth2", + "authorizationUrl": "https://petstore.swagger.io/oauth/authorize", + "flow": "implicit", + "scopes": { + "read:pets": "read your pets", + "write:pets": "modify pets in your account" + } + } + }, + "definitions": { + "ApiResponse": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "message": { + "type": "string" + }, + "payload": { + "type": "object" + } + } + } + } } diff --git a/routes/api.php b/routes/api.php index cf91126b..e551e9c7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -38,9 +38,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function // // require __DIR__ . '/segment.php'; // -// require __DIR__ . '/bank.php'; -// - require __DIR__ . '/order.php'; + require __DIR__ . '/bank.php'; require __DIR__ . '/currency.php'; @@ -50,6 +48,18 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function require __DIR__ . '/receipt.php'; + require __DIR__ . '/order.php'; + + require __DIR__ . '/package.php'; + + require __DIR__ . '/packinglist.php'; + + require __DIR__ . '/remark.php'; + + require __DIR__ . '/transport.php'; + + require __DIR__ . '/schedule.php'; + // require __DIR__ . '/announcement.php'; // require __DIR__ . '/wallet.php'; // require __DIR__ . '/rate.php'; 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/order.php b/routes/order.php index 738d8a21..b2e951a6 100644 --- a/routes/order.php +++ b/routes/order.php @@ -18,4 +18,4 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f }); Route::group(['prefix' => '{id}/role', 'as' => 'role.'], function () {}); -}); \ No newline at end of file +}); diff --git a/routes/package.php b/routes/package.php new file mode 100644 index 00000000..e6e15fbd --- /dev/null +++ b/routes/package.php @@ -0,0 +1,19 @@ + 'Packages', 'as' => 'package.', 'prefix' => 'package'], function () { + Route::get('/{id}/show', 'FetchPackageController@fetch')->name('show'); + Route::get('/list', 'ListPackagesController@list')->name('list'); + Route::post('/create', 'CreatePackageController@create')->name('create'); + Route::put('/update/{id}', 'UpdatePackageController@update')->name('update'); + Route::delete('/delete/{id}', 'DeletePackageController@delete')->name('delete'); + + Route::group(['namespace' => 'PackageItems', 'prefix' => 'item', 'as' => 'item.'], function () { + Route::get('/{id}/show', 'FetchPackageItemController@fetch')->name('show'); + Route::get('/list', 'ListPackageItemsController@list')->name('list'); + Route::post('/create', 'CreatePackageItemController@create')->name('create'); + Route::put('/update/{id}', 'UpdatePackageItemController@update')->name('update'); + Route::delete('/delete/{id}', 'DeletePackageItemController@delete')->name('delete'); + }); +}); diff --git a/routes/packinglist.php b/routes/packinglist.php new file mode 100644 index 00000000..838b789b --- /dev/null +++ b/routes/packinglist.php @@ -0,0 +1,19 @@ + 'PackingLists', 'as' => 'packing_list.', 'prefix' => 'packing_list'], function () { + Route::get('/{id}/show', 'FetchPackingListController@fetch')->name('show'); + Route::get('/list', 'ListPackingListsController@list')->name('list'); + Route::post('/create', 'CreatePackingListController@create')->name('create'); + Route::put('/update/{id}', 'UpdatePackingListController@update')->name('update'); + Route::delete('/delete/{id}', 'DeletePackingListController@delete')->name('delete'); + + Route::group(['namespace' => 'Containers', 'prefix' => 'container', 'as' => 'container.'], function () { + Route::get('/{id}/show', 'FetchContainerPackingListController@fetch')->name('show'); + Route::get('/list', 'ListContainerPackingListsController@list')->name('list'); + Route::post('/create', 'CreateContainerPackingListController@create')->name('create'); + Route::put('/update/{id}', 'UpdateContainerPackingListController@update')->name('update'); + Route::delete('/delete/{id}', 'DeleteContainerPackingListController@delete')->name('delete'); + }); +}); 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..3ac9fca5 --- /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', 'ListSchedulesController@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..507d7f90 --- /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', 'ListTransportsController@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'); +});