diff --git a/app/Classes/General/Eloquent/Filters/CompanyModuleId.php b/app/Classes/General/Eloquent/Filters/CompanyModuleId.php new file mode 100644 index 00000000..c0d3adee --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/CompanyModuleId.php @@ -0,0 +1,20 @@ +where('company_module_id', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/HasBusinessModuleType.php b/app/Classes/General/Eloquent/Filters/HasBusinessModuleType.php new file mode 100644 index 00000000..d59d3846 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/HasBusinessModuleType.php @@ -0,0 +1,22 @@ +whereHas('companyModules', function (Builder $query) use($value) { + $query->where('type', $value); + }); + } + +} \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php b/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php index ad80e9d0..75473c01 100644 --- a/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php +++ b/app/Classes/General/Eloquent/Filters/HasMorphCompanyModule.php @@ -15,7 +15,6 @@ class HasMorphCompanyModule implements Filter */ public static function apply(Builder $builder, $value) { - logger("calling"); return $builder->whereHasMorph('owner', ['App\Models\CompanyModule'], function ($query) use($value) { $query->where('id',$value); }); diff --git a/app/Classes/General/Eloquent/Filters/WithBookings.php b/app/Classes/General/Eloquent/Filters/WithOrders.php similarity index 76% rename from app/Classes/General/Eloquent/Filters/WithBookings.php rename to app/Classes/General/Eloquent/Filters/WithOrders.php index 8728e119..6b5a7b7c 100644 --- a/app/Classes/General/Eloquent/Filters/WithBookings.php +++ b/app/Classes/General/Eloquent/Filters/WithOrders.php @@ -5,7 +5,7 @@ namespace App\Classes\General\Eloquent\Filters; use Illuminate\Database\Eloquent\Builder; -class WithBookings implements Filter +class WithOrders implements Filter { /** @@ -15,6 +15,6 @@ class WithBookings implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->with('bookings'); + return $builder->with('orders'); } } \ No newline at end of file diff --git a/app/Jobs/CurlContainerListJob.php b/app/Classes/Jobs/CurlContainerListJob.php similarity index 97% rename from app/Jobs/CurlContainerListJob.php rename to app/Classes/Jobs/CurlContainerListJob.php index 88a7e9fd..abc93c1a 100644 --- a/app/Jobs/CurlContainerListJob.php +++ b/app/Classes/Jobs/CurlContainerListJob.php @@ -1,8 +1,7 @@ createUserProcessor = $createUserProcessor; $this->createCompanyProcessor = $createCompanyProcessor; $this->createCompanyModuleProcessor = $createCompanyModuleProcessor; $this->createContactProcessor = $createContactProcessor; + $this->createsCompanyConnection = $createsCompanyConnection; + $this->approvesCompanyConnection = $approvesCompanyConnection; $this->assignEmployeeProcessor = $assignEmployeeProcessor; - $this->assignSegmentProcessor = $assignSegmentProcessor; $this->uploadIdentityDocumentProcessor = $uploadIdentityDocumentProcessor; $this->authenticationProcessor = $authenticationProcessor; $this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor; @@ -114,11 +122,16 @@ class CreateCustomerLogic extends AbstractControllerLogic /** @var CompanyModule $companyModule */ $companyModule = $this->createCompanyModuleProcessor->execute($company, BusinessType::IMPORTER); + $connectionObject = new CompanyConnectionObject($companyModule, 'CIEF', mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate()); + + $connection = $this->createsCompanyConnection->execute($connectionObject); + + $this->approvesCompanyConnection->execute($connection); + $Object = new EmploymentObject($companyModule, $user); $this->assignEmployeeProcessor->execute($Object); - $this->uploadIdentityDocumentProcessor->execute($request, $company); $this->generateEmailVerificationAttemptProcessor->execute($user); diff --git a/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php b/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php index 3f4e69cd..92f03f38 100644 --- a/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php +++ b/app/Classes/Modules/Accounts/Services/AuthenticatesUser.php @@ -2,9 +2,9 @@ namespace App\Classes\Modules\Accounts\Services; - use App\Classes\Exceptions\AccessUnauthorisedException; use App\Classes\Modules\Accounts\DataTransferObjects\AuthenticationCredentialsObject; + class AuthenticatesUser { diff --git a/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php b/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php index 127ef55a..b327e175 100644 --- a/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php +++ b/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php @@ -3,6 +3,7 @@ namespace App\Classes\Modules\Accounts\Services; use App\Classes\Exceptions\InternalServerErrorException; +use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Classes\ValueObjects\Constants\RoleTypes; use App\Models\Company; use App\Models\Role; @@ -53,11 +54,6 @@ class GeneratesAuthenticationToken { */ private function setTokenClaims(User $user): void { - /** @var Company $companyModule */ - $companyModule = $user->companyModule()->first(); - - $order = $companyModule->orders->count(); - $claims = [ 'id' => $user->id, 'name' => $user->name, @@ -67,10 +63,12 @@ class GeneratesAuthenticationToken { ]; if($user->type === RoleTypes::USER) { + + /** @var Company $companyModule */ + $companyModule = $user->companyModule()->first(); + $claims = array_merge($claims, [ - 'company_id' => $companyModule->company_id, - 'company_module_id' => $companyModule->id, - 'order' => $order + 'company_id' => $companyModule->company_id ]); } diff --git a/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php b/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php index d5e052a9..0d3f007a 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/ApproveIdentificationDocumentLogic.php @@ -5,6 +5,7 @@ namespace App\Classes\Modules\Companies\ControllersLogic; use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus; use App\Classes\Modules\Documents\Services\RejectsDocument; use App\Classes\Modules\Documents\Standards\Rules\CanApproveDocument; +use App\Classes\Modules\Orders\Services\UpdatesOrdersStatus; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Http\Resources\DocumentResource; @@ -46,6 +47,9 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic /** @var UpdatesCompanyStatus */ private $updatesCompanyStatus; + /** @var UpdatesOrdersStatus */ + private $updatesOrdersStatus; + /** * ApproveIdentificationDocumentLogic constructor. * @param CanApproveDocument $canApproveDocument @@ -53,14 +57,16 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic * @param RejectsDocument $rejectsDocument * @param FetchesDocument $fetchesDocument * @param UpdatesCompanyStatus $updatesCompanyStatus + * @param UpdatesOrdersStatus $updatesOrdersStatus */ - public function __construct(CanApproveDocument $canApproveDocument, ApprovesDocument $approvesDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument, UpdatesCompanyStatus $updatesCompanyStatus) + public function __construct(CanApproveDocument $canApproveDocument, ApprovesDocument $approvesDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument, UpdatesCompanyStatus $updatesCompanyStatus, UpdatesOrdersStatus $updatesOrdersStatus) { $this->canApproveDocument = $canApproveDocument; $this->approvesDocument = $approvesDocument; $this->rejectsDocument = $rejectsDocument; $this->fetchesDocument = $fetchesDocument; $this->updatesCompanyStatus = $updatesCompanyStatus; + $this->updatesOrdersStatus = $updatesOrdersStatus; } /** @@ -84,6 +90,11 @@ class ApproveIdentificationDocumentLogic extends AbstractControllerLogic $this->updatesCompanyStatus->execute($document->owner, $status === 'approve' ? ApprovalStatus::APPROVED : ApprovalStatus::REJECTED); + if($status === 'approve'){ + $orders = $this->updatesOrdersStatus->execute($document->owner, ApprovalStatus::APPROVED); + } + + return $this->resourceResponse(new DocumentResource($document)); } diff --git a/app/Classes/Modules/Companies/ControllersLogic/FetchCompanyLogic.php b/app/Classes/Modules/Companies/ControllersLogic/FetchCompanyLogic.php index 5406d682..174bef3c 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/FetchCompanyLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/FetchCompanyLogic.php @@ -7,7 +7,6 @@ use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Services\FetchesCompany; use App\Classes\Modules\Companies\Standards\Rules\CanFetchCompany; use App\Http\Resources\CompanyResource; -use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -52,7 +51,7 @@ class FetchCompanyLogic extends AbstractControllerLogic { $this->canFetchCompany->passes(); - $query = $this->fetchesCompany->execute(['id' => $request->route('id'), 'with_bookings' => true]); + $query = $this->fetchesCompany->execute(['id' => $request->route('id')]); return $this->resourceResponse(new CompanyResource($query)); diff --git a/app/Classes/Modules/Companies/DataTransferObjects/CompanyConnectionObject.php b/app/Classes/Modules/Companies/DataTransferObjects/CompanyConnectionObject.php new file mode 100644 index 00000000..300d76c5 --- /dev/null +++ b/app/Classes/Modules/Companies/DataTransferObjects/CompanyConnectionObject.php @@ -0,0 +1,58 @@ +invitee = $invitee; + $this->inviterReference = $inviterReference; + $this->inviteeReference = $inviteeReference; + } + + /** + * @return CompanyModule + */ + public function getInvitee(): CompanyModule + { + return $this->invitee; + } + + /** + * @return string + */ + public function getInviterReference(): string + { + return $this->inviterReference; + } + + /** + * @return string + */ + public function getInviteeReference(): string + { + return $this->inviteeReference; + } + + +} diff --git a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php index 6f50f44e..d7eb519e 100644 --- a/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php +++ b/app/Classes/Modules/Companies/Processors/CreateCompanyModuleProcessor.php @@ -8,6 +8,7 @@ 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 App\Models\CompanyModule; use Illuminate\Database\Eloquent\Model; use App\Models\Company; @@ -65,6 +66,9 @@ class CreateCompanyModuleProcessor $this->canCreateCompanyModule->passes($company_module_object); - return $this->createsCompanyModule->execute($company, $company_module_object); + /** @var CompanyModule $companyModule */ + $companyModule = $this->createsCompanyModule->execute($company, $company_module_object); + + return $companyModule; } } diff --git a/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php b/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php index 09516c9d..b33a81ed 100644 --- a/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php +++ b/app/Classes/Modules/Companies/Processors/CreateCompanyProcessor.php @@ -3,8 +3,11 @@ namespace App\Classes\Modules\Companies\Processors; use App\Classes\General\Services\GeneratesInitials; +use App\Classes\Modules\Companies\DataTransferObjects\CompanyConnectionObject; use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject; use App\Classes\Modules\Companies\Services\CreatesCompany; +use App\Classes\Modules\Companies\Services\CreatesCompanyConnection; +use App\Classes\Modules\Companies\Services\GeneratesUniqueAccountNumber; use App\Classes\Modules\Companies\Standards\Rules\CanCreateCompany; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; @@ -21,37 +24,37 @@ class CreateCompanyProcessor /** @var CreatesCompany */ private $createsCompany; + /** @var GeneratesUniqueAccountNumber */ + private $generatesUniqueAccountNumber; + /** - * CreateUserProcessor constructor. + * CreateCompanyProcessor constructor. * @param CanCreateCompany $canCreateCompany * @param CreatesCompany $createsCompany + * @param GeneratesUniqueAccountNumber $generatesUniqueAccountNumber */ - public function __construct(CanCreateCompany $canCreateCompany, CreatesCompany $createsCompany) + public function __construct(CanCreateCompany $canCreateCompany, CreatesCompany $createsCompany, GeneratesUniqueAccountNumber $generatesUniqueAccountNumber) { $this->canCreateCompany = $canCreateCompany; $this->createsCompany = $createsCompany; + $this->generatesUniqueAccountNumber = $generatesUniqueAccountNumber; } /** * @param Request $request - * @param int $businessType - * @param int|null $companyType + * @param int $companyType * @param int|null $status * @return Model * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ - public function execute(Request $request, ?int $companyType = CompanyType::COMPANY_BUSINESS, ?int $status = ApprovalStatus::PENDING_SUBMISSION): Model { + public function execute(Request $request, int $companyType = CompanyType::COMPANY_BUSINESS, ?int $status = ApprovalStatus::PENDING_SUBMISSION): Model { $companyName = $companyType === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'); - $company_object = new CompanyObject( - $companyName, - mt_rand(1000, 9999).(new GeneratesInitials())->name($companyName)->length(3)->generate(), - $companyType, - $status - ); + + $company_object = new CompanyObject($companyName, $this->generatesUniqueAccountNumber->execute(), $companyType, $status); $this->canCreateCompany->passes($company_object); diff --git a/app/Classes/Modules/Companies/Services/ApprovesCompanyConnection.php b/app/Classes/Modules/Companies/Services/ApprovesCompanyConnection.php new file mode 100644 index 00000000..fecab38e --- /dev/null +++ b/app/Classes/Modules/Companies/Services/ApprovesCompanyConnection.php @@ -0,0 +1,25 @@ +status = ApprovalStatus::APPROVED; + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/ChecksIfCompanyAccountNumberExists.php b/app/Classes/Modules/Companies/Services/ChecksIfCompanyAccountNumberExists.php new file mode 100644 index 00000000..0f4d9e5a --- /dev/null +++ b/app/Classes/Modules/Companies/Services/ChecksIfCompanyAccountNumberExists.php @@ -0,0 +1,26 @@ +repository = $repository; + } + + public function execute(int $accountNumber): bool { + return $this->repository->where('reference', $accountNumber)->exists(); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php b/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php new file mode 100644 index 00000000..d5d11ecc --- /dev/null +++ b/app/Classes/Modules/Companies/Services/CreatesCompanyConnection.php @@ -0,0 +1,44 @@ +fetchesCompany = $fetchesCompany; + } + + + /** + * @param CompanyConnectionObject $object + * @return mixed + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(CompanyConnectionObject $object) + { + + $companyModule = $this->fetchesCompany->execute(['id', 1])->companyModules()->first(); + + $connection = new CompanyConnection(); + $connection->inviter_id = $companyModule->id; + $connection->invitee_id = $object->getInvitee()->id; + $connection->inviter_reference = $object->getInviterReference(); + $connection->invitee_reference = $object->getInviteeReference(); + + return $this->handler($connection); + + } +} diff --git a/app/Classes/Modules/Companies/Services/GeneratesUniqueAccountNumber.php b/app/Classes/Modules/Companies/Services/GeneratesUniqueAccountNumber.php new file mode 100644 index 00000000..48a92e20 --- /dev/null +++ b/app/Classes/Modules/Companies/Services/GeneratesUniqueAccountNumber.php @@ -0,0 +1,31 @@ +accountNumberExists = $accountNumberExists; + } + + /** + * @return int + */ + public function execute(): int { + + $number = mt_rand(100000001, 999999999); + return !$this->accountNumberExists->execute($number) ? $number : self::execute(); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/UpdatesCompanyStatus.php b/app/Classes/Modules/Companies/Services/UpdatesCompanyStatus.php new file mode 100644 index 00000000..b7351fc9 --- /dev/null +++ b/app/Classes/Modules/Companies/Services/UpdatesCompanyStatus.php @@ -0,0 +1,24 @@ +status = $status; + return $this->handler($model); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanFetchContainerPackingList.php b/app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php similarity index 58% rename from app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanFetchContainerPackingList.php rename to app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php index 6eedf7bd..1d2bad1d 100644 --- a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanFetchContainerPackingList.php +++ b/app/Classes/Modules/Companies/Standards/Rules/CanFetchCompany.php @@ -1,12 +1,12 @@ '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 deleted file mode 100644 index dfd94848..00000000 --- a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/DeleteContainerPackingListLogic.php +++ /dev/null @@ -1,73 +0,0 @@ - '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 deleted file mode 100644 index 21e4e1c9..00000000 --- a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/FetchContainerPackingListLogic.php +++ /dev/null @@ -1,66 +0,0 @@ - '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 deleted file mode 100644 index 50e34101..00000000 --- a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/ListContainerPackingListsLogic.php +++ /dev/null @@ -1,66 +0,0 @@ - '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 deleted file mode 100644 index 8ae97336..00000000 --- a/app/Classes/Modules/ContainerPackingLists/ControllersLogic/UpdateContainerPackingListLogic.php +++ /dev/null @@ -1,72 +0,0 @@ - '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/Services/DeletesContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Services/DeletesContainerPackingList.php deleted file mode 100644 index abd524eb..00000000 --- a/app/Classes/Modules/ContainerPackingLists/Services/DeletesContainerPackingList.php +++ /dev/null @@ -1,19 +0,0 @@ -handler($model); - } -} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/FetchesContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Services/FetchesContainerPackingList.php deleted file mode 100644 index a10e13de..00000000 --- a/app/Classes/Modules/ContainerPackingLists/Services/FetchesContainerPackingList.php +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index e3991a3f..00000000 --- a/app/Classes/Modules/ContainerPackingLists/Services/ListsContainerPackingLists.php +++ /dev/null @@ -1,33 +0,0 @@ -repository = $repository; - } - - - /** - * @return Builder - */ - function getRepository(): Builder - { - return $this->repository->newQuery(); - } -} diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanUpdateContainerPackingList.php b/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanUpdateContainerPackingList.php deleted file mode 100644 index cfd79004..00000000 --- a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanUpdateContainerPackingList.php +++ /dev/null @@ -1,57 +0,0 @@ -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/Documents/ControllersLogic/ApproveDocumentLogic.php b/app/Classes/Modules/Documents/ControllersLogic/ApproveDocumentLogic.php new file mode 100644 index 00000000..c15ab3ac --- /dev/null +++ b/app/Classes/Modules/Documents/ControllersLogic/ApproveDocumentLogic.php @@ -0,0 +1,73 @@ + 'Approve Document', + 'message' => 'You have successfully approved the Document' + ]; + } + + /** @var CanApproveDocument*/ + private $canApproveDocument; + + /** @var ApprovesDocument */ + private $approvesDocument; + + /** @var FetchesDocument */ + private $fetchesDocument; + + + /** + * RejectDocumentLogic constructor. + * @param CanApproveDocument $canApproveDocument + * @param ApprovesDocument $approvesDocument + * @param FetchesDocument $fetchesDocument + */ + public function __construct(CanApproveDocument $canApproveDocument, ApprovesDocument $approvesDocument, FetchesDocument $fetchesDocument) + { + $this->canApproveDocument = $canApproveDocument; + $this->approvesDocument = $approvesDocument; + $this->fetchesDocument = $fetchesDocument; + } + + /** + * @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 + { + + $document = $this->fetchesDocument->execute(['id' => $request->route('id')]); + + $this->canApproveDocument->passes(); + + $document_query = $this->approvesDocument->execute($document); + + return $this->resourceResponse(new DocumentResource($document_query)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/ControllersLogic/ListDocumentLogic.php b/app/Classes/Modules/Documents/ControllersLogic/ListDocumentLogic.php new file mode 100644 index 00000000..02bdac9d --- /dev/null +++ b/app/Classes/Modules/Documents/ControllersLogic/ListDocumentLogic.php @@ -0,0 +1,63 @@ + 'Retrieved Document', + 'message' => 'You have successfully retrieved a list of Document' + ]; + } + + /** @var CanListDocuments */ + private $canListDocuments; + + /** @var ListsDocuments */ + private $listsDocuments; + + /** + * ListStandardSegmentLogic constructor. + * @param CanListDocuments $canListDocuments + * @param ListsDocuments $listsDocuments + */ + public function __construct(CanListDocuments $canListDocuments, ListsDocuments $listsDocuments) + { + $this->canListDocuments = $canListDocuments; + $this->listsDocuments = $listsDocuments; + } + + + /** + * @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->canListDocuments->passes(); + + $query = $this->listsDocuments->execute($this->listsDocuments->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(DocumentResource::collection($query)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/ControllersLogic/RejectDocumentLogic.php b/app/Classes/Modules/Documents/ControllersLogic/RejectDocumentLogic.php new file mode 100644 index 00000000..c8f0cf8c --- /dev/null +++ b/app/Classes/Modules/Documents/ControllersLogic/RejectDocumentLogic.php @@ -0,0 +1,71 @@ + 'Reject Document', + 'message' => 'You have successfully rejected the Document' + ]; + } + + /** @var CanApproveDocument*/ + private $canApproveDocument; + + /** @var RejectsDocument */ + private $rejectsDocument; + + /** @var FetchesDocument */ + private $fetchesDocument; + + /** + * RejectDocumentLogic constructor. + * @param CanApproveDocument $canApproveDocument + * @param RejectsDocument $rejectsDocument + * @param FetchesDocument $fetchesDocument + */ + public function __construct(CanApproveDocument $canApproveDocument, RejectsDocument $rejectsDocument, FetchesDocument $fetchesDocument) + { + $this->canApproveDocument = $canApproveDocument; + $this->rejectsDocument = $rejectsDocument; + $this->fetchesDocument = $fetchesDocument; + } + + /** + * @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 + { + + $document = $this->fetchesDocument->execute(['id' => $request->route('id')]); + + $this->canApproveDocument->passes(); + + $document_query = $this->rejectsDocument->execute($document); + + return $this->resourceResponse(new DocumentResource($document_query)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/ControllersLogic/RenderDocumentLogic.php b/app/Classes/Modules/Documents/ControllersLogic/RenderDocumentLogic.php new file mode 100644 index 00000000..2d095750 --- /dev/null +++ b/app/Classes/Modules/Documents/ControllersLogic/RenderDocumentLogic.php @@ -0,0 +1,64 @@ + '', + 'message' => '' + ]; + } + + /** @var CanRenderDocument */ + private $canRenderDocument; + + /** @var JWT */ + private $manager; + + /** + * RenderDocumentLogic constructor. + * @param CanRenderDocument $canRenderDocument + * @param JWT $manager + */ + public function __construct(CanRenderDocument $canRenderDocument, JWT $manager) + { + $this->canRenderDocument = $canRenderDocument; + $this->manager = $manager; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws AccessForbiddenException + * @throws RequestValidationException + * @throws ResourceNotFoundException + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + public function logic(Request $request) : JsonResponse + { + $file = $request->route('fileName'); + + $this->canRenderDocument->passes(); + + if(!Storage::disk('documents')->exists($file)) + { + throw new ResourceNotFoundException(); + } + + return $this->response(['src' => explode('.', $file)[1] == 'pdf' ? chunk_split(base64_encode(Storage::disk('documents')->get($file))) : Storage::disk('documents')->get($file) ]); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/Services/ApprovesDocument.php b/app/Classes/Modules/Documents/Services/ApprovesDocument.php new file mode 100644 index 00000000..9458774e --- /dev/null +++ b/app/Classes/Modules/Documents/Services/ApprovesDocument.php @@ -0,0 +1,26 @@ +status = ApprovalStatus::APPROVED; + $model->approver = Auth()->user()->id; + $model->approval_date = Carbon::now(); + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Services/FetchesOrderSteps.php b/app/Classes/Modules/Documents/Services/FetchesDocument.php similarity index 55% rename from app/Classes/Modules/OrderSteps/Services/FetchesOrderSteps.php rename to app/Classes/Modules/Documents/Services/FetchesDocument.php index 77559b14..1aa12c87 100644 --- a/app/Classes/Modules/OrderSteps/Services/FetchesOrderSteps.php +++ b/app/Classes/Modules/Documents/Services/FetchesDocument.php @@ -1,22 +1,23 @@ repository = $repository; } diff --git a/app/Classes/Modules/Documents/Services/ListsDocuments.php b/app/Classes/Modules/Documents/Services/ListsDocuments.php new file mode 100644 index 00000000..9f372279 --- /dev/null +++ b/app/Classes/Modules/Documents/Services/ListsDocuments.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/Documents/Services/RejectsDocument.php b/app/Classes/Modules/Documents/Services/RejectsDocument.php new file mode 100644 index 00000000..4a7c7bfa --- /dev/null +++ b/app/Classes/Modules/Documents/Services/RejectsDocument.php @@ -0,0 +1,26 @@ +status = ApprovalStatus::REJECTED; + $model->approver = Auth()->user()->id; + $model->approval_date = Carbon::now(); + + return $this->handler($model); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php b/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php new file mode 100644 index 00000000..544b605c --- /dev/null +++ b/app/Classes/Modules/Documents/Standards/Rules/CanApproveDocument.php @@ -0,0 +1,39 @@ +documentValidation = $documentValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param DocumentObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->documentValidation->validate($object); + } + + /** + * @param DocumentObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php b/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php new file mode 100644 index 00000000..d029cf2a --- /dev/null +++ b/app/Classes/Modules/Documents/Standards/Rules/CanCreateFile.php @@ -0,0 +1,53 @@ +fileValidation = $fileValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param FileObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->fileValidation->validate($object); + } + + /** + * @param FileObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanDeleteContainerPackingList.php b/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php similarity index 50% rename from app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanDeleteContainerPackingList.php rename to app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php index 7056d7a4..f5145df6 100644 --- a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanDeleteContainerPackingList.php +++ b/app/Classes/Modules/Documents/Standards/Rules/CanListDocuments.php @@ -1,27 +1,31 @@ can('view document')) { + return false; + } + */ + return true; } /** - * @param ContainerPackingListObject $object + * @param DocumentObject $object * @return bool */ protected function validators($object): bool @@ -32,7 +36,7 @@ class CanDeleteContainerPackingList extends AbstractRule /** - * @param ContainerPackingListObject $object + * @param DocumentObject $object * @return bool */ protected function criteria($object): bool @@ -40,4 +44,4 @@ class CanDeleteContainerPackingList extends AbstractRule return true; } -} +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php b/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php new file mode 100644 index 00000000..0275d6f9 --- /dev/null +++ b/app/Classes/Modules/Documents/Standards/Rules/CanRenderDocument.php @@ -0,0 +1,39 @@ +documentValidation = $documentValidation; + } + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + } + + /** + * @param DocumentObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->documentValidation->validate($object); + } + + /** + * @param DocumentObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/Standards/Validators/DocumentValidation.php b/app/Classes/Modules/Documents/Standards/Validators/DocumentValidation.php new file mode 100644 index 00000000..634887f6 --- /dev/null +++ b/app/Classes/Modules/Documents/Standards/Validators/DocumentValidation.php @@ -0,0 +1,42 @@ + $object->getDocumentType(), + 'reference' => $object->getReference(), + 'status' => $object->getStatus(), + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'document_type' => 'required', + 'reference' => 'required', + 'status' => 'required' + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Documents/Standards/Validators/FileValidation.php b/app/Classes/Modules/Documents/Standards/Validators/FileValidation.php new file mode 100644 index 00000000..3c429714 --- /dev/null +++ b/app/Classes/Modules/Documents/Standards/Validators/FileValidation.php @@ -0,0 +1,42 @@ + $object->getDocumentId(), + 'file' => $object->getFile(), + 'file_type' => $object->getFileType() + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'document_id' => 'required', + 'file' => 'required', + 'file_type' => 'required' + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/ControllersLogic/CompletesOrderStepLogic.php b/app/Classes/Modules/OrderSteps/ControllersLogic/CompletesOrderStepLogic.php deleted file mode 100644 index 55aebd59..00000000 --- a/app/Classes/Modules/OrderSteps/ControllersLogic/CompletesOrderStepLogic.php +++ /dev/null @@ -1,44 +0,0 @@ -completeOrderStepProcessor = $completeOrderStepProcessor; - } - - protected function notification():array { - return [ - 'title' => 'Completed Order Step', - 'message' => 'You have successfully completed a order step' - ]; - } - - public function logic(Request $request) : JsonResponse { - - $completedOrderStep = $this->completeOrderStepProcessor->execute($request); - - return $this->resourceResponse(new OrderStepResource($completedOrderStep)); - } -} diff --git a/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php deleted file mode 100644 index b5a9b17a..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/CreateOrderStepsProcessor.php +++ /dev/null @@ -1,47 +0,0 @@ -canCreateOrderStep = $canCreateOrderStep; - $this->createsOrderSteps = $createsOrderSteps; - $this->fetchesOrder = $fetchesOrder; - $this->fetchesOrderSteps = $fetchesOrderSteps; - } - - public function execute(Model $order, string $currentStep, $appointee_id){ - - $order_steps_object = new OrderStepsObject( $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); - - $this->canCreateOrderStep->passes($order_steps_object); - - return $this->createsOrderSteps->execute($order, $order_steps_object); - - } -} diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/AbstractStepProcessor.php b/app/Classes/Modules/OrderSteps/Processors/Steps/AbstractStepProcessor.php deleted file mode 100644 index e96065b5..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/AbstractStepProcessor.php +++ /dev/null @@ -1,46 +0,0 @@ -validator()){ - return new JsonResponse(['message' => 'Updating step validation has failed due to missing requirements'], HttpStatus::VALIDATION_FAILED); - } - - (new CompletesOrderStep())->execute($orderId, $step); - - /** notification */ - - - return new JsonResponse(null, HttpStatus::REQUEST_ACCEPTED); - - } catch (\Exception $exception){ - - throw new InternalServerErrorException("Failed to update order step because {$exception->getMessage()}"); - - } - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/ConfirmsOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/ConfirmsOrder.php deleted file mode 100644 index 0355e269..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/ConfirmsOrder.php +++ /dev/null @@ -1,56 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - /** - * @return bool - */ - public function validator(): bool { - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - * @throws \App\Classes\Modules\Accounts\Exceptions\CannotCreateOrderStepsException - */ - public function execute(): JsonResponse { - - (new generateOrderSteps())->execute($this->orderId); - - return $this->handler($this->orderId, $this->step); - } - -} diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/DeliverOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/DeliverOrder.php deleted file mode 100644 index 1e5a9738..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/DeliverOrder.php +++ /dev/null @@ -1,56 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - /** - * @return bool - */ - public function validator(): bool { - if(!DeliveryArrangement::where('order_id', $this->orderId)->exists()) { - return false; - } - - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - */ - public function execute(): JsonResponse { - return $this->handler($this->orderId, $this->step); - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/ShipOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/ShipOrder.php deleted file mode 100644 index 85bba60f..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/ShipOrder.php +++ /dev/null @@ -1,59 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - - /** - * @return bool - */ - public function validator(): bool { - - if(!ShippingArrangement::where('order_id', $this->orderId)->exists()) { - return false; - } - - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - */ - public function execute(): JsonResponse { - return $this->handler($this->orderId, $this->step); - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseArrivalOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseArrivalOrder.php deleted file mode 100644 index e7376c18..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseArrivalOrder.php +++ /dev/null @@ -1,52 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - /** - * @return bool - */ - public function validator(): bool { - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - */ - public function execute(): JsonResponse { - return $this->handler($this->orderId, $this->step); - } - - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehousePackOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/WarehousePackOrder.php deleted file mode 100644 index eab2db4b..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehousePackOrder.php +++ /dev/null @@ -1,60 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - /** - * @return bool - */ - public function validator(): bool { - - $packingList = PackingList::where('order_id', $this->orderId)->first(); - - if(!$packingList->confirmed) { - return false; - } - - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - */ - public function execute(): JsonResponse { - - return $this->handler($this->orderId, $this->step); - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseReceivesOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseReceivesOrder.php deleted file mode 100644 index f032429c..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseReceivesOrder.php +++ /dev/null @@ -1,65 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - /** - * @return bool - */ - public function validator(): bool { - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - */ - public function execute(): JsonResponse { - Mail::send('emails.received_orders_email', [], function ($message) { - $message->from('noreply@izyin.com', 'IZYIM'); - $message->to('uldvstar@gmail.com', 'Omair Saleh')->subject('Received orders report '.now()->format('dd/mm/YY')); - $message->attach( - Excel::download(Order::find($this->orderId), - 'report_'.now()->format('dd_mm_YY').'.xlsx') - ->getFile(), ['as' => 'report_'.now()->format('dd/mm/YY').'.xlsx']); - - }); - - return $this->handler($this->orderId, $this->step); - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseUnpackingOrder.php b/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseUnpackingOrder.php deleted file mode 100644 index 352d2235..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/Steps/WarehouseUnpackingOrder.php +++ /dev/null @@ -1,51 +0,0 @@ -orderId = $orderId; - $this->step = new StepObject(self::STEP_REFERENCE, $completeDate); - - } - - /** - * @return bool - */ - public function validator(): bool { - return true; - } - - - /** - * @return JsonResponse - * @throws InternalServerErrorException - */ - public function execute(): JsonResponse { - return $this->handler($this->orderId, $this->step); - } - -} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php b/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php deleted file mode 100644 index 5c4d2def..00000000 --- a/app/Classes/Modules/OrderSteps/Processors/UpdateOrderStepsProcessor.php +++ /dev/null @@ -1,43 +0,0 @@ -canUpdateOrderStep = $canUpdateOrderStep; - $this->updatesOrderSteps = $updatesOrderSteps; - $this->fetchesOrderSteps = $fetchesOrderSteps; - } - - public function execute(string $currentStep){ - - $orderStepsObject = new OrderStepsObject(0,$currentStep, 0, 0, 1, 1, null, 0, null); - - $this->canUpdateOrderStep->passes($orderStepsObject); - - $orderSteps = $this->fetchesOrderSteps->execute(['reference'=>$currentStep]); - - $this->updatesOrderSteps->execute($orderSteps, $orderStepsObject); - - } -} diff --git a/app/Classes/Modules/OrderSteps/Services/CreatesPackingOrderSteps.php b/app/Classes/Modules/OrderSteps/Services/CreatesPackingOrderSteps.php deleted file mode 100644 index 5a42ea36..00000000 --- a/app/Classes/Modules/OrderSteps/Services/CreatesPackingOrderSteps.php +++ /dev/null @@ -1,29 +0,0 @@ -appointee_id = $orderSteps->getAppointeeId(); - $orderStepsModel->reference = $orderSteps->getReference(); - $orderStepsModel->primary = $orderSteps->getPrimary(); - $orderStepsModel->sequence = $orderSteps->getSequence(); - $orderStepsModel->status = 0; - $orderStepsModel->contract_status = 0; - $orderStepsModel->complete_date = null; - - return $this->handler($packingList->orderSteps(), $orderStepsModel); - - } -} diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php new file mode 100644 index 00000000..8dc9a5cb --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php @@ -0,0 +1,61 @@ + 'Retrieved Order', + 'message' => 'You have successfully retrieved an order' + ]; + } + + /** @var CanFetchOrder */ + private $canFetchOrder; + + /** @var FetchesOrder */ + private $fetchesOrder; + + /** + * FetchOrderLogic constructor. + * @param CanFetchOrder $canFetchOrder + * @param FetchesOrder $fetchesOrder + */ + public function __construct(CanFetchOrder $canFetchOrder, FetchesOrder $fetchesOrder) + { + $this->canFetchOrder = $canFetchOrder; + $this->fetchesOrder = $fetchesOrder; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + + $this->canFetchOrder->passes(); + + $query = $this->fetchesOrder->execute(['reference' => $request->route('id')]); + + return $this->resourceResponse(new OrderResource($query)); + + } + +} \ 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 254b5e7c..b1f3e72e 100644 --- a/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/ConfirmOrderProcessor.php @@ -11,7 +11,7 @@ use App\Classes\Modules\OrderSteps\Processors\GenerateOrderStepsProcessor; use App\Classes\ValueObjects\Constants\OrderStatus; use App\Classes\ValueObjects\Constants\OrderSteps; use App\Classes\ValueObjects\Constants\OrderType; -use App\Classes\Modules\OrderSteps\DataTransferObjects\OrderStepsObject; +use App\Classes\Modules\OrderSteps\DataTransferObjects\StepsObject; use App\Classes\Modules\OrderSteps\Services\UpdatesOrderSteps; use Illuminate\Http\Request; @@ -42,7 +42,7 @@ class ConfirmOrderProcessor //Only Processing Step is created at this point $orderStep = $order->orderSteps[0]; - $orderStepObject = new OrderStepsObject( + $orderStepObject = new StepsObject( 0, $orderStep->reference, true, diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php index 4af95696..61d988af 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php @@ -72,10 +72,12 @@ class CreateOrderProcessor */ public function execute(Request $request){ + $company = $this->fetchesCompany->execute(['id' => $request->get('company_id')]); + /** @var CompanyModule $importer */ $importer = $this->fetchesCompany->execute(['id' => $request->get('company_id')])->companyModules()->importers()->first(); - $orderObject = new OrderObject($this->generatesOrderNumber->execute(), OrderType::SHARED_CONTAINER, $importer->status === ApprovalStatus::APPROVED ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); + $orderObject = new OrderObject($this->generatesOrderNumber->execute(), OrderType::SHARED_CONTAINER, $company->status === ApprovalStatus::APPROVED ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); $this->canCreateOrder->passes($orderObject); diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php index 8192429b..4b8f0bb8 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php @@ -48,16 +48,9 @@ class CreateOrderRolesProcessor /** @var CompanyModule $originWarehouse */ $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $request->get('warehouse_id')]); - $desitnationWarehouseReference = WarehouseReferences::KLANG; -// $address->state_id === 13 ? WarehouseReferences::SABAH : $address->state_id === 14 ? WarehouseReferences::SARAWAK : WarehouseReferences::KLANG - if($address->state_id === 13){ - $desitnationWarehouseReference = WarehouseReferences::SABAH; - } - if($address->state_id === 14){ - $desitnationWarehouseReference = WarehouseReferences::SARAWAK; - } + /** @var CompanyModule $destinationWarehouse */ - $destinationWarehouse = $this->fetchesCompanyModule->execute(['reference' => $desitnationWarehouseReference]); + $destinationWarehouse = $this->fetchesCompanyModule->execute(['reference' => $address->state_id = 13 ? WarehouseReferences::SABAH : ($address->state_id === 14 ? WarehouseReferences::SARAWAK : WarehouseReferences::KLANG)]); /** @var CompanyModule $freightForwarder */ $freightForwarder = $originWarehouse->company->companyModules()->freightForwarders()->first(); diff --git a/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php b/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php index 6ae3b7ee..50e969ba 100644 --- a/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php +++ b/app/Classes/Modules/Orders/Processors/UpdatesOrderCurrentStepProcessor.php @@ -10,7 +10,7 @@ use App\Classes\Modules\Orders\Standards\Rules\CanUpdateCurrentStep; use App\Classes\ValueObjects\Constants\OrderStatus; use App\Classes\ValueObjects\Constants\OrderSteps; use App\Models\Order; -use App\Models\OrderStep; +use App\Models\Step; class UpdatesOrderCurrentStepProcessor { diff --git a/app/Classes/Modules/Orders/Services/GeneratesOrderNumber.php b/app/Classes/Modules/Orders/Services/GeneratesOrderNumber.php index 2fc25cc2..e1aa006e 100644 --- a/app/Classes/Modules/Orders/Services/GeneratesOrderNumber.php +++ b/app/Classes/Modules/Orders/Services/GeneratesOrderNumber.php @@ -24,7 +24,7 @@ class GeneratesOrderNumber */ public function execute(): int { - $reference = rand(1000000, 9999999); + $reference = rand(100000001, 999999999); return !$this->checkIfOrderNumberExists->execute($reference) ? $reference : self::execute(); } diff --git a/app/Classes/Modules/Orders/Services/UpdatesOrdersStatus.php b/app/Classes/Modules/Orders/Services/UpdatesOrdersStatus.php new file mode 100644 index 00000000..8ed3497f --- /dev/null +++ b/app/Classes/Modules/Orders/Services/UpdatesOrdersStatus.php @@ -0,0 +1,22 @@ +companyModules()->where('type', BusinessType::IMPORTER)->first()->orders()->update(['status' => $status]); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php b/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php new file mode 100644 index 00000000..a4457e26 --- /dev/null +++ b/app/Classes/Modules/Orders/Standards/Rules/CanFetchOrder.php @@ -0,0 +1,42 @@ +handler($model); - } -} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php new file mode 100644 index 00000000..30184f62 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php @@ -0,0 +1,67 @@ + 'Created PackingList', + 'message' => 'You have successfully created a new PackingList' + ]; + } + + /** @var CanCreateContainer */ + private $canCreateContainer; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var CreatesPackingList */ + private $createsContainer; + + public function __construct(CanCreateContainer $canCreateContainer, FetchesPackingList $fetchesPackingList, CreatesContainer $createsContainer) + { + $this->canCreateContainer = $canCreateContainer; + $this->fetchesPackingList = $fetchesPackingList; + $this->createsContainer = $createsContainer; + } + + /** + * @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 ContainerObject( $packingList->id , $request->input('container_reference'), $request->input('container_type'), $request->input('seal_reference')); + + $this->canCreateContainer->passes($object); + + $query = $this->createsContainer->execute($object); + + return $this->resourceResponse(new ContainerResource($query)); + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php new file mode 100644 index 00000000..e25f4748 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php @@ -0,0 +1,73 @@ + 'Deleted Container', + 'message' => 'You have successfully deleted a Container' + ]; + } + + + /** @var CanDeleteContainer */ + private $canDeleteContainer; + + /** @var DeletesContainer */ + private $deletesContainer; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * DeleteContainerControllersLogic constructor. + * @param CanDeleteContainer $canDeleteContainer + * @param DeletesContainer $deletesContainer + * @param FetchesContainer $fetchesContainer + */ + public function __construct(CanDeleteContainer $canDeleteContainer, DeletesContainer $deletesContainer, FetchesContainer $fetchesContainer) + { + $this->canDeleteContainer = $canDeleteContainer; + $this->deletesContainer = $deletesContainer; + $this->fetchesContainer = $fetchesContainer; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canDeleteContainer->passes(); + + $query = $this->fetchesContainer->execute(['id' => $request->route('id')]); + + $this->deletesContainer->execute($query); + + return $this->response([]); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php new file mode 100644 index 00000000..2a6f670a --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php @@ -0,0 +1,66 @@ + 'Retrieved Container', + 'message' => 'You have successfully retrieved a Container' + ]; + } + + /** @var CanFetchContainer */ + private $canFetchContainer; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * FetchContainerControllersLogic constructor. + * @param CanFetchContainer $canFetchContainer + * @param FetchesContainer $fetchesContainer + */ + public function __construct(CanFetchContainer $canFetchContainer, FetchesContainer $fetchesContainer) + { + $this->canFetchContainer = $canFetchContainer; + $this->fetchesContainer = $fetchesContainer; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canFetchContainer->passes(); + + $query = $this->fetchesContainer->execute(['id' => $request->route('id')]); + + return $this->resourceResponse(new ContainerResource($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php new file mode 100644 index 00000000..f5422224 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php @@ -0,0 +1,66 @@ + 'Retrieved Containers', + 'message' => 'You have successfully retrieved a list of Containers' + ]; + } + + /** @var CanListContainers */ + private $canListContainers; + + /** @var ListsContainers */ + private $listsContainers; + + /** + * ListContainersLogic constructor. + * @param CanListContainers $canListContainers + * @param ListsContainers $listsContainers + */ + public function __construct(CanListContainers $canListContainers, ListsContainers $listsContainers) + { + $this->canListContainers = $canListContainers; + $this->listsContainers = $listsContainers; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + + $this->canListContainers->passes(); + + $query = $this->listsContainers->execute($this->listsContainers->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(ContainerResource::collection($query)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php new file mode 100644 index 00000000..8d739bed --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php @@ -0,0 +1,72 @@ + 'Updated Container', + 'message' => 'You have successfully updated the Container' + ]; + } + + /** @var CanUpdateContainer */ + private $canUpdateContainer; + + /** @var UpdatesContainer */ + private $updatesContainer; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * UpdateContainerLogic constructor. + * @param CanUpdateContainer $canUpdateContainer + * @param UpdatesContainer $updatesContainer + * @param FetchesContainer $fetchesContainer + */ + public function __construct(CanUpdateContainer $canUpdateContainer, UpdatesContainer $updatesContainer, FetchesContainer $fetchesContainer) + { + $this->canUpdateContainer = $canUpdateContainer; + $this->updatesContainer = $updatesContainer; + $this->fetchesContainer = $fetchesContainer; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + + $container = $this->fetchesContainer->execute(['id' => $request->route('id')]); + + $object = new ContainerObject( $container->packing_list_id , $request->input('container_reference'), $request->input('container_type'), $request->input('seal_reference')); + + $this->canUpdateContainer->passes($object); + + $query = $this->updatesContainer->execute($container, $object); + + return $this->resourceResponse(new ContainerResource($query)); + + } + +} diff --git a/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php similarity index 87% rename from app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php rename to app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php index 5c17b99f..28e77a8c 100644 --- a/app/Classes/Modules/Packages/ControllersLogic/CreatePackageLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php @@ -1,16 +1,15 @@ canCreatePackageItem = $canCreatePackageItem; $this->fetchesPackage = $fetchesPackage; @@ -64,7 +64,7 @@ class CreatePackageItemLogic extends AbstractControllerLogic $reference_no = rand(1000000, 9999999); - $object = new PackageItemObject( + $object = new ItemObject( $package->id, $request->input('name'), $reference_no, @@ -79,7 +79,7 @@ class CreatePackageItemLogic extends AbstractControllerLogic $query = $this->createsPackageItem->execute($object); - return $this->resourceResponse(new PackageItemResource($query)); + return $this->resourceResponse(new ItemResource($query)); } diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/DeletePackageItemLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/DeletePackageItemLogic.php similarity index 69% rename from app/Classes/Modules/PackageItems/ControllersLogic/DeletePackageItemLogic.php rename to app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/DeletePackageItemLogic.php index 0e9ea84b..39bead68 100644 --- a/app/Classes/Modules/PackageItems/ControllersLogic/DeletePackageItemLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/DeletePackageItemLogic.php @@ -4,9 +4,9 @@ namespace App\Classes\Modules\PackageItems\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\PackageItems\Services\DeletesPackageItem; -use App\Classes\Modules\PackageItems\Services\FetchesPackageItem; -use App\Classes\Modules\PackageItems\Standards\Rules\CanDeletePackageItem; +use App\Classes\Modules\PackingLists\Services\Packages\Items\DeletesItem; +use App\Classes\Modules\PackingLists\Services\Packages\Items\FetchesItem; +use App\Classes\Modules\PackingLists\Standards\Rules\Packages\Items\CanDeleteItem; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -24,22 +24,22 @@ class DeletePackageItemLogic extends AbstractControllerLogic } - /** @var CanDeletePackageItem */ + /** @var CanDeleteItem */ private $canDeletePackageItem; - /** @var DeletesPackageItem */ + /** @var DeletesItem */ private $deletesPackageItem; - /** @var FetchesPackageItem */ + /** @var FetchesItem */ private $fetchesPackageItem; /** * DeletePackageItemControllersLogic constructor. - * @param CanDeletePackageItem $canDeletePackageItem - * @param DeletesPackageItem $deletesPackageItem - * @param FetchesPackageItem $fetchesPackageItem + * @param CanDeleteItem $canDeletePackageItem + * @param DeletesItem $deletesPackageItem + * @param FetchesItem $fetchesPackageItem */ - public function __construct(CanDeletePackageItem $canDeletePackageItem, DeletesPackageItem $deletesPackageItem, FetchesPackageItem $fetchesPackageItem) + public function __construct(CanDeleteItem $canDeletePackageItem, DeletesItem $deletesPackageItem, FetchesItem $fetchesPackageItem) { $this->canDeletePackageItem = $canDeletePackageItem; $this->deletesPackageItem = $deletesPackageItem; diff --git a/app/Classes/Modules/PackageItems/ControllersLogic/FetchPackageItemLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/FetchPackageItemLogic.php similarity index 69% rename from app/Classes/Modules/PackageItems/ControllersLogic/FetchPackageItemLogic.php rename to app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/FetchPackageItemLogic.php index 4013720e..c09c1cc0 100644 --- a/app/Classes/Modules/PackageItems/ControllersLogic/FetchPackageItemLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/FetchPackageItemLogic.php @@ -4,9 +4,9 @@ namespace App\Classes\Modules\PackageItems\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\PackageItems\Services\FetchesPackageItem; -use App\Classes\Modules\PackageItems\Standards\Rules\CanFetchPackageItem; -use App\Http\Resources\PackageItemResource; +use App\Classes\Modules\PackingLists\Services\Packages\Items\FetchesItem; +use App\Classes\Modules\PackingLists\Standards\Rules\Packages\Items\CanFetchItem; +use App\Http\Resources\ItemResource; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -24,18 +24,18 @@ class FetchPackageItemLogic extends AbstractControllerLogic ]; } - /** @var CanFetchPackageItem */ + /** @var CanFetchItem */ private $canFetchPackageItem; - /** @var FetchesPackageItem */ + /** @var FetchesItem */ private $fetchesPackageItem; /** * FetchPackageItemControllersLogic constructor. - * @param CanFetchPackageItem $canFetchPackageItem - * @param FetchesPackageItem $fetchesPackageItem + * @param CanFetchItem $canFetchPackageItem + * @param FetchesItem $fetchesPackageItem */ - public function __construct(CanFetchPackageItem $canFetchPackageItem, FetchesPackageItem $fetchesPackageItem) + public function __construct(CanFetchItem $canFetchPackageItem, FetchesItem $fetchesPackageItem) { $this->canFetchPackageItem = $canFetchPackageItem; $this->fetchesPackageItem = $fetchesPackageItem; @@ -55,7 +55,7 @@ class FetchPackageItemLogic extends AbstractControllerLogic $query = $this->fetchesPackageItem->execute(['id' => $request->route('id')]); - return $this->resourceResponse(new PackageItemResource($query)); + return $this->resourceResponse(new ItemResource($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/PackingLists/ControllersLogic/Packages/Items/ListPackageItemsLogic.php similarity index 74% rename from app/Classes/Modules/PackageItems/ControllersLogic/ListPackageItemsLogic.php rename to app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/ListPackageItemsLogic.php index 268a9624..04bbaa27 100644 --- a/app/Classes/Modules/PackageItems/ControllersLogic/ListPackageItemsLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/ListPackageItemsLogic.php @@ -4,9 +4,9 @@ namespace App\Classes\Modules\PackageItems\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\PackageItems\Services\ListsPackageItems; -use App\Classes\Modules\PackageItems\Standards\Rules\CanListPackageItems; -use App\Http\Resources\PackageItemResource; +use App\Classes\Modules\PackingLists\Services\Packages\Items\ListsPackageItems; +use App\Classes\Modules\PackingLists\Standards\Rules\Packages\Items\CanListItems; +use App\Http\Resources\ItemResource; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -24,7 +24,7 @@ class ListPackageItemsLogic extends AbstractControllerLogic ]; } - /** @var CanListPackageItems */ + /** @var CanListItems */ private $canListPackageItems; /** @var ListsPackageItems */ @@ -32,10 +32,10 @@ class ListPackageItemsLogic extends AbstractControllerLogic /** * ListPackageItemsLogic constructor. - * @param CanListPackageItems $canListPackageItems + * @param CanListItems $canListPackageItems * @param ListsPackageItems $listsPackageItems */ - public function __construct(CanListPackageItems $canListPackageItems, ListsPackageItems $listsPackageItems) + public function __construct(CanListItems $canListPackageItems, ListsPackageItems $listsPackageItems) { $this->canListPackageItems = $canListPackageItems; $this->listsPackageItems = $listsPackageItems; @@ -55,7 +55,7 @@ class ListPackageItemsLogic extends AbstractControllerLogic $query = $this->listsPackageItems->execute($this->listsPackageItems->deserializeFilters($request->input('filters'))); - return $this->collectionResponse(PackageItemResource::collection($query)); + return $this->collectionResponse(ItemResource::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/PackingLists/ControllersLogic/Packages/Items/UpdatePackageItemLogic.php similarity index 75% rename from app/Classes/Modules/PackageItems/ControllersLogic/UpdatePackageItemLogic.php rename to app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/UpdatePackageItemLogic.php index 698a464f..7af2108e 100644 --- a/app/Classes/Modules/PackageItems/ControllersLogic/UpdatePackageItemLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/Items/UpdatePackageItemLogic.php @@ -4,11 +4,11 @@ namespace App\Classes\Modules\PackageItems\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\PackageItems\Services\UpdatesPackageItem; -use App\Classes\Modules\PackageItems\Services\FetchesPackageItem; -use App\Classes\Modules\PackageItems\Standards\Rules\CanUpdatePackageItem; -use App\Classes\Modules\PackageItems\DataTransferObjects\PackageItemObject; -use App\Http\Resources\PackageItemResource; +use App\Classes\Modules\PackingLists\Services\Packages\Items\UpdatesPackageItem; +use App\Classes\Modules\PackingLists\Services\Packages\Items\FetchesItem; +use App\Classes\Modules\PackingLists\Standards\Rules\Packages\Items\CanUpdatePackageItem; +use App\Classes\Modules\PackingLists\DataTransferObjects\ItemObject; +use App\Http\Resources\ItemResource; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -32,16 +32,16 @@ class UpdatePackageItemLogic extends AbstractControllerLogic /** @var UpdatesPackageItem */ private $updatesPackageItem; - /** @var FetchesPackageItem */ + /** @var FetchesItem */ private $fetchesPackageItem; /** * UpdatePackageItemLogic constructor. * @param CanUpdatePackageItem $canUpdatePackageItem * @param UpdatesPackageItem $updatesPackageItem - * @param FetchesPackageItem $fetchesPackageItem + * @param FetchesItem $fetchesPackageItem */ - public function __construct(CanUpdatePackageItem $canUpdatePackageItem, UpdatesPackageItem $updatesPackageItem, FetchesPackageItem $fetchesPackageItem) + public function __construct(CanUpdatePackageItem $canUpdatePackageItem, UpdatesPackageItem $updatesPackageItem, FetchesItem $fetchesPackageItem) { $this->canUpdatePackageItem = $canUpdatePackageItem; $this->updatesPackageItem = $updatesPackageItem; @@ -58,7 +58,7 @@ class UpdatePackageItemLogic extends AbstractControllerLogic { $packageItem = $this->fetchesPackageItem->execute(['id' => $request->route('id')]); - $object = new PackageItemObject( + $object = new ItemObject( $packageItem->package_id, $request->input('name'), $packageItem->reference, @@ -73,7 +73,7 @@ class UpdatePackageItemLogic extends AbstractControllerLogic $query = $this->updatesPackageItem->execute($packageItem, $object); - return $this->resourceResponse(new PackageItemResource($query)); + return $this->resourceResponse(new ItemResource($query)); } diff --git a/app/Classes/Modules/Packages/ControllersLogic/ListPackagesLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php similarity index 95% rename from app/Classes/Modules/Packages/ControllersLogic/ListPackagesLogic.php rename to app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php index 69acf7b6..48aee051 100644 --- a/app/Classes/Modules/Packages/ControllersLogic/ListPackagesLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/ListPackagesLogic.php @@ -1,6 +1,6 @@ reference = $reference; $this->status = $status; } + /** + * @return null|string + */ public function getReference(): ?string { return $this->reference; } + /** + * @return int + */ 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 deleted file mode 100644 index 3c1aef5b..00000000 --- a/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListPackageObject.php +++ /dev/null @@ -1,30 +0,0 @@ -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/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php new file mode 100644 index 00000000..1fd7e0c2 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php @@ -0,0 +1,138 @@ +clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":-1,"PageSize":1000,"SortExpression":"ModifiedOn DESC"}}'), ''); + $response = $this->getResponseBody($loginRequest); + $orders = []; + $unknown = 0; + + foreach ($response->Rows as $parcel){ + $marking = explode('/', explode('CIEF/', $parcel[5])[1]); + $customerMarking = $marking[0]; + if(!array_key_exists(1, $marking)){ + $unknown++; + echo "found and order without order number"; + continue; + } + $orderNumber = $marking[1]; + $ctn = $parcel[9]; + if(!array_key_exists($customerMarking, $orders)){ + $orders[$customerMarking] = [ + $orderNumber => [ + 'ctn' => $ctn, + 'cbm' => $parcel[10], + ] + ]; + continue; + } +// + + if(!array_key_exists($orderNumber, $orders[$customerMarking])){ + $orders[$customerMarking][$orderNumber]['ctn'] = 0; + $orders[$customerMarking][$orderNumber]['cbm'] = 0; + } + + $orders[$customerMarking][$orderNumber]['ctn'] += $ctn; + $orders[$customerMarking][$orderNumber]['cbm'] += $parcel[10]; +// $orders[$customerMarking][$orderNumber]['cbm'] += $parcel[10]; +// $orders[$customerMarking][$orderNumber]['ctn'] += $ctn; +// if(!$orders->contains($customerMarking)){ +// $orders->push(collect([ +// $customerMarking => collect() +// ])); +// } +// dd($orders); +// +// if(!$orders[$customerMarking]->contains($orderNumber)){ +// $orders[$customerMarking]->push(collect([ +// $orderNumber => [ +// 'ctn' => $ctn, +// 'cbm' => $parcel[10] +// ] +// ])); +// } else { +// $orders[$customerMarking][$orderNumber]['ctn'] += $ctn; +// $orders[$customerMarking][$orderNumber]['cbm'] += $parcel[10]; +// } + } + dd($orders, $unknown); + + } + + /** + * @throws GuzzleException + */ + private function remoteLogin(){ + + $latest_cookie = []; + $cookieRequest = new \GuzzleHttp\Client(['cookies' => true]); + $cookieRequest->get('https://portalvt.azurewebsites.net'); + foreach ($cookieRequest->getConfig('cookies')->toArray() as $key => $row) { + $latest_cookie[] = $row['Name'] . '=' . $row['Value']; + } + + $latest_cookie = implode(';', $latest_cookie); + + + /** @var $loginRequest */ + $loginRequest = $this->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', 'POST', [ + "username" => "CIEF", + "password" => "0122120880", + "createPersistentCookie" => true, + ], $latest_cookie, false); + + Cache::store('file')->put('VT_COOKIE_CACHE', $latest_cookie.';AppVTCC='.$this->getResponseBody($loginRequest)->AccessToken, 3000); + + } + + /** + * @param string $url + * @param string $method + * @param $body + * @param string $cookie + * @param bool $requiresAuthentication + * @return ResponseInterface + * @throws GuzzleException + */ + private function clientRequest(string $url, string $method, $body, string $cookie, $requiresAuthentication = true){ + + if($requiresAuthentication) { + if(!Cache::has('VT_COOKIE_CACHE')){ + $this->remoteLogin(); + } + } + + $client = new \GuzzleHttp\Client( + [ + 'cookies' => true, + 'headers' => [ + 'Content-Type' => 'application/json', + 'Cookie' => Cache::has('VT_COOKIE_CACHE') ? Cache::get('VT_COOKIE_CACHE'):$cookie + ] + ] + ); + + $request = $client->request($method, $url, [\GuzzleHttp\RequestOptions::JSON => $body]); + + return $request; + } + + private function getResponseBody(ResponseInterface $request){ + return json_decode($request->getBody()->getContents())->d; + } +} diff --git a/app/Classes/Modules/ContainerPackingLists/Services/CreatesContainerPackingList.php b/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php similarity index 54% rename from app/Classes/Modules/ContainerPackingLists/Services/CreatesContainerPackingList.php rename to app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php index 07c3e135..f4172753 100644 --- a/app/Classes/Modules/ContainerPackingLists/Services/CreatesContainerPackingList.php +++ b/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php @@ -1,21 +1,21 @@ packing_list_id = $object->getPackingListId(); $model->container_reference = $object->getContainerReference(); diff --git a/app/Classes/Modules/PackingLists/Services/Containers/DeletesContainer.php b/app/Classes/Modules/PackingLists/Services/Containers/DeletesContainer.php new file mode 100644 index 00000000..8453eb7d --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/Containers/DeletesContainer.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/Containers/FetchesContainer.php b/app/Classes/Modules/PackingLists/Services/Containers/FetchesContainer.php new file mode 100644 index 00000000..a6bc152c --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/Containers/FetchesContainer.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/Containers/ListsContainers.php b/app/Classes/Modules/PackingLists/Services/Containers/ListsContainers.php new file mode 100644 index 00000000..559d7fcc --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/Containers/ListsContainers.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/PackingLists/Services/Containers/UpdatesContainer.php similarity index 50% rename from app/Classes/Modules/ContainerPackingLists/Services/UpdatesContainerPackingList.php rename to app/Classes/Modules/PackingLists/Services/Containers/UpdatesContainer.php index 649e3077..c3f6f1a4 100644 --- a/app/Classes/Modules/ContainerPackingLists/Services/UpdatesContainerPackingList.php +++ b/app/Classes/Modules/PackingLists/Services/Containers/UpdatesContainer.php @@ -1,21 +1,21 @@ container_reference = $object->getContainerReference(); $model->container_type = $object->getContainerType(); diff --git a/app/Classes/Modules/Packages/Services/CreatesPackage.php b/app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php similarity index 85% rename from app/Classes/Modules/Packages/Services/CreatesPackage.php rename to app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php index e7c8ad94..ef9f7623 100644 --- a/app/Classes/Modules/Packages/Services/CreatesPackage.php +++ b/app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php @@ -1,9 +1,9 @@ package_id = $object->getPackageId(); $model->name = $object->getName(); $model->reference = $object->getReference(); diff --git a/app/Classes/Modules/PackingLists/Services/Packages/Items/DeletesItem.php b/app/Classes/Modules/PackingLists/Services/Packages/Items/DeletesItem.php new file mode 100644 index 00000000..51cf6253 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/Packages/Items/DeletesItem.php @@ -0,0 +1,19 @@ +handler($model); + } +} diff --git a/app/Classes/Modules/PackageItems/Services/FetchesPackageItem.php b/app/Classes/Modules/PackingLists/Services/Packages/Items/FetchesItem.php similarity index 60% rename from app/Classes/Modules/PackageItems/Services/FetchesPackageItem.php rename to app/Classes/Modules/PackingLists/Services/Packages/Items/FetchesItem.php index a31b95e0..6b54c68f 100644 --- a/app/Classes/Modules/PackageItems/Services/FetchesPackageItem.php +++ b/app/Classes/Modules/PackingLists/Services/Packages/Items/FetchesItem.php @@ -1,23 +1,23 @@ repository = $repository; } diff --git a/app/Classes/Modules/PackageItems/Services/ListsPackageItems.php b/app/Classes/Modules/PackingLists/Services/Packages/Items/ListsPackageItems.php similarity index 67% rename from app/Classes/Modules/PackageItems/Services/ListsPackageItems.php rename to app/Classes/Modules/PackingLists/Services/Packages/Items/ListsPackageItems.php index 5a616642..e5444db4 100644 --- a/app/Classes/Modules/PackageItems/Services/ListsPackageItems.php +++ b/app/Classes/Modules/PackingLists/Services/Packages/Items/ListsPackageItems.php @@ -1,23 +1,23 @@ repository = $repository; } diff --git a/app/Classes/Modules/PackageItems/Services/UpdatesPackageItem.php b/app/Classes/Modules/PackingLists/Services/Packages/Items/UpdatesItem.php similarity index 63% rename from app/Classes/Modules/PackageItems/Services/UpdatesPackageItem.php rename to app/Classes/Modules/PackingLists/Services/Packages/Items/UpdatesItem.php index 68a15ce2..e33e5a45 100644 --- a/app/Classes/Modules/PackageItems/Services/UpdatesPackageItem.php +++ b/app/Classes/Modules/PackingLists/Services/Packages/Items/UpdatesItem.php @@ -1,14 +1,14 @@ name = $object->getName(); $model->reference = $object->getReference(); diff --git a/app/Classes/Modules/Packages/Services/ListsPackages.php b/app/Classes/Modules/PackingLists/Services/Packages/ListsPackages.php similarity index 90% rename from app/Classes/Modules/Packages/Services/ListsPackages.php rename to app/Classes/Modules/PackingLists/Services/Packages/ListsPackages.php index 40bdd5bb..5f6f2e97 100644 --- a/app/Classes/Modules/Packages/Services/ListsPackages.php +++ b/app/Classes/Modules/PackingLists/Services/Packages/ListsPackages.php @@ -1,6 +1,6 @@ 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/CanCreateContainerPackingList.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php similarity index 80% rename from app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanCreateContainerPackingList.php rename to app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php index d12e0aa3..7163461d 100644 --- a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanCreateContainerPackingList.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php @@ -1,13 +1,13 @@ containerPackingListValidation = $containerPackingListValidation; } diff --git a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanListContainerPackingLists.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php similarity index 58% rename from app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanListContainerPackingLists.php rename to app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php index 5b2bc0b3..3c4df10e 100644 --- a/app/Classes/Modules/ContainerPackingLists/Standards/Rules/CanListContainerPackingLists.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php @@ -1,12 +1,12 @@ ContainerValidation = $ContainerValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param ContainerObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->ContainerValidation->validate($object); + + } + + + /** + * @param ContainerObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} diff --git a/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php similarity index 81% rename from app/Classes/Modules/Packages/Standards/Rules/CanCreatePackage.php rename to app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php index d40b1591..1e6159af 100644 --- a/app/Classes/Modules/Packages/Standards/Rules/CanCreatePackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanCreatePackage.php @@ -1,11 +1,11 @@ packageItemValidation = $packageItemValidation; } diff --git a/app/Classes/Modules/Packages/Standards/Rules/CanDeletePackage.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php similarity index 80% rename from app/Classes/Modules/Packages/Standards/Rules/CanDeletePackage.php rename to app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php index 80139d86..cdf793a8 100644 --- a/app/Classes/Modules/Packages/Standards/Rules/CanDeletePackage.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/CanDeletePackage.php @@ -1,10 +1,10 @@ packageItemValidation = $packageItemValidation; } @@ -34,7 +34,7 @@ class CanCreatePackageItem extends AbstractRule } /** - * @param PackageItemObject $object + * @param ItemObject $object * @return bool * @throws \App\Classes\Exceptions\RequestValidationException */ @@ -46,7 +46,7 @@ class CanCreatePackageItem extends AbstractRule /** - * @param PackageItemObject $object + * @param ItemObject $object * @return bool */ protected function criteria($object): bool diff --git a/app/Classes/Modules/PackageItems/Standards/Rules/CanFetchPackageItem.php b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php similarity index 63% rename from app/Classes/Modules/PackageItems/Standards/Rules/CanFetchPackageItem.php rename to app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php index c0fd2a9b..e68a12ec 100644 --- a/app/Classes/Modules/PackageItems/Standards/Rules/CanFetchPackageItem.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Packages/Items/CanDeleteItem.php @@ -1,12 +1,12 @@ PackageItemValidation = $PackageItemValidation; } @@ -34,7 +34,7 @@ class CanUpdatePackageItem extends AbstractRule } /** - * @param PackageItemObject $object + * @param ItemObject $object * @return bool * @throws \App\Classes\Exceptions\RequestValidationException */ @@ -46,7 +46,7 @@ class CanUpdatePackageItem extends AbstractRule /** - * @param PackageItemObject $object + * @param ItemObject $object * @return bool */ protected function criteria($object): bool diff --git a/app/Classes/Modules/PackingLists/Standards/Validators/ContainerPackingListValidation.php b/app/Classes/Modules/PackingLists/Standards/Validators/ContainerPackingListValidation.php deleted file mode 100644 index 0ff94dc7..00000000 --- a/app/Classes/Modules/PackingLists/Standards/Validators/ContainerPackingListValidation.php +++ /dev/null @@ -1,45 +0,0 @@ - $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/ContainerPackingLists/Standards/Validators/ContainerPackingListValidation.php b/app/Classes/Modules/PackingLists/Standards/Validators/ContainerValidation.php similarity index 79% rename from app/Classes/Modules/ContainerPackingLists/Standards/Validators/ContainerPackingListValidation.php rename to app/Classes/Modules/PackingLists/Standards/Validators/ContainerValidation.php index d8ed3fa9..f965e331 100644 --- a/app/Classes/Modules/ContainerPackingLists/Standards/Validators/ContainerPackingListValidation.php +++ b/app/Classes/Modules/PackingLists/Standards/Validators/ContainerValidation.php @@ -1,16 +1,16 @@ completeStepProcessor = $completeStepProcessor; + } + + protected function notification():array { + return [ + 'title' => 'Completed Order Step', + 'message' => 'You have successfully completed a order step' + ]; + } + + public function logic(Request $request) : JsonResponse { + + $completedStep = $this->completeStepProcessor->execute($request); + + return $this->resourceResponse(new StepResource($completedStep)); + } +} diff --git a/app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php b/app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php similarity index 93% rename from app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php rename to app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php index 4266c407..1c75079a 100644 --- a/app/Classes/Modules/OrderSteps/DataTransferObjects/OrderStepsObject.php +++ b/app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php @@ -1,11 +1,11 @@ fetchesOrderStep = $fetchesOrderStep; + $this->fetchesStep = $fetchesStep; $this->unityUpdateObligation = $unityUpdateObligation; - $this->canUpdateOrderStep = $canUpdateOrderStep; - $this->updatesOrderStep = $updatesOrderStep; + $this->canUpdateStep = $canUpdateStep; + $this->updatesStep = $updatesStep; $this->updatesOrderCurrentStep = $updatesOrderCurrentStep; } public function execute(Request $request) { - $orderStep = $this->fetchesOrderStep->getRepository()->where('id', $request->get('id'))->first(); + $orderStep = $this->fetchesStep->getRepository()->where('id', $request->get('id'))->first(); $contractEntity = $orderStep->orderRole()->where('order_id',$orderStep->owner_id)->first(); @@ -52,7 +52,7 @@ class CompletesOrderStepProcessor //Unity Contract Obligation Completed Status = 3 if(isset($completed->status) && $completed->status == OrderStatus::COMPLETE){ - $orderStepObject = new OrderStepsObject( + $orderStepObject = new StepsObject( $contractEntity->company_module_id, $orderStep->reference, true, @@ -64,9 +64,9 @@ class CompletesOrderStepProcessor $orderStep->hash_id ); - $this->canUpdateOrderStep->passes($orderStepObject); + $this->canUpdateStep->passes($orderStepObject); - $updatedOrderStep = $this->updatesOrderStep->execute($orderStep, $orderStepObject); + $updatedStep = $this->updatesStep->execute($orderStep, $orderStepObject); $this->updatesOrderCurrentStep->execute( $orderStep->order->id, $orderStep->reference); } diff --git a/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php b/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php new file mode 100644 index 00000000..d7b4e95e --- /dev/null +++ b/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php @@ -0,0 +1,47 @@ +canCreateStep = $canCreateStep; + $this->createsSteps = $createsSteps; + $this->fetchesOrder = $fetchesOrder; + $this->fetchesSteps = $fetchesSteps; + } + + public function execute(Model $order, string $currentStep, $appointee_id){ + + $order_steps_object = new StepsObject( $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); + + $this->canCreateStep->passes($order_steps_object); + + return $this->createsSteps->execute($order, $order_steps_object); + + } +} diff --git a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php b/app/Classes/Modules/Steps/Processors/GenerateStepsProcessor.php similarity index 56% rename from app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php rename to app/Classes/Modules/Steps/Processors/GenerateStepsProcessor.php index 3426522f..9b40a3ed 100644 --- a/app/Classes/Modules/OrderSteps/Processors/GenerateOrderStepsProcessor.php +++ b/app/Classes/Modules/Steps/Processors/GenerateStepsProcessor.php @@ -1,41 +1,41 @@ updatesOrderCurrentStep = $updatesOrderCurrentStep; - $this->createsManyOrderStep = $createsManyOrderStep; - $this->updateOrderStepProcessors = $updateOrderStepProcessors; + $this->createsManyStep = $createsManyStep; + $this->updateStepProcessors = $updateStepProcessors; $this->getUnityContractObligationsProcessor = $getUnityContractObligationsProcessor; } @@ -46,7 +46,7 @@ class GenerateOrderStepsProcessor //TODO: Collect hash_id & search company module table for appointee id foreach($obligations as $step){ - $orderSteps[] = new OrderStepsObject( + $orderSteps[] = new StepsObject( $orderRoles[0]->company_module_id, $step->name, true, @@ -59,11 +59,11 @@ class GenerateOrderStepsProcessor ); } - $this->createsManyOrderStep->execute($order, $orderSteps); + $this->createsManyStep->execute($order, $orderSteps); - $this->updatesOrderCurrentStep->execute($order->id, OrderSteps::PACKING); + $this->updatesOrderCurrentStep->execute($order->id, Steps::PACKING); - $this->updateOrderStepProcessors->execute(OrderSteps::PROCESSING); + $this->updateStepProcessors->execute(Steps::PROCESSING); } } diff --git a/app/Classes/Modules/Steps/Processors/UpdateStepsProcessor.php b/app/Classes/Modules/Steps/Processors/UpdateStepsProcessor.php new file mode 100644 index 00000000..6f26a3b2 --- /dev/null +++ b/app/Classes/Modules/Steps/Processors/UpdateStepsProcessor.php @@ -0,0 +1,43 @@ +canUpdateStep = $canUpdateStep; + $this->updatesSteps = $updatesSteps; + $this->fetchesSteps = $fetchesSteps; + } + + public function execute(string $currentStep){ + + $orderStepsObject = new StepsObject(0,$currentStep, 0, 0, 1, 1, null, 0, null); + + $this->canUpdateStep->passes($orderStepsObject); + + $orderSteps = $this->fetchesSteps->execute(['reference'=>$currentStep]); + + $this->updatesSteps->execute($orderSteps, $orderStepsObject); + + } +} diff --git a/app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php b/app/Classes/Modules/Steps/Services/CreatesManySteps.php similarity index 75% rename from app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php rename to app/Classes/Modules/Steps/Services/CreatesManySteps.php index 39a0bd60..a2f4099f 100644 --- a/app/Classes/Modules/OrderSteps/Services/CreatesManyOrderSteps.php +++ b/app/Classes/Modules/Steps/Services/CreatesManySteps.php @@ -1,14 +1,14 @@ orderSteps()->createMany($orderStepsModel); } diff --git a/app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php b/app/Classes/Modules/Steps/Services/CreatesSteps.php similarity index 56% rename from app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php rename to app/Classes/Modules/Steps/Services/CreatesSteps.php index 7b44589d..0cadbe55 100644 --- a/app/Classes/Modules/OrderSteps/Services/CreatesOrderSteps.php +++ b/app/Classes/Modules/Steps/Services/CreatesSteps.php @@ -1,19 +1,25 @@ appointee_id = $orderSteps->getAppointeeId(); $orderStepsModel->reference = $orderSteps->getReference(); diff --git a/app/Classes/Modules/Steps/Services/FetchesSteps.php b/app/Classes/Modules/Steps/Services/FetchesSteps.php new file mode 100644 index 00000000..612ba628 --- /dev/null +++ b/app/Classes/Modules/Steps/Services/FetchesSteps.php @@ -0,0 +1,32 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/OrderSteps/Services/ListsOrderSteps.php b/app/Classes/Modules/Steps/Services/ListsSteps.php similarity index 59% rename from app/Classes/Modules/OrderSteps/Services/ListsOrderSteps.php rename to app/Classes/Modules/Steps/Services/ListsSteps.php index e4aa2d87..3d1bad19 100644 --- a/app/Classes/Modules/OrderSteps/Services/ListsOrderSteps.php +++ b/app/Classes/Modules/Steps/Services/ListsSteps.php @@ -1,23 +1,23 @@ repository = $repository; } diff --git a/app/Classes/Modules/OrderSteps/Services/UpdatesOrderSteps.php b/app/Classes/Modules/Steps/Services/UpdatesSteps.php similarity index 51% rename from app/Classes/Modules/OrderSteps/Services/UpdatesOrderSteps.php rename to app/Classes/Modules/Steps/Services/UpdatesSteps.php index 9966e9d9..ed4ec50e 100644 --- a/app/Classes/Modules/OrderSteps/Services/UpdatesOrderSteps.php +++ b/app/Classes/Modules/Steps/Services/UpdatesSteps.php @@ -1,15 +1,15 @@ status = $object->getStatus(); $model->contract_status = $object->getContractStatus(); diff --git a/app/Classes/Modules/OrderSteps/Standards/Rules/CanCreateOrderStep.php b/app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php similarity index 70% rename from app/Classes/Modules/OrderSteps/Standards/Rules/CanCreateOrderStep.php rename to app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php index 65bec43a..b7778830 100644 --- a/app/Classes/Modules/OrderSteps/Standards/Rules/CanCreateOrderStep.php +++ b/app/Classes/Modules/Steps/Standards/Rules/CanCreateStep.php @@ -1,15 +1,15 @@ orderValidation = $orderValidation; } diff --git a/app/Classes/Modules/OrderSteps/Standards/Rules/CanUpdateOrderStep.php b/app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php similarity index 68% rename from app/Classes/Modules/OrderSteps/Standards/Rules/CanUpdateOrderStep.php rename to app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php index 0ac8488f..42f53932 100644 --- a/app/Classes/Modules/OrderSteps/Standards/Rules/CanUpdateOrderStep.php +++ b/app/Classes/Modules/Steps/Standards/Rules/CanUpdateStep.php @@ -1,15 +1,15 @@ orderValidation = $orderValidation; } diff --git a/app/Classes/Modules/OrderSteps/Standards/Validators/CreateOrderStepValidation.php b/app/Classes/Modules/Steps/Standards/Validators/CreateStepValidation.php similarity index 85% rename from app/Classes/Modules/OrderSteps/Standards/Validators/CreateOrderStepValidation.php rename to app/Classes/Modules/Steps/Standards/Validators/CreateStepValidation.php index 4721a459..161b13a6 100644 --- a/app/Classes/Modules/OrderSteps/Standards/Validators/CreateOrderStepValidation.php +++ b/app/Classes/Modules/Steps/Standards/Validators/CreateStepValidation.php @@ -1,11 +1,11 @@ canCreateTransport = $canCreateTransport; - $this->fetchesContainerPackingList = $fetchesContainerPackingList; + $this->fetchesContainer = $fetchesContainer; $this->createsTransport = $createsTransport; } @@ -62,7 +62,7 @@ class CreateTransportLogic extends AbstractControllerLogic $this->canCreateTransport->passes($object); - $query = $this->createsTransport->execute($this->fetchesContainerPackingList->execute(['id' => $request->input('container_id')]), $object); + $query = $this->createsTransport->execute($this->fetchesContainer->execute(['id' => $request->input('container_id')]), $object); return $this->resourceResponse(new TransportResource($query)); diff --git a/app/Classes/Modules/Transports/Services/CreatesTransport.php b/app/Classes/Modules/Transports/Services/CreatesTransport.php index 53981bd8..1011e139 100644 --- a/app/Classes/Modules/Transports/Services/CreatesTransport.php +++ b/app/Classes/Modules/Transports/Services/CreatesTransport.php @@ -6,18 +6,18 @@ use App\Classes\General\Eloquent\AbstractUpdateRecord; use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; use App\Classes\Modules\Transports\DataTransferObjects\TransportObject; use App\Models\Transport; -use App\Models\ContainerPackingList; +use App\Models\Container; class CreatesTransport extends AbstractUpdateRelationshipRecord { /** - * @param ContainerPackingList $containerPackingList + * @param Container $containerPackingList * @param TransportObject $object * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(ContainerPackingList $containerPackingList, TransportObject $object) { + public function execute(Container $containerPackingList, TransportObject $object) { $model = new Transport(); $model->type = $object->getType(); diff --git a/app/Classes/ValueObjects/Constants/ContainerTypes.php b/app/Classes/ValueObjects/Constants/ContainerTypes.php new file mode 100644 index 00000000..776d492f --- /dev/null +++ b/app/Classes/ValueObjects/Constants/ContainerTypes.php @@ -0,0 +1,73 @@ + [ + 'name' => '20\' Dry Container', + 'internal_dimensions' => [ + 'length' => 589.6, + 'width' => 235, + 'height' => 238.5 + ], + 'door_opening' => [ + 'width' => 234.0, + 'height' => 227.4 + ], + 'tare_weight' => 2200, + 'payload' => 24850 + ], + self::FORTY_FEET_DRY_CONTAINER => [ + 'name' => '40\' Dry Container', + 'internal_dimensions' => [ + 'length' => 1203.5, + 'width' => 234.7, + 'height' => 234.9 + ], + 'door_opening' => [ + 'width' => 234.3, + 'height' => 227.8 + ], + 'tare_weight' => 3700, + 'payload' => 29710 + ], + self::FORTY_FEET_HIGH_CUBE_CONTAINER => [ + 'name' => '40\' High Cube Container', + 'internal_dimensions' => [ + 'length' => 1205.6, + 'width' => 234.7, + 'height' => 268.4 + ], + 'door_opening' => [ + 'width' => 234.3, + 'height' => 258.4 + ], + 'tare_weight' => 3000, + 'payload' => 29600 + ], + self::FORTY_FIVE_FEET_HIGH_CUBE_CONTAINER => [ + 'name' => '45\' High Cube Container', + 'internal_dimensions' => [ + 'length' => 1358.2, + 'width' => 234.7, + 'height' => 269.6 + ], + 'door_opening' => [ + 'width' => 234, + 'height' => 258.4 + ], + 'tare_weight' => 2900, + 'payload' => 24250 + ] + ]; + +} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/OrderEntity.php b/app/Classes/ValueObjects/Constants/OrderEntity.php deleted file mode 100644 index 6151e4ff..00000000 --- a/app/Classes/ValueObjects/Constants/OrderEntity.php +++ /dev/null @@ -1,15 +0,0 @@ - [ + Steps::ORDER_PROCESSING_STEP => [ 'initial_name' => 'processing order', 'final_name' => 'order confirmed', 'description' => 'Order created and pending confirmation', @@ -45,13 +45,13 @@ final class OrderSteps ]; public const ORDER_PRIMARY_MODULAR_STEPS = [ - OrderSteps::ORDER_SHIPPING_STEP => [ + Steps::ORDER_SHIPPING_STEP => [ 'initial_name' => 'shipping', 'final_name' => 'shipped out', 'description' => 'Order is Loaded to Container, waiting for Shipment', 'sequence' => 1 ], - OrderSteps::ORDER_DELIVERY_STEP => [ + Steps::ORDER_DELIVERY_STEP => [ 'initial_name' => 'delivery', 'final_name' => 'Received', 'description' => 'Order out for delivery soon', @@ -60,17 +60,17 @@ final class OrderSteps ]; public const ORDER_MODULAR_STEPS = [ - OrderSteps::ORDER_MODULE_WAREHOUSE => [ + Steps::ORDER_MODULE_WAREHOUSE => [ 'china_warehouse' => [ - 'previous' => OrderSteps::ORDER_PROCESSING_STEP, - 'next' => OrderSteps::ORDER_SHIPPING_STEP, + 'previous' => Steps::ORDER_PROCESSING_STEP, + 'next' => Steps::ORDER_SHIPPING_STEP, 'steps' => [ - OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP => [ + Steps::ORDER_WAREHOUSE_RECEIVING_STEP => [ 'initial_name' => 'pending supplier', 'final_name' => 'arrived at warehouse', 'description' => 'Waiting for supplier to deliver order to warehouse' ], - OrderSteps::ORDER_WAREHOUSE_PACKING_STEP => [ + Steps::ORDER_WAREHOUSE_PACKING_STEP => [ 'initial_name' => 'packing', 'final_name' => 'packed', 'description' => 'Packing order into shipping container' @@ -78,15 +78,15 @@ final class OrderSteps ] ], 'malaysia_warehouse' => [ - 'previous' => OrderSteps::ORDER_SHIPPING_STEP, - 'next' => OrderSteps::ORDER_DELIVERY_STEP, + 'previous' => Steps::ORDER_SHIPPING_STEP, + 'next' => Steps::ORDER_DELIVERY_STEP, 'steps' => [ - OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP => [ + Steps::ORDER_WAREHOUSE_ARRIVAL_STEP => [ 'initial_name' => 'pending arrival', 'final_name' => 'arrived at warehouse', 'description' => 'Waiting for order\'s arrival & custom clearance' ], - OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP => [ + Steps::ORDER_WAREHOUSE_UNPACKING_STEP => [ 'initial_name' => 'unpacking', 'final_name' => 'unpacked', 'description' => 'Unpacking order from shipping container' @@ -94,12 +94,12 @@ final class OrderSteps ] ] ], - OrderSteps::ORDER_MODULE_NO_WAREHOUSE => [ + Steps::ORDER_MODULE_NO_WAREHOUSE => [ 'pending_arrival' => [ - 'previous' => OrderSteps::ORDER_PROCESSING_STEP, - 'next' => OrderSteps::ORDER_SHIPPING_STEP, + 'previous' => Steps::ORDER_PROCESSING_STEP, + 'next' => Steps::ORDER_SHIPPING_STEP, 'steps' => [ - OrderSteps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER => [ + Steps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER => [ 'initial_name' => 'pending supplier', 'final_name' => 'supplier packed order', 'description' => 'Waiting for supplier to pack order for shipping' @@ -111,20 +111,20 @@ final class OrderSteps ]; public const COMPANY_ORDER_PROCESSING = [ - OrderSteps::ORDER_PROCESSING_STEP, - OrderSteps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER, - OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP + Steps::ORDER_PROCESSING_STEP, + Steps::ORDER_NO_WAREHOUSE_PENDING_SUPPLIER, + Steps::ORDER_WAREHOUSE_RECEIVING_STEP ]; public const COMPANY_ORDER_SHIPPING = [ - OrderSteps::ORDER_WAREHOUSE_PACKING_STEP, - OrderSteps::ORDER_SHIPPING_STEP + Steps::ORDER_WAREHOUSE_PACKING_STEP, + Steps::ORDER_SHIPPING_STEP ]; public const COMPANY_ORDER_RECEIVING = [ - OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP, - OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP, - OrderSteps::ORDER_DELIVERY_STEP + Steps::ORDER_WAREHOUSE_ARRIVAL_STEP, + Steps::ORDER_WAREHOUSE_UNPACKING_STEP, + Steps::ORDER_DELIVERY_STEP ]; @@ -134,28 +134,28 @@ final class OrderSteps public const WAREHOUSE_CANCEL_CATEGORY = 'cancel'; public const WAREHOUSE_ORDER_RECEIVING = [ - OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP + Steps::ORDER_WAREHOUSE_RECEIVING_STEP ]; public const WAREHOUSE_ORDER_SHIPPING = [ - OrderSteps::ORDER_WAREHOUSE_PACKING_STEP, - OrderSteps::ORDER_SHIPPING_STEP, + Steps::ORDER_WAREHOUSE_PACKING_STEP, + Steps::ORDER_SHIPPING_STEP, ]; public const WAREHOUSE_ORDER_COMPLETE = [ - OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP, - OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP, - OrderSteps::ORDER_DELIVERY_STEP + Steps::ORDER_WAREHOUSE_ARRIVAL_STEP, + Steps::ORDER_WAREHOUSE_UNPACKING_STEP, + Steps::ORDER_DELIVERY_STEP ]; public const STEP_PROCESSOR = [ - OrderSteps::ORDER_PROCESSING_STEP => ConfirmsOrder::class, - OrderSteps::ORDER_WAREHOUSE_RECEIVING_STEP => WarehouseReceivesOrder::class, - OrderSteps::ORDER_WAREHOUSE_PACKING_STEP => WarehousePackOrder::class, - OrderSteps::ORDER_SHIPPING_STEP => ShipOrder::class, - OrderSteps::ORDER_WAREHOUSE_ARRIVAL_STEP => WarehouseArrivalOrder::class, - OrderSteps::ORDER_WAREHOUSE_UNPACKING_STEP => WarehouseUnpackingOrder::class, - OrderSteps::ORDER_DELIVERY_STEP => DeliverOrder::class, + Steps::ORDER_PROCESSING_STEP => ConfirmsOrder::class, + Steps::ORDER_WAREHOUSE_RECEIVING_STEP => WarehouseReceivesOrder::class, + Steps::ORDER_WAREHOUSE_PACKING_STEP => WarehousePackOrder::class, + Steps::ORDER_SHIPPING_STEP => ShipOrder::class, + Steps::ORDER_WAREHOUSE_ARRIVAL_STEP => WarehouseArrivalOrder::class, + Steps::ORDER_WAREHOUSE_UNPACKING_STEP => WarehouseUnpackingOrder::class, + Steps::ORDER_DELIVERY_STEP => DeliverOrder::class, ]; */ } diff --git a/app/Classes/ValueObjects/Constants/OrderWorkflow.php b/app/Classes/ValueObjects/Constants/OrderWorkflow.php deleted file mode 100644 index ebfd24ea..00000000 --- a/app/Classes/ValueObjects/Constants/OrderWorkflow.php +++ /dev/null @@ -1,19 +0,0 @@ -[], - OrderSteps::PACKING=>[], - OrderSteps::SHIPPING=>[ - OrderSteps::WAREHOUSE_ARRIVAL=>[], - OrderSteps::WAREHOUSE_LOAD_CONTAINER=>[] - ], - OrderSteps::DELIVERY=>[ - OrderSteps::WAREHOUSE_RECEIVING=>[], - OrderSteps::WAREHOUSE_UNLOAD_CONTAINER=>[] - ], - ]; -} \ No newline at end of file diff --git a/app/Http/Controllers/Documents/ApproveDocumentController.php b/app/Http/Controllers/Documents/ApproveDocumentController.php new file mode 100644 index 00000000..ae55f51c --- /dev/null +++ b/app/Http/Controllers/Documents/ApproveDocumentController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Documents/ListDocumentsController.php b/app/Http/Controllers/Documents/ListDocumentsController.php new file mode 100644 index 00000000..a440737d --- /dev/null +++ b/app/Http/Controllers/Documents/ListDocumentsController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Documents/RejectDocumentController.php b/app/Http/Controllers/Documents/RejectDocumentController.php new file mode 100644 index 00000000..156d7d03 --- /dev/null +++ b/app/Http/Controllers/Documents/RejectDocumentController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Documents/RenderDocumentController.php b/app/Http/Controllers/Documents/RenderDocumentController.php new file mode 100644 index 00000000..690f99f9 --- /dev/null +++ b/app/Http/Controllers/Documents/RenderDocumentController.php @@ -0,0 +1,22 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php b/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php new file mode 100644 index 00000000..9f93a08f --- /dev/null +++ b/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php @@ -0,0 +1,41 @@ +route('id')); + $deliveryAddress = $order->addresses()->where('status', ApprovalStatus::APPROVED)->first(); + $warehouse= $order->orderRoles()->where('role_id', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee; + + $warehouseAddress = $warehouse->addresses()->first(); + $warehouseContacts = $warehouse->contacts; + + $data = [ + 'order' => $order, + 'marking' => $order->companyModule->connections()->first()->invitee_reference, + 'delivery_address' => $deliveryAddress, + 'warehouse_address' => $warehouseAddress, + 'warehouse_contacts' => $warehouseContacts, + ]; + + $pdf = LaravelMpdf::loadView('pdfs.qr', $data, [], [ + 'title' => 'CIEF_ORDER_NO_'.$order->reference, + 'format' => 'A4-L', + 'orientation' => 'L', + 'margin_top' => '40px', + ]); + + return $pdf->download('CIEF_ORDER_NO_'.$order->reference.'.pdf'); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/FetchOrderController.php b/app/Http/Controllers/Orders/FetchOrderController.php new file mode 100644 index 00000000..e5b78265 --- /dev/null +++ b/app/Http/Controllers/Orders/FetchOrderController.php @@ -0,0 +1,20 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php index 257128c9..5b0a90ce 100644 --- a/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php +++ b/app/Http/Controllers/PackingLists/Containers/CreateContainerPackingListController.php @@ -2,18 +2,18 @@ namespace App\Http\Controllers\PackingLists\Containers; -use App\Classes\Modules\ContainerPackingLists\ControllersLogic\CreateContainerPackingListLogic; +use App\Classes\Modules\PackingLists\ControllersLogic\Containers\CreateContainerLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class CreateContainerPackingListController +class CreateContainerController { /** * @param Request $request - * @param CreateContainerPackingListLogic $logic + * @param CreateContainerLogic $logic * @return JsonResponse */ - public function create(Request $request, CreateContainerPackingListLogic $logic): JsonResponse { + public function create(Request $request, CreateContainerLogic $logic): JsonResponse { return $logic->execute($request); } diff --git a/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php index 25cb6bb8..71afbbba 100644 --- a/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php +++ b/app/Http/Controllers/PackingLists/Containers/DeleteContainerPackingListController.php @@ -2,18 +2,18 @@ namespace App\Http\Controllers\PackingLists\Containers; -use App\Classes\Modules\ContainerPackingLists\ControllersLogic\DeleteContainerPackingListLogic; +use App\Classes\Modules\PackingLists\ControllersLogic\Containers\DeleteContainerLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class DeleteContainerPackingListController +class DeleteContainerController { /** * @param Request $request - * @param DeleteContainerPackingListLogic $logic + * @param DeleteContainerLogic $logic * @return JsonResponse */ - public function delete(Request $request, DeleteContainerPackingListLogic $logic): JsonResponse { + public function delete(Request $request, DeleteContainerLogic $logic): JsonResponse { return $logic->execute($request); } diff --git a/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php index 0fecdb0a..b7125953 100644 --- a/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php +++ b/app/Http/Controllers/PackingLists/Containers/FetchContainerPackingListController.php @@ -2,18 +2,18 @@ namespace App\Http\Controllers\PackingLists\Containers; -use App\Classes\Modules\ContainerPackingLists\ControllersLogic\FetchContainerPackingListLogic; +use App\Classes\Modules\PackingLists\ControllersLogic\Containers\FetchContainerLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class FetchContainerPackingListController +class FetchContainerController { /** * @param Request $request - * @param FetchContainerPackingListLogic $logic + * @param FetchContainerLogic $logic * @return JsonResponse */ - public function fetch(Request $request, FetchContainerPackingListLogic $logic): JsonResponse { + public function fetch(Request $request, FetchContainerLogic $logic): JsonResponse { return $logic->execute($request); } diff --git a/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php b/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php index 12c01a28..61084f53 100644 --- a/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php +++ b/app/Http/Controllers/PackingLists/Containers/ListContainerPackingListsController.php @@ -2,18 +2,18 @@ namespace App\Http\Controllers\PackingLists\Containers; -use App\Classes\Modules\ContainerPackingLists\ControllersLogic\ListContainerPackingListsLogic; +use App\Classes\Modules\PackingLists\ControllersLogic\Containers\ListContainersLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class ListContainerPackingListsController +class ListContainersController { /** * @param Request $request - * @param ListContainerPackingListLogic $logic + * @param ListContainerLogic $logic * @return JsonResponse */ - public function list(Request $request, ListContainerPackingListsLogic $logic): JsonResponse { + public function list(Request $request, ListContainersLogic $logic): JsonResponse { return $logic->execute($request); } diff --git a/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php b/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php index eac24070..8eef53f7 100644 --- a/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php +++ b/app/Http/Controllers/PackingLists/Containers/UpdateContainerPackingListController.php @@ -2,18 +2,18 @@ namespace App\Http\Controllers\PackingLists\Containers; -use App\Classes\Modules\ContainerPackingLists\ControllersLogic\UpdateContainerPackingListLogic; +use App\Classes\Modules\PackingLists\ControllersLogic\Containers\UpdateContainerLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class UpdateContainerPackingListController +class UpdateContainerController { /** * @param Request $request - * @param UpdateContainerPackingListLogic $logic + * @param UpdateContainerLogic $logic * @return JsonResponse */ - public function update(Request $request, UpdateContainerPackingListLogic $logic): JsonResponse { + public function update(Request $request, UpdateContainerLogic $logic): JsonResponse { return $logic->execute($request); } diff --git a/app/Http/Controllers/Packages/CreatePackageController.php b/app/Http/Controllers/PackingLists/Packages/CreatePackageController.php similarity index 75% rename from app/Http/Controllers/Packages/CreatePackageController.php rename to app/Http/Controllers/PackingLists/Packages/CreatePackageController.php index 458936fa..a3f1ddbb 100644 --- a/app/Http/Controllers/Packages/CreatePackageController.php +++ b/app/Http/Controllers/PackingLists/Packages/CreatePackageController.php @@ -1,8 +1,8 @@ request->add(['id'=>$id]); return $logic->execute($request); diff --git a/app/Http/Controllers/TestSetup.php b/app/Http/Controllers/TestSetup.php deleted file mode 100644 index b5ab03fc..00000000 --- a/app/Http/Controllers/TestSetup.php +++ /dev/null @@ -1,10 +0,0 @@ -addresses()->defaultAddress()->first(); + + /** @var CompanyModule $defaultAddress */ + $defaultAddress = $defaultAddress ? $defaultAddress : $this->addresses()->first(); + + $connection = $this->inviters()->withPivot('invitee_reference')->first(); + $marking = $connection ? $connection->pivot->invitee_reference:''; + + return [ + 'id' => $this->id, + 'type' => $this->type, + 'address' => new AddressResource($defaultAddress), + 'company' => new CompanyResource($this->whenLoaded('company')), + 'marking' => $marking + ]; + + } +} diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php index 726e1c36..8b3bf458 100644 --- a/app/Http/Resources/CompanyResource.php +++ b/app/Http/Resources/CompanyResource.php @@ -7,6 +7,7 @@ use App\Classes\ValueObjects\Constants\BankAccountType; use App\Classes\ValueObjects\Constants\BusinessType; use App\Classes\ValueObjects\Constants\DocumentType; use App\Classes\ValueObjects\Constants\SegmentConstants; +use App\Models\CompanyModule; use App\Models\Currency; use App\Models\SegmentConstant; use Illuminate\Http\Resources\Json\JsonResource; @@ -21,6 +22,7 @@ class CompanyResource extends JsonResource */ public function toArray($request) { + $companyModule = $this->companyModules()->where('type', '=', BusinessType::IMPORTER)->first(); return [ 'id' => $this->id, 'name' => $this->name, @@ -29,22 +31,11 @@ class CompanyResource extends JsonResource 'business_type' => (int) $this->business_type, 'status' => (int) $this->status, 'contact' => new ContactResource ($this->when($this->has('contacts'), $this->contacts->first())), - 'address' => new AddressResource($this->when($this->has('addresses'), $this->addresses->where('billing', true)->first())), - // 'employee' => new UserResource($this->employees->first()), - // 'identification' => new DocumentResource($this->documents->whereIn('document_type', DocumentType::IDENTIFICATION_DOCUMENTS)->first()), - // 'bookings' => BookingResource::collection($this->whenLoaded('bookings', $this->bookings()->orderBy('id', 'DESC')->get(), [])), - // 'personal_banks' => BankResource::collection($this->banks->where('type', BankAccountType::PERSONAL)), - // 'recipient_banks' => [ - // 'accounts' => BankResource::collection($this->banks->where('type', BankAccountType::EXTERNAL)), - // 'default' => new BankResource($this->banks->where('type', BankAccountType::EXTERNAL)->where('default', true)->first()) - // ], - // 'segments' => SegmentResource::collection($this->segments), - // 'services' => (new FetchesCompanyServices())->getServices($this->servicesConfigurations()), - // 'currencies' => $this->when($this->business_type === BusinessType::CURRENCY_VENDOR, function(){ - // $segment = SegmentConstant::where('reference', SegmentConstants::SUPPLIER_CURRENCIES)->where('detail->id', $this->id)->first(); - // return $segment ? CurrencyResource::collection(Currency::whereIn('id', $segment->detail->currencies)->get()) : []; - // }) - + 'employee' => new UserResource($companyModule->employees()->first()), + 'company_module' => new CompanyModuleResource($companyModule), + 'last_order' => new OrderResource($companyModule ? $companyModule->orders()->orderBy('id', 'DESC')->first(): null), +// 'employee' => new UserResource($this->employees->first()), +// 'identification' => new DocumentResource($this->documents->whereIn('document_type', DocumentType::IDENTIFICATION_DOCUMENTS)->first()), ]; diff --git a/app/Http/Resources/ContainerPackingListResource.php b/app/Http/Resources/ContainerResource.php similarity index 71% rename from app/Http/Resources/ContainerPackingListResource.php rename to app/Http/Resources/ContainerResource.php index b98b5f00..e47e44db 100644 --- a/app/Http/Resources/ContainerPackingListResource.php +++ b/app/Http/Resources/ContainerResource.php @@ -4,7 +4,7 @@ namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; -class ContainerPackingListResource extends JsonResource +class ContainerResource extends JsonResource { /** * Transform the resource into an array. @@ -16,10 +16,11 @@ class ContainerPackingListResource extends JsonResource { return [ 'id' => $this->id, - 'packing_list_id' => $this->packing_list_id, 'container_reference' => $this->container_reference, 'container_type' => $this->container_type, 'seal_reference' => $this->seal_reference, + 'packing_list' => PackingListResource::collection($this->packingLists), + 'transport' => TransportResource::collection($this->transports), ]; } } diff --git a/app/Http/Resources/FileResource.php b/app/Http/Resources/FileResource.php new file mode 100644 index 00000000..20a84589 --- /dev/null +++ b/app/Http/Resources/FileResource.php @@ -0,0 +1,23 @@ + $this->id, + 'file' => $this->file, + 'type' => (int) $this->file_type, + ]; + } +} diff --git a/app/Http/Resources/PackageItemResource.php b/app/Http/Resources/ItemResource.php similarity index 93% rename from app/Http/Resources/PackageItemResource.php rename to app/Http/Resources/ItemResource.php index 02be692c..a18d8a9b 100644 --- a/app/Http/Resources/PackageItemResource.php +++ b/app/Http/Resources/ItemResource.php @@ -4,7 +4,7 @@ namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; -class PackageItemResource extends JsonResource +class ItemResource extends JsonResource { /** * Transform the resource into an array. diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 29cab45b..1a31578f 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -2,12 +2,7 @@ namespace App\Http\Resources; - -use App\Models\Company; -use App\Models\Address; -use App\Models\Currency; -use App\Models\OrderStep; -use App\Models\SegmentConstant; +use App\Classes\ValueObjects\Constants\OrderRoleTypes; use Illuminate\Http\Resources\Json\JsonResource; class OrderResource extends JsonResource @@ -26,9 +21,10 @@ class OrderResource extends JsonResource 'reference_contract' => (int) $this->type, 'type' => (int) $this->type, 'status' => (int) $this->status, - 'current_step' => $this->current_step, - 'company' => new CompanyResource($this->companyModule->company), - 'address' => new AddressResource($this->address) + 'company_module' => new CompanyModuleResource($this->companyModule), + 'warehouse' => new CompanyModuleResource($this->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee), + 'address' => new AddressResource($this->addresses()->first()), + 'created_at' => $this->created_at->format('d-m-Y') ]; } } diff --git a/app/Http/Resources/PackageResource.php b/app/Http/Resources/PackageResource.php index 0c1530b8..fb011ad3 100644 --- a/app/Http/Resources/PackageResource.php +++ b/app/Http/Resources/PackageResource.php @@ -16,8 +16,7 @@ class PackageResource extends JsonResource { return [ 'id' => $this->id, - 'order_id' => $this->order_id, - 'claimant_id' => $this->claimant_id, + 'packing_list_id' => $this->packing_list_id, 'type' => $this->type, 'description' => $this->description, 'width' => $this->width, diff --git a/app/Http/Resources/PackingListResource.php b/app/Http/Resources/PackingListResource.php index a143d523..43730ea5 100644 --- a/app/Http/Resources/PackingListResource.php +++ b/app/Http/Resources/PackingListResource.php @@ -16,6 +16,7 @@ class PackingListResource extends JsonResource { return [ 'id' => $this->id, + 'claimant_id' => $this->claimant_id, 'reference' => $this->reference, 'status' => $this->status, ]; diff --git a/app/Http/Resources/OrderStepResource.php b/app/Http/Resources/StepResource.php similarity index 92% rename from app/Http/Resources/OrderStepResource.php rename to app/Http/Resources/StepResource.php index a04f306d..9749de73 100644 --- a/app/Http/Resources/OrderStepResource.php +++ b/app/Http/Resources/StepResource.php @@ -11,7 +11,7 @@ use App\Models\Currency; use App\Models\SegmentConstant; use Illuminate\Http\Resources\Json\JsonResource; -class OrderStepResource extends JsonResource +class StepResource extends JsonResource { /** * Transform the resource into an array. @@ -23,7 +23,6 @@ class OrderStepResource extends JsonResource { return [ 'id' => $this->id, - 'order_id' => $this->order_id, 'appointee_id' => $this->appointee_id, 'reference' => $this->reference, 'primary' => (int) $this->primary, diff --git a/app/Models/Address.php b/app/Models/Address.php index e915ef41..43784f8d 100644 --- a/app/Models/Address.php +++ b/app/Models/Address.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\SoftDeletes; @@ -60,4 +61,13 @@ class Address extends AbstractModel { return $this->morphTo(); } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeDefaultAddress(Builder $query) + { + return $query->where('default', true); + } } diff --git a/app/Models/Company.php b/app/Models/Company.php index 1921d8f2..ad443975 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -6,11 +6,13 @@ use App\Classes\General\Interfaces\Documentable; use App\Classes\General\Interfaces\Contactable; use App\Classes\Modules\ServiceTypes\DataTransferObjects\ServiceConfigurationsObject; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\BusinessType; use App\Classes\ValueObjects\Constants\SegmentConstants; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Collection; @@ -52,13 +54,26 @@ class Company extends AbstractModel implements Documentable, Contactable } /** - * @return belongsToMany + * @return hasManyThrough */ - public function employees(): belongsToMany + public function employees(): hasManyThrough { - return $this->belongsToMany(User::class, (new CompanyEmployee())->getTable(), 'company_id', 'user_id'); + return $this->hasManyThrough(User::class, CompanyModule::class, 'company_id', 'company_module_id'); } + public function orders() + { + return $this->companyModules()->where('type', '=', BusinessType::IMPORTER)->first()->orders->sortByDesc('id'); + $orders = []; + + $this->CompanyModules->each(function ($companyModule) { + $orders[] = $companyModule->orders->sortByDesc('id'); + }); + + return collect($orders); + } + + /** * @return MorphMany */ diff --git a/app/Models/CompanyConnection.php b/app/Models/CompanyConnection.php new file mode 100644 index 00000000..f1d00276 --- /dev/null +++ b/app/Models/CompanyConnection.php @@ -0,0 +1,63 @@ +BelongsTo(CompanyModule::class); + } + + /** + * @return BelongsTo + */ + public function invitee(): BelongsTo + { + return $this->BelongsTo(CompanyModule::class); + } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeApproved(Builder $query) + { + return $query->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]); + } + +} diff --git a/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index 93a58027..9b21263f 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -5,12 +5,14 @@ namespace App\Models; use App\Classes\General\Interfaces\Addressable; use App\Classes\General\Interfaces\Contactable; use App\Classes\General\Interfaces\Documentable; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -65,6 +67,27 @@ class CompanyModule extends AbstractModel implements Addressable, Documentable, return $this->belongsToMany(User::class, (new CompanyEmployee())->getTable(), 'company_module_id', 'user_id'); } + /** + * @return belongsToMany + */ + public function invites(): belongsToMany + { + return $this->belongsToMany(CompanyModule::class, CompanyConnection::class,'inviter_id', 'invitee_id'); + } + + /** + * @return belongsToMany + */ + public function inviters(): belongsToMany + { + return $this->belongsToMany(CompanyModule::class, CompanyConnection::class,'invitee_id', 'inviter_id'); + } + + + public function connections(): hasMany { + return $this->hasMany(CompanyConnection::class, 'invitee_id'); + } + /** * @return HasMany */ diff --git a/app/Models/Container.php b/app/Models/Container.php new file mode 100644 index 00000000..043806ac --- /dev/null +++ b/app/Models/Container.php @@ -0,0 +1,27 @@ +belongsToMany(PackingList::class, Container::class, 'container_id', 'packing_list_id'); + } + + /** + * @return MorphMany + */ + public function transports(): morphMany + { + return $this->morphMany(Transport::class, 'owner'); + } +} diff --git a/app/Models/ContainerPackingList.php b/app/Models/ContainerPackingList.php index 4aa74c4b..0aecbbee 100644 --- a/app/Models/ContainerPackingList.php +++ b/app/Models/ContainerPackingList.php @@ -6,22 +6,9 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; -class ContainerPackingList extends AbstractModel +class Container extends AbstractModel { use SoftDeletes; protected $table = 'container_packing_lists'; - - public function packingList(): HasMany - { - return $this->hasMany(PackingList::class, 'packing_list_id', 'id'); - } - - /** - * @return MorphMany - */ - public function transports(): morphMany - { - return $this->morphMany(Transport::class, 'owner'); - } } diff --git a/app/Models/PackageItem.php b/app/Models/Item.php similarity index 66% rename from app/Models/PackageItem.php rename to app/Models/Item.php index d1c44670..fab3b5bc 100644 --- a/app/Models/PackageItem.php +++ b/app/Models/Item.php @@ -5,13 +5,13 @@ namespace App\Models; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; -class PackageItem extends AbstractModel +class Item extends AbstractModel { use SoftDeletes; - protected $table = 'package_items'; + protected $table = 'items'; - public function pacakge(): BelongsTo + public function package(): BelongsTo { return $this->BelongsTo(Package::class, 'package_id', 'id'); } diff --git a/app/Models/Order.php b/app/Models/Order.php index 74920652..58f64dc8 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -3,6 +3,8 @@ namespace App\Models; use App\Classes\General\Interfaces\Addressable; +use App\Classes\ValueObjects\Constants\RoleTypes; +use App\Scopes\CustomerOrdersScope; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -17,16 +19,25 @@ class Order extends AbstractModel implements Addressable protected $dates = ['deleted_at']; + /** + * @return BelongsTo + */ public function companyModule(): belongsTo { return $this->belongsTo(CompanyModule::class, 'company_module_id', 'id'); } + /** + * @return MorphMany + */ public function orderSteps(): morphMany { - return $this->morphMany(OrderStep::class, 'owner'); + return $this->morphMany(Step::class, 'owner'); } + /** + * @return MorphMany + */ public function addresses(): morphMany { return $this->morphMany(Address::class, 'owner'); @@ -39,4 +50,11 @@ class Order extends AbstractModel implements Addressable { return $this->HasMany(OrderRole::class, 'order_id'); } + + protected static function booted() + { +// if (auth()->user()->type === RoleTypes::USER) { +// static::addGlobalScope(new CustomerOrdersScope); +// } + } } diff --git a/app/Models/Package.php b/app/Models/Package.php index 06094305..39c39488 100644 --- a/app/Models/Package.php +++ b/app/Models/Package.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; diff --git a/app/Models/PackingList.php b/app/Models/PackingList.php index 35497646..d67e3931 100644 --- a/app/Models/PackingList.php +++ b/app/Models/PackingList.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; class PackingList extends AbstractModel @@ -12,6 +13,6 @@ class PackingList extends AbstractModel public function orderSteps(): morphMany { - return $this->morphMany(OrderStep::class, 'owner'); + return $this->morphMany(Step::class, 'owner'); } } diff --git a/app/Models/PackingListPackage.php b/app/Models/PackingListPackage.php index b85b8b81..c393610f 100644 --- a/app/Models/PackingListPackage.php +++ b/app/Models/PackingListPackage.php @@ -18,6 +18,6 @@ class PackingListPackage extends AbstractModel public function packageList(): BelongsTo { - return $this->BelongsTo(PackageList::class, 'packing_list_id', 'id'); + return $this->BelongsTo(PackingList::class, 'packing_list_id', 'id'); } } diff --git a/app/Models/OrderStep.php b/app/Models/Step.php similarity index 81% rename from app/Models/OrderStep.php rename to app/Models/Step.php index 0dab2c53..0f924e1d 100644 --- a/app/Models/OrderStep.php +++ b/app/Models/Step.php @@ -2,10 +2,11 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\BelongsTo; -class OrderStep extends AbstractModel +class Step extends AbstractModel { use SoftDeletes; @@ -25,10 +26,10 @@ class OrderStep extends AbstractModel return $this->belongsTo(OrderRole::class, 'appointee_id', 'company_module_id'); } - - public function order(): belongsTo + public function owner(): morphTo { - return $this->belongsTo(Order::class, 'owner_id', 'id'); + return $this->morphTo(); } + } diff --git a/app/Scopes/CustomerOrdersScope.php b/app/Scopes/CustomerOrdersScope.php new file mode 100644 index 00000000..f12dec2b --- /dev/null +++ b/app/Scopes/CustomerOrdersScope.php @@ -0,0 +1,27 @@ +whereHas('companyModule', function($query){ + return $query->whereHas('employees', function($query){ + return $query->where('user_id', Auth()->user()->id); + }); + }); + } + +} \ No newline at end of file diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php index 7d75d3c4..b0dd8ba1 100644 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -15,13 +15,11 @@ class CreatePasswordResetsTable extends Migration { Schema::create('password_resets', function (Blueprint $table) { $table->id(); - $table->foreignId('user_id')->unsigned(); + $table->foreignId('user_id'); $table->string('token'); $table->boolean('is_expired')->default(true); $table->boolean('is_complete')->default(false); $table->timestamps(); - - $table->foreign('user_id')->references('id')->on('users'); }); } diff --git a/database/migrations/2021_06_21_222722_create_states_table.php b/database/migrations/2021_06_21_222722_create_states_table.php index 63c077bf..7ff6cfcf 100644 --- a/database/migrations/2021_06_21_222722_create_states_table.php +++ b/database/migrations/2021_06_21_222722_create_states_table.php @@ -16,13 +16,11 @@ class CreateStatesTable extends Migration { Schema::create('states', function (Blueprint $table) { $table->id(); - $table->foreignId('country_id')->unsigned(); + $table->foreignId('country_id'); $table->string('name'); $table->integer('status')->default(ApprovalStatus::APPROVED); $table->softDeletes(); $table->timestamps(); - - $table->foreign('country_id')->references('id')->on('countries'); }); } diff --git a/database/migrations/2021_06_21_222851_create_districts_table.php b/database/migrations/2021_06_21_222851_create_districts_table.php index a5d1f51c..0d6996c4 100644 --- a/database/migrations/2021_06_21_222851_create_districts_table.php +++ b/database/migrations/2021_06_21_222851_create_districts_table.php @@ -16,16 +16,13 @@ class CreateDistrictsTable extends Migration { Schema::create('districts', function (Blueprint $table) { $table->id(); - $table->foreignId('country_id')->unsigned(); - $table->foreignId('state_id')->unsigned(); + $table->foreignId('country_id'); + $table->foreignId('state_id'); $table->string('name'); $table->text('postcode'); $table->integer('status')->default(ApprovalStatus::APPROVED); $table->softDeletes(); $table->timestamps(); - - $table->foreign('country_id')->references('id')->on('countries'); - $table->foreign('state_id')->references('id')->on('states'); }); } diff --git a/database/migrations/2021_06_21_232944_create_addresses_table.php b/database/migrations/2021_06_21_232944_create_addresses_table.php index 78b826a1..bfe31d93 100644 --- a/database/migrations/2021_06_21_232944_create_addresses_table.php +++ b/database/migrations/2021_06_21_232944_create_addresses_table.php @@ -21,9 +21,9 @@ class CreateAddressesTable extends Migration $table->string('reference')->nullable(); $table->string('street_one'); $table->string('street_two')->nullable(); - $table->foreignId('district_id')->constrained(); - $table->foreignId('state_id')->constrained(); - $table->foreignId('country_id')->constrained(); + $table->foreignId('district_id'); + $table->foreignId('state_id'); + $table->foreignId('country_id'); $table->string('postcode', '45'); $table->integer('type')->default(AddressType::DELIVERY); $table->integer('default')->default(false); diff --git a/database/migrations/2021_06_23_152429_create_company_employees_table.php b/database/migrations/2021_06_23_152429_create_company_employees_table.php index a0f8a67f..610c25e4 100644 --- a/database/migrations/2021_06_23_152429_create_company_employees_table.php +++ b/database/migrations/2021_06_23_152429_create_company_employees_table.php @@ -15,9 +15,9 @@ class CreateCompanyEmployeesTable extends Migration public function up() { Schema::create('company_employees', function (Blueprint $table) { - $table->foreignId('company_module_id')->constrained(); - $table->foreignId('user_id')->constrained(); - $table->foreignId('role_id')->unsigned(); + $table->foreignId('company_module_id'); + $table->foreignId('user_id'); + $table->foreignId('role_id'); $table->integer('status')->default(ApprovalStatus::APPROVED); $table->softDeletes(); $table->timestamps(); diff --git a/database/migrations/2021_06_25_014731_create_segments_table.php b/database/migrations/2021_06_25_014731_create_segments_table.php index c6625629..53b78248 100644 --- a/database/migrations/2021_06_25_014731_create_segments_table.php +++ b/database/migrations/2021_06_25_014731_create_segments_table.php @@ -17,7 +17,7 @@ class CreateSegmentsTable extends Migration { Schema::create('segments', function (Blueprint $table) { $table->id(); - $table->foreignId('company_module_id')->constrained(); + $table->foreignId('company_module_id'); $table->string('name', '45'); }); } diff --git a/database/migrations/2021_06_25_014830_create_segment_constants_table.php b/database/migrations/2021_06_25_014830_create_segment_constants_table.php index 0e21e195..f62d0308 100644 --- a/database/migrations/2021_06_25_014830_create_segment_constants_table.php +++ b/database/migrations/2021_06_25_014830_create_segment_constants_table.php @@ -15,7 +15,7 @@ class CreateSegmentConstantsTable extends Migration { Schema::create('segment_constants', function (Blueprint $table) { $table->id(); - $table->foreignId('segment_id')->constrained(); + $table->foreignId('segment_id'); $table->string('reference','45'); $table->json('value'); }); diff --git a/database/migrations/2021_06_25_014832_create_company_connections_table.php b/database/migrations/2021_06_25_014832_create_company_connections_table.php index c1aee36b..c97fc2ee 100644 --- a/database/migrations/2021_06_25_014832_create_company_connections_table.php +++ b/database/migrations/2021_06_25_014832_create_company_connections_table.php @@ -1,5 +1,6 @@ foreignId('invitee_id')->unsigned(); $table->string('inviter_reference'); $table->string('invitee_reference'); - $table->integer('status'); + $table->integer('status')->default(ApprovalStatus::PENDING_VERIFICATION); $table->softDeletes(); $table->timestamps(); diff --git a/database/migrations/2021_06_25_014835_create_connection_segments_table.php b/database/migrations/2021_06_25_014835_create_connection_segments_table.php index 33da1304..92a3d5f1 100644 --- a/database/migrations/2021_06_25_014835_create_connection_segments_table.php +++ b/database/migrations/2021_06_25_014835_create_connection_segments_table.php @@ -15,8 +15,8 @@ class CreateConnectionSegmentsTable extends Migration { Schema::create('connection_segments', function (Blueprint $table) { $table->id(); - $table->foreignId('company_connection_id')->constrained(); - $table->foreignId('segment_id')->constrained(); + $table->foreignId('company_connection_id'); + $table->foreignId('segment_id'); }); } diff --git a/database/migrations/2021_06_25_014905_create_segment_companies_table.php b/database/migrations/2021_06_25_014905_create_segment_companies_table.php index 4e27d72f..cf0771e8 100644 --- a/database/migrations/2021_06_25_014905_create_segment_companies_table.php +++ b/database/migrations/2021_06_25_014905_create_segment_companies_table.php @@ -14,8 +14,8 @@ class CreateSegmentCompaniesTable extends Migration public function up() { Schema::create('segment_companies', function (Blueprint $table) { - $table->foreignId('segment_id')->constrained(); - $table->foreignId('company_id')->constrained(); + $table->foreignId('segment_id'); + $table->foreignId('company_id'); $table->timestamps(); $table->primary(['segment_id', 'company_id']); }); diff --git a/database/migrations/2021_06_25_020358_create_currencies_table.php b/database/migrations/2021_06_25_020358_create_currencies_table.php index b550c86b..ab30b2c0 100644 --- a/database/migrations/2021_06_25_020358_create_currencies_table.php +++ b/database/migrations/2021_06_25_020358_create_currencies_table.php @@ -15,14 +15,13 @@ class CreateCurrenciesTable extends Migration { Schema::create('currencies', function (Blueprint $table) { $table->id(); - $table->foreignId('country_id')->unsigned(); + $table->foreignId('country_id'); $table->string('name'); $table->string('short_code'); $table->string('symbol')->nullable(); $table->softDeletes(); $table->timestamps(); - $table->foreign('country_id')->references('id')->on('countries'); }); } diff --git a/database/migrations/2021_07_02_021058_create_files_table.php b/database/migrations/2021_07_02_021058_create_files_table.php index 3ee1c9fe..998c4576 100644 --- a/database/migrations/2021_07_02_021058_create_files_table.php +++ b/database/migrations/2021_07_02_021058_create_files_table.php @@ -16,13 +16,11 @@ class CreateFilesTable extends Migration { Schema::create('files', function (Blueprint $table) { $table->id(); - $table->foreignId('document_id')->unsigned(); + $table->foreignId('document_id'); $table->text('file'); $table->string('file_type')->default(FileType::JPEG); $table->softDeletes(); $table->timestamps(); - - $table->foreign('document_id')->references('id')->on('documents'); }); } diff --git a/database/migrations/2021_07_05_115638_create_banks_table.php b/database/migrations/2021_07_05_115638_create_banks_table.php index e41e8483..9e6e425b 100644 --- a/database/migrations/2021_07_05_115638_create_banks_table.php +++ b/database/migrations/2021_07_05_115638_create_banks_table.php @@ -18,7 +18,7 @@ class CreateBanksTable extends Migration Schema::create('bank_accounts', function (Blueprint $table) { $table->id(); $table->morphs('owner'); - $table->foreignId('country_id')->unsigned(); + $table->foreignId('country_id'); $table->string('bank_name',45); $table->string('bank_branch',45)->nullable(); $table->string('account_name',45); @@ -30,7 +30,6 @@ class CreateBanksTable extends Migration $table->softDeletes(); $table->timestamps(); - $table->foreign('country_id')->references('id')->on('countries'); }); Schema::table('bank_accounts', function (Blueprint $table) { diff --git a/database/migrations/2021_07_07_174510_create_orders_table.php b/database/migrations/2021_07_07_174510_create_orders_table.php index 07467c8b..d602618b 100644 --- a/database/migrations/2021_07_07_174510_create_orders_table.php +++ b/database/migrations/2021_07_07_174510_create_orders_table.php @@ -15,15 +15,13 @@ class CreateOrdersTable extends Migration { Schema::create('orders', function (Blueprint $table) { $table->id(); - $table->bigInteger('company_module_id')->unsigned()->index()->comment('Entity responsible to create this order'); + $table->foreignId('company_module_id'); $table->string('reference'); $table->string('reference_contract')->nullable(); $table->integer('type')->default(0)->comment('Order packages can be shipped in shared or dedicated container'); $table->integer('status')->default(0)->comment('Status of this order, e.g. processing, shipping etc.'); $table->softDeletes(); $table->timestamps(); - - $table->foreign('company_module_id')->references('id')->on('company_modules'); }); } diff --git a/database/migrations/2021_07_07_174640_create_order_roles_table.php b/database/migrations/2021_07_07_174640_create_order_roles_table.php index 8c1d3200..7b366638 100644 --- a/database/migrations/2021_07_07_174640_create_order_roles_table.php +++ b/database/migrations/2021_07_07_174640_create_order_roles_table.php @@ -16,16 +16,13 @@ class CreateOrderRolesTable extends Migration { Schema::create('order_roles', function (Blueprint $table) { $table->id(); - $table->bigInteger('order_id')->unsigned()->index()->comment('Order id'); - $table->bigInteger('company_module_id')->unsigned()->index(); + $table->foreignId('order_id'); + $table->foreignId('company_module_id'); $table->integer('role_id')->default(OrderRoleTypes::IMPORTER); $table->string('entity_hash_id',200)->nullable(); $table->string('entity_signature',200)->nullable(); $table->softDeletes(); $table->timestamps(); - - $table->foreign('company_module_id')->references('id')->on('company_modules'); - $table->foreign('order_id')->references('id')->on('orders'); }); } diff --git a/database/migrations/2021_07_21_110059_create_packing_lists_table.php b/database/migrations/2021_07_21_110049_create_packing_lists_table.php similarity index 78% rename from database/migrations/2021_07_21_110059_create_packing_lists_table.php rename to database/migrations/2021_07_21_110049_create_packing_lists_table.php index 9492c5d4..0516b539 100644 --- a/database/migrations/2021_07_21_110059_create_packing_lists_table.php +++ b/database/migrations/2021_07_21_110049_create_packing_lists_table.php @@ -15,11 +15,15 @@ class CreatePackingListsTable extends Migration { Schema::create('packing_lists', function (Blueprint $table) { $table->id(); + $table->morphs('owner'); + $table->bigInteger('claimant_id')->unsigned()->index()->nullable(true); $table->string('reference',200); $table->integer('type')->default(0); $table->integer('status')->default(0); $table->softDeletes(); $table->timestamps(); + + $table->foreign('claimant_id')->references('id')->on('company_modules'); }); } diff --git a/database/migrations/2021_07_21_110051_create_packages_table.php b/database/migrations/2021_07_21_110051_create_packages_table.php index a21244ea..4ec1c00d 100644 --- a/database/migrations/2021_07_21_110051_create_packages_table.php +++ b/database/migrations/2021_07_21_110051_create_packages_table.php @@ -15,11 +15,12 @@ class CreatePackagesTable extends Migration { Schema::create('packages', function (Blueprint $table) { $table->id(); - $table->bigInteger('order_id')->unsigned()->index(); - $table->bigInteger('claimant_id')->unsigned()->index()->nullable(true); - $table->integer('type')->default(0); + $table->foreignId('packing_list_id'); - $table->string('description',45)->nullable(true); + $table->integer('type')->default(0); + $table->string('reference')->nullable(); + + $table->string('description',45)->nullable(); $table->decimal('width', 8, 2); $table->decimal('height', 8, 2); @@ -30,9 +31,6 @@ class CreatePackagesTable extends Migration $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'); }); } diff --git a/database/migrations/2021_07_21_110058_create_package_items_table.php b/database/migrations/2021_07_21_110058_create_items_table.php similarity index 72% rename from database/migrations/2021_07_21_110058_create_package_items_table.php rename to database/migrations/2021_07_21_110058_create_items_table.php index 599b691e..92d7d65d 100644 --- a/database/migrations/2021_07_21_110058_create_package_items_table.php +++ b/database/migrations/2021_07_21_110058_create_items_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreatePackageItemsTable extends Migration +class CreateItemsTable extends Migration { /** * Run the migrations. @@ -13,9 +13,9 @@ class CreatePackageItemsTable extends Migration */ public function up() { - Schema::create('package_items', function (Blueprint $table) { + Schema::create('items', function (Blueprint $table) { $table->id(); - $table->bigInteger('package_id')->unsigned()->index(); + $table->foreignId('package_id'); $table->string('name',45); $table->string('reference',45); $table->string('description',45); @@ -27,7 +27,6 @@ class CreatePackageItemsTable extends Migration $table->softDeletes(); $table->timestamps(); - $table->foreign('package_id')->references('id')->on('packages'); }); } @@ -38,6 +37,6 @@ class CreatePackageItemsTable extends Migration */ public function down() { - Schema::dropIfExists('package_items'); + Schema::dropIfExists('items'); } } diff --git a/database/migrations/2021_07_21_110190_create_containers_table.php b/database/migrations/2021_07_21_110190_create_containers_table.php new file mode 100644 index 00000000..773bba5b --- /dev/null +++ b/database/migrations/2021_07_21_110190_create_containers_table.php @@ -0,0 +1,39 @@ +id(); + $table->string('reference',45); + $table->string('container_number',45); + $table->integer('container_type')->default(ContainerTypes::FORTY_FEET_DRY_CONTAINER); + $table->string('seal_reference',45); + $table->integer('status')->default(ApprovalStatus::PENDING_SUBMISSION); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('containers'); + } +} 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 deleted file mode 100644 index 4c3b2bb3..00000000 --- a/database/migrations/2021_07_21_110208_create_packing_list_packages_table.php +++ /dev/null @@ -1,37 +0,0 @@ -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 index 9f98061f..bbf8ef84 100644 --- 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 @@ -15,14 +15,10 @@ class CreateContainerPackingListsTable extends Migration { Schema::create('container_packing_lists', function (Blueprint $table) { $table->id(); - $table->bigInteger('packing_list_id')->unsigned()->index(); - $table->string('container_reference',45); - $table->integer('container_type'); - $table->string('seal_reference',45); + $table->foreignId('container_id'); + $table->foreignId('packing_list_id'); $table->softDeletes(); $table->timestamps(); - - $table->foreign('packing_list_id')->references('id')->on('packing_lists'); }); } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index f0fea66f..6f13aff8 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -24,8 +24,5 @@ class DatabaseSeeder extends Seeder $this->call(CurrenciesTableSeeder::class); $this->call(CompaniesTableSeeder::class); - - // $this->call(SegmentsTableSeeder::class); - //$this->call(SegmentConstantsTableSeeder::class); } } \ No newline at end of file diff --git a/resources/assets/images/cief-izyim-logo.png b/resources/assets/images/cief-izyim-logo.png new file mode 100644 index 00000000..126c6533 Binary files /dev/null and b/resources/assets/images/cief-izyim-logo.png differ diff --git a/resources/assets/sass/modules/_tabs_accordian.scss b/resources/assets/sass/modules/_tabs_accordian.scss index d4a1ae1f..6562b105 100644 --- a/resources/assets/sass/modules/_tabs_accordian.scss +++ b/resources/assets/sass/modules/_tabs_accordian.scss @@ -758,7 +758,7 @@ .tabButton { cursor: pointer; &.active { - background-color: #ffffff !important; + background-color: $color-master-lightest !important; cursor: default; } } \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/elements/LoginFormComponent.vue b/resources/assets/vue/components/accounts/elements/LoginFormComponent.vue deleted file mode 100644 index db5b7111..00000000 --- a/resources/assets/vue/components/accounts/elements/LoginFormComponent.vue +++ /dev/null @@ -1,78 +0,0 @@ - - \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/elements/LogoutComponent.vue b/resources/assets/vue/components/accounts/elements/LogoutComponent.vue new file mode 100644 index 00000000..a3d65272 --- /dev/null +++ b/resources/assets/vue/components/accounts/elements/LogoutComponent.vue @@ -0,0 +1,79 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue b/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue deleted file mode 100644 index e38ac3bf..00000000 --- a/resources/assets/vue/components/accounts/forms/LogOutFormComponent.vue +++ /dev/null @@ -1,64 +0,0 @@ - - \ No newline at end of file diff --git a/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue b/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue index f36fc902..4ee52888 100644 --- a/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/RegistrationFormComponent.vue @@ -19,7 +19,7 @@
-
+
Company

-
+
-
+
-
+
diff --git a/resources/assets/vue/components/companies/elements/CompanyComponent.vue b/resources/assets/vue/components/companies/elements/CompanyComponent.vue new file mode 100644 index 00000000..c0c63716 --- /dev/null +++ b/resources/assets/vue/components/companies/elements/CompanyComponent.vue @@ -0,0 +1,32 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue b/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue new file mode 100644 index 00000000..ee93c900 --- /dev/null +++ b/resources/assets/vue/components/companies/elements/CustomerProfileComponent.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/elements/IdentificationVerificationComponent.vue b/resources/assets/vue/components/companies/elements/IdentificationVerificationComponent.vue new file mode 100644 index 00000000..4022ee4b --- /dev/null +++ b/resources/assets/vue/components/companies/elements/IdentificationVerificationComponent.vue @@ -0,0 +1,182 @@ + + + diff --git a/resources/assets/vue/components/companies/elements/VerificationWarningComponent.vue b/resources/assets/vue/components/companies/elements/VerificationWarningComponent.vue new file mode 100644 index 00000000..b5b598be --- /dev/null +++ b/resources/assets/vue/components/companies/elements/VerificationWarningComponent.vue @@ -0,0 +1,65 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/forms/IdentificationVerificationFormComponent.vue b/resources/assets/vue/components/companies/forms/IdentificationVerificationFormComponent.vue new file mode 100644 index 00000000..2c1bfdea --- /dev/null +++ b/resources/assets/vue/components/companies/forms/IdentificationVerificationFormComponent.vue @@ -0,0 +1,144 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue new file mode 100644 index 00000000..d6c9b77e --- /dev/null +++ b/resources/assets/vue/components/companies/sections/CustomerProfileSectionComponent.vue @@ -0,0 +1,116 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/OnBoardingSectionComponent.vue b/resources/assets/vue/components/companies/sections/OnBoardingSectionComponent.vue new file mode 100644 index 00000000..4e2a8961 --- /dev/null +++ b/resources/assets/vue/components/companies/sections/OnBoardingSectionComponent.vue @@ -0,0 +1,102 @@ + \ No newline at end of file diff --git a/resources/assets/vue/components/general/elements/ListComponent.vue b/resources/assets/vue/components/general/elements/ListComponent.vue index 2b6d74bd..bd1c759c 100644 --- a/resources/assets/vue/components/general/elements/ListComponent.vue +++ b/resources/assets/vue/components/general/elements/ListComponent.vue @@ -17,7 +17,7 @@

Nothing To Show Here

-
+
There is no results found, Try adjusting your filters to find what you are looking for.
diff --git a/resources/assets/vue/components/general/elements/PaginationComponent.vue b/resources/assets/vue/components/general/elements/PaginationComponent.vue index be60c2e7..5d08a128 100644 --- a/resources/assets/vue/components/general/elements/PaginationComponent.vue +++ b/resources/assets/vue/components/general/elements/PaginationComponent.vue @@ -1,11 +1,11 @@ \ No newline at end of file diff --git a/resources/assets/vue/components/orders/sections/OrderSectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderSectionComponent.vue new file mode 100644 index 00000000..5122b4d9 --- /dev/null +++ b/resources/assets/vue/components/orders/sections/OrderSectionComponent.vue @@ -0,0 +1,181 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/vuex/modules/loadRequestQueue.js b/resources/assets/vue/vuex/modules/loadRequestQueue.js index 3bb574c5..acda3c69 100644 --- a/resources/assets/vue/vuex/modules/loadRequestQueue.js +++ b/resources/assets/vue/vuex/modules/loadRequestQueue.js @@ -11,6 +11,10 @@ export default { let list = state.queue.find(list => list.name === name); return list ? !list.complete : false; }, + isCompletedQueue: (state) => (name) => { + let list = state.queue.find(list => list.name === name); + return !!list; + }, getListDetails: (state) => (name) => { return state.queue.find(list => list.name === name); }, diff --git a/resources/views/layouts/base_pdf.blade.php b/resources/views/layouts/base_pdf.blade.php index 99eb376a..ce46ac4f 100644 --- a/resources/views/layouts/base_pdf.blade.php +++ b/resources/views/layouts/base_pdf.blade.php @@ -3,7 +3,6 @@ - Invoice diff --git a/resources/views/layouts/base_portal.blade.php b/resources/views/layouts/base_portal.blade.php index b97d3e04..00d7e316 100644 --- a/resources/views/layouts/base_portal.blade.php +++ b/resources/views/layouts/base_portal.blade.php @@ -8,10 +8,14 @@
-
+
+ @include('partials.menu') +
+
@include('partials.menu')
+
@include('partials.header')
diff --git a/resources/views/pages/accounts/login.blade.php b/resources/views/pages/accounts/login.blade.php index c6a0eaa9..375728be 100644 --- a/resources/views/pages/accounts/login.blade.php +++ b/resources/views/pages/accounts/login.blade.php @@ -2,10 +2,10 @@ @section('inner_content')
-
+
-
- +
+
diff --git a/resources/views/pages/admin/dashboard.blade.php b/resources/views/pages/admin/dashboard.blade.php new file mode 100644 index 00000000..431120dc --- /dev/null +++ b/resources/views/pages/admin/dashboard.blade.php @@ -0,0 +1,34 @@ +
+
+
+
+
Customers List
+
+
+
+
+ + + +
+
+
+
+
+
+
Identification Verification
+
+
+
+
+ + + +
+
+
+
\ No newline at end of file diff --git a/resources/views/pages/customers/dashboard.blade.php b/resources/views/pages/customers/dashboard.blade.php new file mode 100644 index 00000000..3f1ff132 --- /dev/null +++ b/resources/views/pages/customers/dashboard.blade.php @@ -0,0 +1,5 @@ +
+
+ +
+
\ No newline at end of file diff --git a/resources/views/pages/customers/index.blade.php b/resources/views/pages/customers/index.blade.php new file mode 100644 index 00000000..488bcf9d --- /dev/null +++ b/resources/views/pages/customers/index.blade.php @@ -0,0 +1,4 @@ +@extends('layouts.base_portal') +@section('inner_content') + +@endsection \ No newline at end of file diff --git a/resources/views/pages/customers/profile.blade.php b/resources/views/pages/customers/profile.blade.php new file mode 100644 index 00000000..9345f6d7 --- /dev/null +++ b/resources/views/pages/customers/profile.blade.php @@ -0,0 +1,4 @@ +@extends('layouts.base_portal') +@section('inner_content') + +@endsection \ No newline at end of file diff --git a/resources/views/pages/dashboard.blade.php b/resources/views/pages/dashboard.blade.php new file mode 100644 index 00000000..54af71f9 --- /dev/null +++ b/resources/views/pages/dashboard.blade.php @@ -0,0 +1,5 @@ +@extends('layouts.base_portal') +@section('inner_content') + @include('pages.customers.dashboard') + @include('pages.admin.dashboard') +@endsection \ No newline at end of file diff --git a/resources/views/pages/dashboards/admin.blade.php b/resources/views/pages/dashboards/admin.blade.php deleted file mode 100644 index 71944a13..00000000 --- a/resources/views/pages/dashboards/admin.blade.php +++ /dev/null @@ -1,461 +0,0 @@ -
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
Payments
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
Supplier Bills
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - -
-
-
-
-
-
-
-
-
-
-
-
    -
  • -
  • -
-
-
-
-
-

webarch

-

Today's sales

-
-

- MYR - 102,967 -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
Purchase CODE #2345 - Qty 1 - - 27 RM -
-
-
-
-
-
-
-
-
-
-
- {{----}} - {{----}} - {{----}} -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
Currency Orders
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
Payment Proof
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
Purchase Orders
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
- - - -
-
-
-
-
-
-
-
-
-
-
-
- Pending Verification -
-
-
-
- - - -
-
-
-
-
-
-
-
- Pending Submission -
-
-
-
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1.5810
-
-
-
-
-
- 0.0% -
-
-
-
-
-
-
-
RMB
-
-
-
USD
-
-
-
SGD
-
-
-
-
-
-
-
-
-
-
-
-
-
Customer Verification
-
-
- -
-
-
-
-
-
- - - -
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff --git a/resources/views/pages/dashboards/index.blade.php b/resources/views/pages/dashboards/index.blade.php deleted file mode 100644 index 9777b71e..00000000 --- a/resources/views/pages/dashboards/index.blade.php +++ /dev/null @@ -1,4 +0,0 @@ -@extends('layouts.base_portal') -@section('inner_content') - @include('pages.dashboards.customer') -@endsection \ No newline at end of file diff --git a/resources/views/pages/order_details.blade.php b/resources/views/pages/order_details.blade.php deleted file mode 100644 index 5cb8e83d..00000000 --- a/resources/views/pages/order_details.blade.php +++ /dev/null @@ -1,105 +0,0 @@ -@extends('layouts.base_portal') -@section('inner_content') -
- -
-
-
- -
-
- Order #00012558 - Your order(s) are ready for shipment - Ordered at 1:54PM on 12 August, 2021 -
-
-
- - -
-
-
-
- Latest Update - Today at 3:04PM -
- From: Guangzhou, China - To: Kuala Lumpur, Malaysia -
-
-
-
-
-
-
- Carrier Tracking Number - #1ZYBR067TW403742920 -
-
-
-
-
- - - @include('partials.tab') - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - -
-
-
-
-
-
- MY55899874 - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor -
-
-
- From: Guangzhou, China - To: Kuala Lumpur, Malaysia -
-
-
- To Be Shipped - 52x65x35 CM / 10KG -
-
-
- Date: 12 August, 2021 -
-
Ship Now
-
Details
-
-
-
-
-
-
-
-
-
-@endsection \ No newline at end of file diff --git a/resources/views/pages/orders/index.blade.php b/resources/views/pages/orders/index.blade.php index 3808538d..60788960 100644 --- a/resources/views/pages/orders/index.blade.php +++ b/resources/views/pages/orders/index.blade.php @@ -1,20 +1,4 @@ @extends('layouts.base_portal') @section('inner_content') - - - - - - + @endsection \ No newline at end of file diff --git a/resources/views/pages/orders/profile.blade.php b/resources/views/pages/orders/profile.blade.php new file mode 100644 index 00000000..e6851a0c --- /dev/null +++ b/resources/views/pages/orders/profile.blade.php @@ -0,0 +1,4 @@ +@extends('layouts.base_portal') +@section('inner_content') + +@endsection \ No newline at end of file diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php index e626c18c..d3a15ad2 100644 --- a/resources/views/partials/header.blade.php +++ b/resources/views/partials/header.blade.php @@ -1,9 +1,24 @@
-
+
-
-
- +
+
+
+ + + +
+
+
+
+
+
+ +
+
+
+
+
diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index 3ad3630d..958fa52b 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -1,11 +1,14 @@
-
-
+
+ +
+ +
@@ -21,70 +24,75 @@ + style=" fill:#000000;">
-
+
+ style=" fill:#000000;">
-
+
+ style=" fill:#000000;">
-
My Packages
+
My Packages
-
+
+ style=" fill:#000000;">
-
+
+ style=" fill:#000000;">
-
Payments & Billing
+
Payments & Billing
-
+
+ style=" fill:#000000;">
-
Tracking
+
Tracking
+
+
+
+
+
-
+
diff --git a/resources/views/pdfs/qr.blade.php b/resources/views/pdfs/qr.blade.php index c5a2b4cf..77a633f5 100644 --- a/resources/views/pdfs/qr.blade.php +++ b/resources/views/pdfs/qr.blade.php @@ -1,14 +1,46 @@ @extends('layouts.base_pdf') @section('inner_content') -
-

Hello World

- - -
{{ $foo }}
- - - -
{{ $bar }}
- -
+ + + @for ($i = 0; $i < 2; $i++) + + + + + @endfor + +
+ + + + + + + + + +
+ id.'}') }}" style="margin-top: 20px;" /> +
+

