diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateShippingPackingListLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateShippingPackingListLogic.php new file mode 100644 index 00000000..574200fe --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/CreateShippingPackingListLogic.php @@ -0,0 +1,118 @@ + 'Created PackingList', + 'message' => 'You have successfully created a new PackingList' + ]; + } + + /** @var CreatePackingListProcessor */ + private $createPackingListProcessor; + + /** @var GeneratesPackingListReferenceNumber */ + private $generatesPackingListReferenceNumber; + + /** @var CreatesTransport */ + private $createsTransport; + + /** @var CreatePackageProcessor */ + private $createPackageProcessor; + + /** @var CreatesSchedule */ + private $createsSchedule; + + /** @var FetchesOrder */ + private $fetchesOrder; + + /** + * CreatePackingListLogic constructor. + * @param CreatePackingListProcessor $createPackingListProcessor + * @param FetchesOrder $fetchesOrder + */ + public function __construct( + CreatePackingListProcessor $createPackingListProcessor, + CreatesTransport $createsTransport, + CreatesSchedule $createsSchedule, + CreatePackageProcessor $createPackageProcessor, + GeneratesPackingListReferenceNumber $generatesPackingListReferenceNumber, + FetchesOrder $fetchesOrder + ) + { + $this->createPackingListProcessor = $createPackingListProcessor; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + $this->createPackageProcessor = $createPackageProcessor; + $this->generatesPackingListReferenceNumber = $generatesPackingListReferenceNumber; + $this->fetchesOrder = $fetchesOrder; + } + + /** + * @param Request $request + * @return JsonResponse + */ + public function logic(Request $request) : JsonResponse + { + $order = $this->fetchesOrder->execute(['id' => $request->input('order_id')]); + + $reference_number = $this->generatesPackingListReferenceNumber->execute(); + + $packingListObject = new PackingListObject( + $reference_number, + $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee->id, + PackingListType::SHIPPING_PACKING_LIST, + ApprovalStatus::PENDING_SUBMISSION + ); + $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + + $packages = $request->input('packages'); + + foreach ($packages as $key => $row) { + $packageObject = new PackageObject( + $row['type'], + $row['description'], + $row['width'], + $row['height'], + $row['length'], + $row['weight'], + $row['quantity'], + ApprovalStatus::APPROVED, + $row['reference'], + ); + $this->createPackageProcessor->execute($packageObject, $packingList); + } + + return $this->resourceResponse(new PackingListResource($packingList)); + } + +} diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateWarehousePackingListLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateWarehousePackingListLogic.php new file mode 100644 index 00000000..5572bbff --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/CreateWarehousePackingListLogic.php @@ -0,0 +1,124 @@ + 'Created Warehouse PackingList', + 'message' => 'You have successfully created a new Warehouse PackingList' + ]; + } + + /** @var CreatePackingListProcessor */ + private $createPackingListProcessor; + + /** @var GeneratesPackingListReferenceNumber */ + private $generatesPackingListReferenceNumber; + + /** @var CreatesTransport */ + private $createsTransport; + + /** @var CreatePackageProcessor */ + private $createPackageProcessor; + + /** @var CreatesSchedule */ + private $createsSchedule; + + /** @var FetchesOrder */ + private $fetchesOrder; + + /** + * CreatePackingListLogic constructor. + * @param CreatePackingListProcessor $createPackingListProcessor + * @param FetchesOrder $fetchesOrder + */ + public function __construct( + CreatePackingListProcessor $createPackingListProcessor, + CreatesTransport $createsTransport, + CreatesSchedule $createsSchedule, + CreatePackageProcessor $createPackageProcessor, + GeneratesPackingListReferenceNumber $generatesPackingListReferenceNumber, + FetchesOrder $fetchesOrder + ) + { + $this->createPackingListProcessor = $createPackingListProcessor; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + $this->createPackageProcessor = $createPackageProcessor; + $this->generatesPackingListReferenceNumber = $generatesPackingListReferenceNumber; + $this->fetchesOrder = $fetchesOrder; + } + + /** + * @param Request $request + * @return JsonResponse + */ + public function logic(Request $request) : JsonResponse + { + $order = $this->fetchesOrder->execute(['id' => $request->input('order_id')]); + + $reference_number = $this->generatesPackingListReferenceNumber->execute(); + + $packingListObject = new PackingListObject( + $reference_number, + $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee->id, + PackingListType::WAREHOUSE_RECEIVE_LIST, + ApprovalStatus::PENDING_SUBMISSION + ); + $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + + $transportObject = new TransportObject(TransportType::LAND, null, $request->input('tracking'), Carbon::parse($request->input('receive_date')), Carbon::parse($request->input('receive_date')), ApprovalStatus::APPROVED); + $transport = $this->createsTransport->execute($transportObject, $packingList); + + $scheduleObject = new ScheduleObject(Carbon::parse($request->input('receive_date')), Carbon::parse($request->input('receive_date')), ApprovalStatus::APPROVED); + $schedule = $this->createsSchedule->execute($transport, $scheduleObject); + + $packages = $request->input('packages'); + + foreach ($packages as $key => $row) { + $packageObject = new PackageObject( + $row['type'], + $row['description'], + $row['width'], + $row['height'], + $row['length'], + $row['weight'], + $row['quantity'], + ApprovalStatus::APPROVED, + $row['reference'], + ); + $this->createPackageProcessor->execute($packageObject, $packingList); + } + + return $this->resourceResponse(new PackingListResource($packingList)); + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/CompletePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/CompletePackingListLogic.php new file mode 100644 index 00000000..a96074c0 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/CompletePackingListLogic.php @@ -0,0 +1,61 @@ + 'Updated PackingList', + 'message' => 'You have successfully updated the PackingList' + ]; + } + + + /** @var UpdatesPackingListStatus */ + private $updatesPackingListStatus; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * CompletePackingListLogic constructor. + * @param CanUpdatePackingList $canUpdatePackingList + * @param UpdatesPackingListStatus $updatesPackingListStatus + * @param FetchesPackingList $fetchesPackingList + */ + public function __construct(UpdatesPackingListStatus $updatesPackingListStatus, FetchesPackingList $fetchesPackingList) + { + $this->updatesPackingListStatus = $updatesPackingListStatus; + $this->fetchesPackingList = $fetchesPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $packing_list = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + $query = $this->updatesPackingListStatus->execute($packing_list, ApprovalStatus::COMPLETED); + return $this->resourceResponse(new PackingListResource($packing_list)); + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CompleteContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CompleteContainerLogic.php new file mode 100644 index 00000000..7720fc27 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CompleteContainerLogic.php @@ -0,0 +1,61 @@ + 'Updated Container', + 'message' => 'You have successfully updated the Container' + ]; + } + + + /** @var UpdatesContainerStatus */ + private $updatesContainerStatus; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * CompleteContainerLogic constructor. + * @param CanUpdateContainer $canUpdateContainer + * @param UpdatesContainerStatus $updatesContainerStatus + * @param FetchesContainer $fetchesContainer + */ + public function __construct(UpdatesContainerStatus $updatesContainerStatus, FetchesContainer $fetchesContainer) + { + $this->updatesContainerStatus = $updatesContainerStatus; + $this->fetchesContainer = $fetchesContainer; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $container = $this->fetchesContainer->execute(['id' => $request->route('id')]); + $query = $this->updatesContainerStatus->execute($container, ApprovalStatus::COMPLETED); + return $this->resourceResponse(new ContainerResource($container)); + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php index 04802826..df22a66e 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php @@ -23,8 +23,8 @@ class CreateContainerLogic extends AbstractControllerLogic */ protected function notification():array { return [ - 'title' => 'Created PackingList', - 'message' => 'You have successfully created a new PackingList' + 'title' => 'Created Container', + 'message' => 'You have successfully created a new Container' ]; } @@ -66,8 +66,6 @@ class CreateContainerLogic extends AbstractControllerLogic $request->input('status') ); - $company = $this->fetchesCompanyModule->execute(['id' => 2]); - $this->canCreateContainer->passes($object); $query = $this->createsContainer->execute($object, $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')])); diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateLoadContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateLoadContainerLogic.php new file mode 100644 index 00000000..30fec0d4 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateLoadContainerLogic.php @@ -0,0 +1,113 @@ + 'Created Container', + 'message' => 'You have successfully created a new Container' + ]; + } + + /** @var CanCreateContainer */ + private $canCreateContainer; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + + /** @var CreatesPackingList */ + private $createsContainer; + + /** @var CreatesTransport */ + private $createsTransport; + + /** @var CreatesSchedule */ + private $createsSchedule; + + public function __construct( + CanCreateContainer $canCreateContainer, + FetchesPackingList $fetchesPackingList, + FetchesCompanyModule $fetchesCompanyModule, + CreatesContainer $createsContainer, + CreatesTransport $createsTransport, + CreatesSchedule $createsSchedule + ) + { + $this->canCreateContainer = $canCreateContainer; + $this->fetchesPackingList = $fetchesPackingList; + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->createsContainer = $createsContainer; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + $object = new ContainerObject( + $request->input('container_reference'), + $request->input('container_number'), + $request->input('seal_reference'), + $request->input('container_type'), + ApprovalStatus::APPROVED + ); + + $this->canCreateContainer->passes($object); + + $container = $this->createsContainer->execute($object, $this->fetchesCompanyModule->execute(['id' => $request->input('company_module_id')])); + + $transportObject = new TransportObject( + TransportType::LAND, null, + $request->input('tracking'), + Carbon::parse($request->input('etd')), + Carbon::parse($request->input('eta')), + ApprovalStatus::APPROVED + ); + $transport = $this->createsTransport->execute($transportObject, $container); + + $scheduleObject = new ScheduleObject( + Carbon::parse($request->input('etd')), + Carbon::parse($request->input('eta')), + ApprovalStatus::APPROVED + ); + $schedule = $this->createsSchedule->execute($transport, $scheduleObject); + + return $this->resourceResponse(new ContainerResource($container)); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php index 1df92ffa..08af0bb7 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php @@ -54,13 +54,10 @@ class InboundCustomClearedLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { - //$this->canListOrders->passes(); - //$query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true])); + $query = $this->fetchInboundCustomCleared->execute(); - $d = $this->fetchInboundCustomCleared->execute(); - - return response()->json($d); + return $this->collectionResponse(ContainerResource::collection($query)); } } diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/RescheduleContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/RescheduleContainerLogic.php new file mode 100644 index 00000000..b3638b90 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/RescheduleContainerLogic.php @@ -0,0 +1,82 @@ + 'Reschedule Container', + 'message' => 'You have successfully Reschedule Container' + ]; + } + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** @var UpdatesScheduleStatus */ + private $updatesScheduleStatus; + + /** @var CreatesSchedule */ + private $createsSchedule; + + /** + * DeleteContainerControllersLogic constructor. + * @param FetchesContainer $fetchesContainer + * @param CreatesSchedule $createsSchedule + */ + public function __construct(FetchesContainer $fetchesContainer, UpdatesScheduleStatus $updatesScheduleStatus, CreatesSchedule $createsSchedule) + { + $this->fetchesContainer = $fetchesContainer; + $this->updatesScheduleStatus = $updatesScheduleStatus; + $this->createsSchedule = $createsSchedule; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + $container = $this->fetchesContainer->execute(['id' => $request->route('id')]); + $transport = $container->transports()->first(); + + $old_sechedule = $transport->schedules()->first(); + + $this->updatesScheduleStatus->execute($old_sechedule, ApprovalStatus::REJECTED); + + $scheduleObject = new ScheduleObject( + Carbon::parse($request->input('etd')), + Carbon::parse($request->input('eta')), + ApprovalStatus::APPROVED + ); + $schedule = $this->createsSchedule->execute($transport, $scheduleObject); + + return $this->resourceResponse(new ContainerResource($container)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateDispatchDateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateDispatchDateContainerLogic.php new file mode 100644 index 00000000..7b091fb6 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateDispatchDateContainerLogic.php @@ -0,0 +1,60 @@ + 'Updated Dispatch Date Container', + 'message' => 'You have successfully updated the Dispatch Date Container' + ]; + } + + + /** @var UpdatesDispatchDateTransport */ + private $updatesDispatchDateTransport; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * UpdateDispatchDateContainerLogic constructor. + * @param CanUpdateContainer $canUpdateContainer + * @param UpdatesDispatchDateTransport $updatesDispatchDateTransport + * @param FetchesContainer $fetchesContainer + */ + public function __construct(UpdatesDispatchDateTransport $updatesDispatchDateTransport, FetchesContainer $fetchesContainer) + { + $this->updatesDispatchDateTransport = $updatesDispatchDateTransport; + $this->fetchesContainer = $fetchesContainer; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $container = $this->fetchesContainer->execute(['id' => $request->route('id')]); + $transport = $container->transports()->first(); + $query = $this->updatesDispatchDateTransport->execute($transport, Carbon::parse($request->input('dispatch_date'))); + return $this->resourceResponse(new ContainerResource($container)); + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateDropDateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateDropDateContainerLogic.php new file mode 100644 index 00000000..56d4d9b5 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateDropDateContainerLogic.php @@ -0,0 +1,60 @@ + 'Updated Drop Date Container', + 'message' => 'You have successfully updated the Drop Date Container' + ]; + } + + + /** @var UpdatesDropDateTransport */ + private $updatesDropDateTransport; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * UpdateDropDateContainerLogic constructor. + * @param CanUpdateContainer $canUpdateContainer + * @param UpdatesDropDateTransport $updatesDropDateTransport + * @param FetchesContainer $fetchesContainer + */ + public function __construct(UpdatesDropDateTransport $updatesDropDateTransport, FetchesContainer $fetchesContainer) + { + $this->updatesDropDateTransport = $updatesDropDateTransport; + $this->fetchesContainer = $fetchesContainer; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $container = $this->fetchesContainer->execute(['id' => $request->route('id')]); + $transport = $container->transports()->first(); + $query = $this->updatesDropDateTransport->execute($transport, Carbon::parse($request->input('drop_date'))); + return $this->resourceResponse(new ContainerResource($container)); + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php index 80a5ee5d..0a3b091c 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php @@ -72,7 +72,6 @@ class CreatePackageLogic extends AbstractControllerLogic $request->input('height'), $request->input('length'), $request->input('weight'), - 0, $request->input('quantity'), ApprovalStatus::PENDING_VERIFICATION); diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php new file mode 100644 index 00000000..097b7e1e --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/ReschedulePackingListLogic.php @@ -0,0 +1,83 @@ + 'Reschedule Packing List', + 'message' => 'You have successfully Reschedule Packing List' + ]; + } + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var UpdatesScheduleStatus */ + private $updatesScheduleStatus; + + /** @var CreatesSchedule */ + private $createsSchedule; + + /** + * DeleteContainerControllersLogic constructor. + * @param FetchesPackingList $fetchesPackingList + * @param CreatesSchedule $createsSchedule + */ + public function __construct(FetchesPackingList $fetchesPackingList, UpdatesScheduleStatus $updatesScheduleStatus, CreatesSchedule $createsSchedule) + { + $this->fetchesPackingList = $fetchesPackingList; + $this->updatesScheduleStatus = $updatesScheduleStatus; + $this->createsSchedule = $createsSchedule; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + try { + $packing_list = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + + $transport = $packing_list->transports()->first(); + + $old_sechedule = $transport->schedules()->first(); + + $this->updatesScheduleStatus->execute($old_sechedule, ApprovalStatus::REJECTED); + + $scheduleObject = new ScheduleObject( + Carbon::parse($request->input('eta')), + Carbon::parse($request->input('etd')), + ApprovalStatus::APPROVED + ); + $schedule = $this->createsSchedule->execute($transport, $scheduleObject); + + return $this->resourceResponse(new PackingListResource($packing_list)); + + } catch (\Exception $exception){ + throw new ErrorException($exception->getMessage(), $exception->getCode()); + } + + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/UpdateDispatchDatePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/UpdateDispatchDatePackingListLogic.php new file mode 100644 index 00000000..85970894 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/UpdateDispatchDatePackingListLogic.php @@ -0,0 +1,60 @@ + 'Updated Dispatch Date Packing List', + 'message' => 'You have successfully updated the Dispatch Date Packing List' + ]; + } + + + /** @var UpdatesDispatchDateTransport */ + private $updatesDispatchDateTransport; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * UpdateDispatchDatePackingListLogic constructor. + * @param CanUpdateContainer $canUpdateContainer + * @param UpdatesDispatchDateTransport $updatesDispatchDateTransport + * @param FetchesPackingList $fetchesPackingList + */ + public function __construct(UpdatesDispatchDateTransport $updatesDispatchDateTransport, FetchesPackingList $fetchesPackingList) + { + $this->updatesDispatchDateTransport = $updatesDispatchDateTransport; + $this->fetchesPackingList = $fetchesPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $packing_list = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + $transport = $packing_list->transports()->first(); + $query = $this->updatesDispatchDateTransport->execute($transport, Carbon::parse($request->input('dispatch_date'))); + return $this->resourceResponse(new PackingListResource($packing_list)); + } + +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/UpdateDropDatePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/UpdateDropDatePackingListLogic.php new file mode 100644 index 00000000..3ee81faa --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/UpdateDropDatePackingListLogic.php @@ -0,0 +1,60 @@ + 'Updated Drop Date Packing List', + 'message' => 'You have successfully updated the Drop Date Packing List' + ]; + } + + + /** @var UpdatesDropDateTransport */ + private $updatesDropDateTransport; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * UpdateDispatchDatePackingListLogic constructor. + * @param CanUpdateContainer $canUpdateContainer + * @param UpdatesDropDateTransport $updatesDropDateTransport + * @param FetchesPackingList $fetchesPackingList + */ + public function __construct(UpdatesDropDateTransport $updatesDropDateTransport, FetchesPackingList $fetchesPackingList) + { + $this->updatesDropDateTransport = $updatesDropDateTransport; + $this->fetchesPackingList = $fetchesPackingList; + } + + + /** + * @param Request $request + * @return JsonResponse + * @throws ErrorException + */ + public function logic(Request $request) : JsonResponse + { + $packing_list = $this->fetchesPackingList->execute(['id' => $request->route('id')]); + $transport = $packing_list->transports()->first(); + $query = $this->updatesDropDateTransport->execute($transport, Carbon::parse($request->input('drop_date'))); + return $this->resourceResponse(new PackingListResource($packing_list)); + } + +} diff --git a/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php b/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php index 7b5a86d1..982b7307 100644 --- a/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php @@ -20,7 +20,7 @@ class CreatePackingListProcessor /** - * CreatePackingListLogic constructor. + * CreatePackingListProcessor constructor. * @param CanCreatePackingList $canCreatePackingList * @param CreatesPackingList $createsPackingList */ diff --git a/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php index b4ea6395..f5002532 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php @@ -55,49 +55,23 @@ class FetchInboundCustomClearedProcessor */ public function execute(){ - $packingLists = PackingList::query()->with(['steps' => function ($query) { + $packingLists = PackingList::query()->with(['steps' => function ($query) { $query->where('steps.status', '<>', 3); - }])->first(); - dd($packingLists); - /* - $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST) - ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::SUSPENDED])->get(); + }]) + ->where('type', PackingListType::SHIPPING_PACKING_LIST) + ->whereHas('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->where('type', '=', TransportType::SEA)->where('status', '=', ApprovalStatus::COMPLETED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + })->whereDoesntHave('transports', function($query){ + return $query->where('type', '=', TransportType::LAND)->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + })->get(); - foreach($packingLists as $packingList){ - try { - $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; - - $shippingPackingListsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), ''); - - $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); - - $shippingPackingList = $shippingPackingLists->Rows[0]; - - if(!$shippingPackingList[9] && !$shippingPackingList[10]) { - continue; - } - - $packingList->status = ApprovalStatus::COMPLETED; - $packingList->save(); - - $deliveryDate = Carbon::parse($shippingPackingList[9] ? $shippingPackingList[9]:$shippingPackingList[10]); - $transportObject = new TransportObject(TransportType::LAND, null, null, $deliveryDate, $deliveryDate, ApprovalStatus::APPROVED); - $transport = $this->createsTransport->execute($transportObject, $packingList); - $this->createsSchedule->execute($transport, new ScheduleObject($deliveryDate, $deliveryDate, ApprovalStatus::APPROVED)); - - $deliveryStep = $packingList->steps()->where('reference', '=', 'LAST_MILE_DELIVERY')->first(); - $signature = $packingList->owner->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->entity_sigiture; - $this->updatesContractObligations->execute($signature, $deliveryStep->obligation_hash_id); - $deliveryStep->update(['status' => ApprovalStatus::COMPLETED]); - - } catch (GuzzleException $exception) { - continue; - } - - }*/ - - - return []; + return $packingLists ; } diff --git a/app/Classes/Modules/PackingLists/Services/ChecksIfPackingListReferenceNumberExists.php b/app/Classes/Modules/PackingLists/Services/ChecksIfPackingListReferenceNumberExists.php new file mode 100644 index 00000000..6ff6d0e6 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/ChecksIfPackingListReferenceNumberExists.php @@ -0,0 +1,21 @@ +repository = $repository; + } + + public function execute(string $reference_number): bool { + return $this->repository->where('reference', $reference_number)->exists(); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/Services/Containers/UpdatesContainerStatus.php b/app/Classes/Modules/PackingLists/Services/Containers/UpdatesContainerStatus.php new file mode 100644 index 00000000..1072f45f --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/Containers/UpdatesContainerStatus.php @@ -0,0 +1,24 @@ +status = $status; + + return $this->handler($model); + + } +} diff --git a/app/Classes/Modules/PackingLists/Services/GeneratesPackingListReferenceNumber.php b/app/Classes/Modules/PackingLists/Services/GeneratesPackingListReferenceNumber.php new file mode 100644 index 00000000..7054facf --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/GeneratesPackingListReferenceNumber.php @@ -0,0 +1,30 @@ +checksIfPackingListReferenceNumberExists = $checksIfPackingListReferenceNumberExists; + } + + /** + * @return string + */ + public function execute(): string { + + $referenceNumber = mt_rand(10000000, 99999999); + + return !$this->checksIfPackingListReferenceNumberExists->execute($referenceNumber) ? $referenceNumber : self::execute(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php b/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php index efca110a..904dcb43 100644 --- a/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php +++ b/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php @@ -23,7 +23,7 @@ class ScheduleObject implements DataTransferObject * @param Carbon $eta * @param int $status */ - public function __construct(Carbon $etd, Carbon $eta, int $status) + public function __construct(?Carbon $etd, ?Carbon $eta, int $status) { $this->etd = $etd; $this->eta = $eta; @@ -33,7 +33,7 @@ class ScheduleObject implements DataTransferObject /** * @return Carbon */ - public function getEtd(): Carbon + public function getEtd(): ?Carbon { return $this->etd; } @@ -41,7 +41,7 @@ class ScheduleObject implements DataTransferObject /** * @return Carbon */ - public function getEta(): Carbon + public function getEta(): ?Carbon { return $this->eta; } diff --git a/app/Classes/Modules/Schedules/Services/UpdatesScheduleStatus.php b/app/Classes/Modules/Schedules/Services/UpdatesScheduleStatus.php new file mode 100644 index 00000000..578242ff --- /dev/null +++ b/app/Classes/Modules/Schedules/Services/UpdatesScheduleStatus.php @@ -0,0 +1,23 @@ +status = $status; + + return $this->handler($model); + } +} diff --git a/app/Classes/Modules/Transports/Services/UpdatesDispatchDateTransport.php b/app/Classes/Modules/Transports/Services/UpdatesDispatchDateTransport.php new file mode 100644 index 00000000..fb8876dd --- /dev/null +++ b/app/Classes/Modules/Transports/Services/UpdatesDispatchDateTransport.php @@ -0,0 +1,22 @@ +dispatch_date = $date; + return $this->handler($model); + } +} diff --git a/app/Classes/Modules/Transports/Services/UpdatesDropDateTransport.php b/app/Classes/Modules/Transports/Services/UpdatesDropDateTransport.php new file mode 100644 index 00000000..6f23c65b --- /dev/null +++ b/app/Classes/Modules/Transports/Services/UpdatesDropDateTransport.php @@ -0,0 +1,22 @@ +drop_date = $date; + return $this->handler($model); + } +} diff --git a/app/Http/Controllers/Orders/CreateShippingPackingListController.php b/app/Http/Controllers/Orders/CreateShippingPackingListController.php new file mode 100644 index 00000000..01c28124 --- /dev/null +++ b/app/Http/Controllers/Orders/CreateShippingPackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Orders/CreateWarehousePackingListController.php b/app/Http/Controllers/Orders/CreateWarehousePackingListController.php new file mode 100644 index 00000000..a986e328 --- /dev/null +++ b/app/Http/Controllers/Orders/CreateWarehousePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/PackingLists/CompletePackingListController.php b/app/Http/Controllers/PackingLists/CompletePackingListController.php new file mode 100644 index 00000000..504c7b51 --- /dev/null +++ b/app/Http/Controllers/PackingLists/CompletePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/CompleteContainerController.php b/app/Http/Controllers/PackingLists/Containers/CompleteContainerController.php new file mode 100644 index 00000000..97030d8a --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/CompleteContainerController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/CreateLoadContainerController.php b/app/Http/Controllers/PackingLists/Containers/CreateLoadContainerController.php new file mode 100644 index 00000000..00373acc --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/CreateLoadContainerController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/RescheduleContainerController.php b/app/Http/Controllers/PackingLists/Containers/RescheduleContainerController.php new file mode 100644 index 00000000..f85cf690 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/RescheduleContainerController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/app/Http/Controllers/PackingLists/Containers/UpdateDispatchDateContainerController.php b/app/Http/Controllers/PackingLists/Containers/UpdateDispatchDateContainerController.php new file mode 100644 index 00000000..17757383 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/UpdateDispatchDateContainerController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/UpdateDropDateContainerController.php b/app/Http/Controllers/PackingLists/Containers/UpdateDropDateContainerController.php new file mode 100644 index 00000000..f4bb133f --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/UpdateDropDateContainerController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/ReschedulePackingListController.php b/app/Http/Controllers/PackingLists/ReschedulePackingListController.php new file mode 100644 index 00000000..b92e672e --- /dev/null +++ b/app/Http/Controllers/PackingLists/ReschedulePackingListController.php @@ -0,0 +1,19 @@ +execute($request); + } +} diff --git a/app/Http/Controllers/PackingLists/UpdateDispatchDatePackingListController.php b/app/Http/Controllers/PackingLists/UpdateDispatchDatePackingListController.php new file mode 100644 index 00000000..af3e818d --- /dev/null +++ b/app/Http/Controllers/PackingLists/UpdateDispatchDatePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/UpdateDropDatePackingListController.php b/app/Http/Controllers/PackingLists/UpdateDropDatePackingListController.php new file mode 100644 index 00000000..8580246d --- /dev/null +++ b/app/Http/Controllers/PackingLists/UpdateDropDatePackingListController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Resources/ScheduleResource.php b/app/Http/Resources/ScheduleResource.php index 6f7209d6..64532420 100644 --- a/app/Http/Resources/ScheduleResource.php +++ b/app/Http/Resources/ScheduleResource.php @@ -16,8 +16,8 @@ class ScheduleResource extends JsonResource { return [ 'id' => $this->id, - 'etd' => $this->etd->format('d-m-Y'), - 'eta' => $this->eta->format('d-m-Y'), + 'etd' => $this->etd ? $this->etd->format('d-m-Y') : 'n/a', + 'eta' => $this->eta ? $this->eta->format('d-m-Y') : 'n/a', 'status' => $this->status, ]; } diff --git a/package.json b/package.json index 26b57108..d5b37663 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "v-money": "^0.8.1", "vue": "^2.6.10", "vue-avatar": "^2.1.8", + "vue-bootstrap-datetimepicker": "^5.0.1", "vue-debounce": "^2.6.0", "vue-template-compiler": "^2.6.10", "vue-the-mask": "^0.11.1", diff --git a/resources/assets/sass/modules/_form_elements.scss b/resources/assets/sass/modules/_form_elements.scss index e242894f..00b41ed2 100644 --- a/resources/assets/sass/modules/_form_elements.scss +++ b/resources/assets/sass/modules/_form_elements.scss @@ -560,7 +560,6 @@ input[type=checkbox]:checked + label{ padding-left: 12px; padding-right: 12px; padding-bottom: 4px; - overflow: hidden; width: 100%; @include transition(background-color .2s ease); &.required:after { diff --git a/resources/assets/vue/components/containers/elements/ContainerArrivalFormComponent.vue b/resources/assets/vue/components/containers/elements/ContainerArrivalFormComponent.vue new file mode 100644 index 00000000..50a75bfc --- /dev/null +++ b/resources/assets/vue/components/containers/elements/ContainerArrivalFormComponent.vue @@ -0,0 +1,58 @@ + + diff --git a/resources/assets/vue/components/containers/elements/ContainerComponent.vue b/resources/assets/vue/components/containers/elements/ContainerComponent.vue index 7f8f627f..ded65bb3 100644 --- a/resources/assets/vue/components/containers/elements/ContainerComponent.vue +++ b/resources/assets/vue/components/containers/elements/ContainerComponent.vue @@ -1,14 +1,14 @@