#{{$order->reference}}

+
+
+ + + + + + + + + +
+

@if(strtolower($delivery_address->state->name) === 'sabah') SB/ @elseif(strtolower($delivery_address->state->name) === 'sarawak') SRW/ @endif CIEF/{{$marking}}/{{$order->reference}}

+
+

仓库地址:

+ +

{{$warehouse_address->street_one.' '.$warehouse_address->street_two.' '.$warehouse_address->district->name.' '.$warehouse_address->state->name.' 邮编:'.$warehouse_address->postcode}}

+

联系:@foreach($warehouse_contacts as $contact){{ $loop->first ? '' : ' / ' }}{{ $contact->phone.' '.$contact->reference }}@endforeach

+
+
@endsection \ No newline at end of file diff --git a/resources/views/swagger/json.blade.php b/resources/views/swagger/json.blade.php index 6b2edae9..1e09fa9c 100644 --- a/resources/views/swagger/json.blade.php +++ b/resources/views/swagger/json.blade.php @@ -301,7 +301,7 @@ "produces": [ "application/json" ], - "operationId": "createContainerPackingList", + "operationId": "createContainer", "summary": "Create container packing list", "description": "", "parameters": [ @@ -533,7 +533,7 @@ "produces": [ "application/json" ], - "operationId": "deleteContainerPackingList", + "operationId": "deleteContainer", "summary": "Delete container packing list", "description": "", "parameters": [ diff --git a/routes/api.php b/routes/api.php index e551e9c7..a7552465 100644 --- a/routes/api.php +++ b/routes/api.php @@ -22,22 +22,14 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function require __DIR__ . '/account.php'; -// Route::get('/rate/calculate', 'RateCalculateCurrencyController@convert')->name('calculate'); - - // Route::group(['prefix' => 'service', 'as' => 'service.'], function () { - // Route::get('countries/list', 'Services\CountriesListController@index')->name('list.countries'); - // }); - Route::group(['middleware' => 'valid.token'], function () { - //Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file'); + Route::get('/storage/{fileName}/fetch', 'Documents\RenderDocumentController@fileStorageServe')->where(['fileName' => '.*'])->name('storage.document.file'); + + require __DIR__ . '/company.php'; + + require __DIR__ . '/document.php'; - require __DIR__ . '/company.php'; -// -// require __DIR__ . '/document.php'; -// -// require __DIR__ . '/segment.php'; -// require __DIR__ . '/bank.php'; require __DIR__ . '/currency.php'; @@ -50,9 +42,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function require __DIR__ . '/order.php'; - require __DIR__ . '/package.php'; - - require __DIR__ . '/packinglist.php'; + require __DIR__ . '/packing_list.php'; require __DIR__ . '/remark.php'; @@ -60,9 +50,5 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function require __DIR__ . '/schedule.php'; -// require __DIR__ . '/announcement.php'; -// require __DIR__ . '/wallet.php'; -// require __DIR__ . '/rate.php'; - }); }); diff --git a/routes/document.php b/routes/document.php new file mode 100644 index 00000000..12419c9e --- /dev/null +++ b/routes/document.php @@ -0,0 +1,9 @@ + 'document', 'as' => 'document.', 'namespace' => 'Documents'], function () { + Route::get('/list', 'ListDocumentsController@list')->name('list'); + Route::put('/{id}/approve', 'ApproveDocumentController@approve')->name('status.approve'); + Route::put('/{id}/reject', 'RejectDocumentController@reject')->name('status.reject'); +}); \ No newline at end of file diff --git a/routes/order.php b/routes/order.php index 790c34d7..cdbabf11 100644 --- a/routes/order.php +++ b/routes/order.php @@ -3,16 +3,8 @@ use Illuminate\Support\Facades\Route; Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], function () { - #Route::get('/{id}/show', 'FetchOrderController@fetch')->name('show'); + Route::get('/show/{id}', 'FetchOrderController@fetch')->name('show'); Route::get('/list', 'ListOrdersController@list')->name('list'); Route::post('/create', 'CreateOrderController@create')->name('create'); Route::put('/confirm/{id}', 'ConfirmOrderController@confirm')->name('confirm'); - #Route::put('/update/{id}', 'UpdateOrderController@update')->name('update'); - #Route::delete('/delete/{id}', 'DeleteOrderController@destroy')->name('delete'); - - Route::group(['prefix' => '{id}/role', 'as' => 'role.'], function () {}); -}); - -Route::group(['prefix' => 'order/step/{id}', 'as' => 'order.step.', 'namespace' => 'OrderSteps'], function () { - Route::put('complete', 'CompletesOrderStepsController@complete')->name('complete'); }); diff --git a/routes/package.php b/routes/package.php deleted file mode 100644 index e6e15fbd..00000000 --- a/routes/package.php +++ /dev/null @@ -1,19 +0,0 @@ - '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/packing_list.php b/routes/packing_list.php new file mode 100644 index 00000000..06b11950 --- /dev/null +++ b/routes/packing_list.php @@ -0,0 +1,36 @@ + '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', 'FetchContainerController@fetch')->name('show'); + Route::get('/list', 'ListContainersController@list')->name('list'); + Route::post('/create', 'CreateContainerController@create')->name('create'); + Route::put('/update/{id}', 'UpdateContainerController@update')->name('update'); + Route::delete('/delete/{id}', 'DeleteContainerController@delete')->name('delete'); + }); + + Route::group(['namespace' => '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 deleted file mode 100644 index 838b789b..00000000 --- a/routes/packinglist.php +++ /dev/null @@ -1,19 +0,0 @@ - '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/step.php b/routes/step.php new file mode 100644 index 00000000..c9333164 --- /dev/null +++ b/routes/step.php @@ -0,0 +1,8 @@ + 'order/step/{id}', 'as' => 'order.step.', 'namespace' => 'Steps'], function () { + Route::put('complete', 'CompletesOrderStepsController@complete')->name('complete'); +}); + diff --git a/routes/web.php b/routes/web.php index 9dd739b7..da4792e8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,7 @@ name('account.password.reset'); Route::get('/dashboard', function () { - return view('pages.dashboards.index'); + return view('pages.dashboard'); })->name('dashboard'); -Route::get('/order', function () { +Route::get('/orders', function () { return view('pages.orders.index'); -})->name('order'); +})->name('orders'); -Route::get('/order/show', function () { - return view('pages.order_details'); +Route::get('/order/show/{order_number}', function ($orderNumber) { + return view('pages.orders.profile', ['id' => $orderNumber]); })->name('order.show'); Route::get('/address', function () { return view('pages.addresses.index'); })->name('address'); -///////////////////////////////////////////////////////////////// -Route::group(['namespace' => 'Prototype'], function () { - Route::get('pdf', - [ - 'as' => 'api.prototype.test.pdf', - 'uses' => 'TestController@pdf', - ] - ); -}); \ No newline at end of file +Route::get('/customer/{marking}', function ($marking) { + $connection = CompanyConnection::where('invitee_reference', $marking)->first(); + $id = $connection->invitee->company->id; + return view('pages.customers.profile', ['id' => $id]); +})->name('customer.profile'); + +Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); + +Route::get('/test', 'TestController@test')->name('test'); \ No newline at end of file