From 276e12679d1e23291391c36f939bda9be5639574 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 23 Aug 2021 08:39:59 +0800 Subject: [PATCH 01/61] update packinglists from vt portal --- .../General/Eloquent/Filters/WithParcels.php | 20 + .../General/Interfaces/ContainerOwner.php | 13 + app/Classes/General/Interfaces/Packable.php | 13 + app/Classes/General/Interfaces/Steppable.php | 13 + .../General/Interfaces/Transportable.php | 13 + .../CreateAddressFromOldAddressProcessor.php | 55 +++ .../Addresses/Services/CleansOldAddress.php | 50 +++ .../ControllersLogic/CreateOrderLogic.php | 52 ++- .../ControllersLogic/FetchOrderLogic.php | 2 +- .../Processors/CreateOrderProcessor.php | 36 +- .../Processors/CreateOrderProcessorOld.php | 15 +- .../Processors/CreateOrderRolesProcessor.php | 36 +- .../Services/FetchesDataFromVTPortal.php | 92 ++++ .../Containers/CreateContainerLogic.php | 6 +- .../Containers/DeleteContainerLogic.php | 2 +- .../Containers/FetchContainerLogic.php | 2 +- .../Containers/ListContainersLogic.php | 2 +- .../Containers/UpdateContainerLogic.php | 2 +- .../CreatePackingListLogic.php | 56 +-- .../Packages/CreatePackageLogic.php | 3 +- .../DataTransferObjects/ContainerObject.php | 63 ++- .../DataTransferObjects/PackageObject.php | 76 +++- .../DataTransferObjects/PackingListObject.php | 49 ++- .../Processors/CreateContainerProcessor.php | 45 ++ .../Processors/CreatePackageProcessor.php | 48 +++ .../Processors/CreatePackingListProcessor.php | 47 +++ ...inersStatusUpdateFromVTPortalProcessor.php | 140 +++++++ ...FetchDeliveryListFromVTPortalProcessor.php | 101 +++++ ...hLoadedContainersFromVTPortalProcessor.php | 221 ++++++++++ .../FetchPackingListFromVTPortalProcessor.php | 79 ++++ ...ehouseReceiveListFromVTPortalProcessor.php | 395 ++++++++---------- .../GenerateShippingOrderStepsProcessor.php | 58 +++ .../Services/Containers/CreatesContainer.php | 17 +- .../Services/CreatesPackingList.php | 16 +- .../Services/Packages/CreatesPackage.php | 10 +- .../Rules/Containers/CanCreateContainer.php | 20 +- .../Rules/Containers/CanDeleteContainer.php | 2 +- .../Rules/Containers/CanFetchContainer.php | 2 +- .../Rules/Containers/CanListContainers.php | 2 +- .../Rules/Containers/CanUpdateContainer.php | 2 +- .../Validators/ContainerValidation.php | 8 +- .../Validators/PackageValidation.php | 2 - .../DataTransferObjects/ScheduleObject.php | 40 +- .../Schedules/Services/CreatesSchedule.php | 1 + .../Steps/DataTransferObjects/StepsObject.php | 79 ++-- .../Steps/Processors/CreateStepsProcessor.php | 15 +- .../Steps/Services/CreatesManySteps.php | 4 +- .../Modules/Steps/Services/CreatesStep.php | 33 ++ .../Modules/Steps/Services/CreatesSteps.php | 35 -- .../DataTransferObjects/TransportObject.php | 48 +-- .../Transports/Services/CreatesTransport.php | 7 +- .../AssignContractEntityProcessor.php | 7 +- .../CreateContractEntityProcessor.php | 2 +- .../Unity/Services/CreatesContractEntity.php | 4 +- .../ValueObjects/Constants/PackageType.php | 11 + .../Constants/PackingListType.php | 18 + .../ValueObjects/Constants/TransportType.php | 15 + .../Constants/WarehouseReferences.php | 19 + app/Http/Resources/ContainerResource.php | 4 +- app/Http/Resources/OrderResource.php | 53 +++ app/Http/Resources/PackageResource.php | 11 +- app/Http/Resources/PackingListResource.php | 2 + app/Http/Resources/ScheduleResource.php | 4 +- app/Http/Resources/TransportResource.php | 7 +- app/Models/Address.php | 8 +- app/Models/CompanyModule.php | 13 +- app/Models/Container.php | 7 +- app/Models/ContainerPackingList.php | 2 +- app/Models/OldOrders.php | 16 + app/Models/Order.php | 22 +- app/Models/OrderRole.php | 2 + app/Models/Package.php | 13 +- app/Models/PackingList.php | 45 +- app/Models/Schedule.php | 2 + app/Models/Step.php | 16 +- app/Models/Transport.php | 4 + config/unity.php | 8 +- .../2021_07_07_174624_create_steps_table.php | 5 +- ...7_21_110049_create_packing_lists_table.php | 3 +- ...1_07_21_110190_create_containers_table.php | 7 +- ...34_create_transport_arrangements_table.php | 10 +- database/seeders/CompaniesTableSeeder.php | 48 +-- .../elements/ValidationErrorComponent.vue | 37 -- .../general/forms/FileUploadComponent.vue | 2 +- .../forms/ValidationErrorComponent.vue | 5 +- .../orders/elements/PackageComponent.vue | 135 ++++++ .../orders/elements/ParcelComponent.vue | 72 ++++ .../sections/OrderProfileSectionComponent.vue | 157 ++++++- 88 files changed, 2252 insertions(+), 692 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/WithParcels.php create mode 100644 app/Classes/General/Interfaces/ContainerOwner.php create mode 100644 app/Classes/General/Interfaces/Packable.php create mode 100644 app/Classes/General/Interfaces/Steppable.php create mode 100644 app/Classes/General/Interfaces/Transportable.php create mode 100644 app/Classes/Modules/Addresses/Processors/CreateAddressFromOldAddressProcessor.php create mode 100644 app/Classes/Modules/Addresses/Services/CleansOldAddress.php create mode 100644 app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php create mode 100644 app/Classes/Modules/PackingLists/Processors/CreateContainerProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/CreatePackageProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php create mode 100644 app/Classes/Modules/PackingLists/Processors/GenerateShippingOrderStepsProcessor.php create mode 100644 app/Classes/Modules/Steps/Services/CreatesStep.php delete mode 100644 app/Classes/Modules/Steps/Services/CreatesSteps.php create mode 100644 app/Classes/ValueObjects/Constants/PackageType.php create mode 100644 app/Classes/ValueObjects/Constants/PackingListType.php create mode 100644 app/Classes/ValueObjects/Constants/TransportType.php delete mode 100644 resources/assets/vue/components/general/elements/ValidationErrorComponent.vue create mode 100644 resources/assets/vue/components/orders/elements/PackageComponent.vue create mode 100644 resources/assets/vue/components/orders/elements/ParcelComponent.vue diff --git a/app/Classes/General/Eloquent/Filters/WithParcels.php b/app/Classes/General/Eloquent/Filters/WithParcels.php new file mode 100644 index 00000000..fa83f829 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WithParcels.php @@ -0,0 +1,20 @@ +with('parcels'); + } +} \ No newline at end of file diff --git a/app/Classes/General/Interfaces/ContainerOwner.php b/app/Classes/General/Interfaces/ContainerOwner.php new file mode 100644 index 00000000..b7153136 --- /dev/null +++ b/app/Classes/General/Interfaces/ContainerOwner.php @@ -0,0 +1,13 @@ +cleansOldAddress = $cleansOldAddress; + $this->createsAddress = $createsAddress; + } + + + /** + * @param OldAddress $address + * @param Addressable $addressable + * @return Model|null + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(OldAddress $address, Addressable $addressable): ?Model { + + if(!$object = $this->cleansOldAddress->execute($address)){ + return null; + } + + + if($address = $addressable->addresses()->where('street_one', $object->getStreetOne())->first()){ + return $address; + } + + return $this->createsAddress->execute($addressable, $object); + + } + +} diff --git a/app/Classes/Modules/Addresses/Services/CleansOldAddress.php b/app/Classes/Modules/Addresses/Services/CleansOldAddress.php new file mode 100644 index 00000000..c23db315 --- /dev/null +++ b/app/Classes/Modules/Addresses/Services/CleansOldAddress.php @@ -0,0 +1,50 @@ +street_one === '' && $address->street_two === ''){ + return null; + } + + if(!$address->post_code){ + return null; + } + + $district = District::where('postcode', 'like', '%'. $address->post_code .'%')->first(); + + if(!$district) { + return null; + } + + return new AddressObject($this->cleanAddress($address->street_one, $district, $address->post_code), $this->cleanAddress($address->street_two, $district, $address->post_code), $district->country_id, $district->state_id, $district->id, $address->post_code, 'Delivery Address'); + + } + + private function cleanAddress($address, $district, $postcode){ + $address = str_replace('Malaysia', '', str_replace('malaysia', '', $address)); + $address = str_replace($district->state->name, '',str_replace($district->name, '', $address)); + $address = str_replace($postcode, '', $address); + $address = str_replace(', ,', ',', str_replace(', ,', ',', str_replace(', ,', ',', $address))); + $address = str_replace(',', ', ', $address); + $address = preg_replace('!\s+!', ' ', $address); + $address = preg_replace("/,+/", ",", $address); + return rtrim(rtrim(rtrim($address), ',')); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php index c7262717..97506974 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderLogic.php @@ -3,7 +3,11 @@ namespace App\Classes\Modules\Orders\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; +use App\Classes\Modules\Addresses\Services\FetchesAddress; +use App\Classes\Modules\Companies\Services\FetchesCompany; +use App\Classes\Modules\Companies\Services\FetchesCompanyModule; use App\Classes\Modules\Orders\Processors\CreateOrderProcessor; +use App\Classes\Modules\Orders\Services\GeneratesOrderNumber; use App\Http\Resources\OrderResource; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; @@ -11,13 +15,6 @@ use Illuminate\Http\JsonResponse; class CreateOrderLogic extends AbstractControllerLogic { - private $createOrderProcessor; - - public function __construct( CreateOrderProcessor $createsOrderProcessor) - { - $this->createOrderProcessor = $createsOrderProcessor; - } - protected function notification():array { return [ 'title' => 'Created Order', @@ -25,9 +22,48 @@ class CreateOrderLogic extends AbstractControllerLogic ]; } + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var fetchesAddress */ + private $fetchesAddress; + + /** @var CreateOrderProcessor */ + private $createOrderProcessor; + + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + + /** @var GeneratesOrderNumber */ + private $generatesOrderNumber; + + /** + * CreateOrderLogic constructor. + * @param FetchesCompany $fetchesCompany + * @param FetchesAddress $fetchesAddress + * @param CreateOrderProcessor $createOrderProcessor + * @param FetchesCompanyModule $fetchesCompanyModule + * @param GeneratesOrderNumber $generatesOrderNumber + */ + public function __construct(FetchesCompany $fetchesCompany, FetchesAddress $fetchesAddress, CreateOrderProcessor $createOrderProcessor, FetchesCompanyModule $fetchesCompanyModule, GeneratesOrderNumber $generatesOrderNumber) + { + $this->fetchesCompany = $fetchesCompany; + $this->fetchesAddress = $fetchesAddress; + $this->createOrderProcessor = $createOrderProcessor; + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->generatesOrderNumber = $generatesOrderNumber; + } + + public function logic(Request $request) : JsonResponse { - $order = $this->createOrderProcessor->execute($request); + $company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]); + + $address = $this->fetchesAddress->execute(['id' => $request->input('address_id')]); + + $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $request->input('warehouse_id')]); + + $order = $this->createOrderProcessor->execute($company, $originWarehouse, $address, $this->generatesOrderNumber->execute()); return $this->resourceResponse(new OrderResource($order)); } diff --git a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php index 8dc9a5cb..c58b14a5 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/FetchOrderLogic.php @@ -52,7 +52,7 @@ class FetchOrderLogic extends AbstractControllerLogic $this->canFetchOrder->passes(); - $query = $this->fetchesOrder->execute(['reference' => $request->route('id')]); + $query = $this->fetchesOrder->execute(['reference' => $request->route('id'), 'with_parcels' => true]); return $this->resourceResponse(new OrderResource($query)); diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php index 61d988af..53350d59 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php @@ -13,83 +13,69 @@ use App\Classes\Modules\Orders\Services\GeneratesOrderNumber; use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrder; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderType; +use App\Models\Address; +use App\Models\Company; use App\Models\CompanyModule; use App\Models\Order; -use Illuminate\Http\Request; class CreateOrderProcessor { - /** @var GeneratesOrderNumber */ - private $generatesOrderNumber; - /** @var CanCreateOrder */ private $canCreateOrder; /** @var CreatesOrder */ private $createsOrder; - /** @var fetchesAddress */ - private $fetchesAddress; - /** @var CreatesAddress */ private $createAddress; - /** @var FetchesCompany */ - private $fetchesCompany; - /** @var CreateOrderRolesProcessor */ private $createOrderRolesProcessor; /** * CreateOrderProcessor constructor. - * @param GeneratesOrderNumber $generatesOrderNumber * @param CanCreateOrder $canCreateOrder * @param CreatesOrder $createsOrder - * @param FetchesAddress $fetchesAddress * @param CreatesAddress $createAddress - * @param FetchesCompany $fetchesCompany * @param CreateOrderRolesProcessor $createOrderRolesProcessor */ - public function __construct(GeneratesOrderNumber $generatesOrderNumber, CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, FetchesAddress $fetchesAddress, CreatesAddress $createAddress, FetchesCompany $fetchesCompany, CreateOrderRolesProcessor $createOrderRolesProcessor) + public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreatesAddress $createAddress, CreateOrderRolesProcessor $createOrderRolesProcessor) { - $this->generatesOrderNumber = $generatesOrderNumber; $this->canCreateOrder = $canCreateOrder; $this->createsOrder = $createsOrder; - $this->fetchesAddress = $fetchesAddress; $this->createAddress = $createAddress; - $this->fetchesCompany = $fetchesCompany; $this->createOrderRolesProcessor = $createOrderRolesProcessor; } /** - * @param Request $request + * @param Company $company + * @param CompanyModule $originWarehouse + * @param Address $address + * @param int|null $orderNumber * @return Addressable * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ - public function execute(Request $request){ - - $company = $this->fetchesCompany->execute(['id' => $request->get('company_id')]); + public function execute(Company $company, CompanyModule $originWarehouse, Address $address, int $orderNumber){ /** @var CompanyModule $importer */ - $importer = $this->fetchesCompany->execute(['id' => $request->get('company_id')])->companyModules()->importers()->first(); + $importer = $company->companyModules()->importers()->first(); - $orderObject = new OrderObject($this->generatesOrderNumber->execute(), OrderType::SHARED_CONTAINER, $company->status === ApprovalStatus::APPROVED ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); + $orderObject = new OrderObject($orderNumber, OrderType::SHARED_CONTAINER, $company->status === ApprovalStatus::APPROVED ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); $this->canCreateOrder->passes($orderObject); /** @var Order $order */ $order = $this->createsOrder->execute($importer, $orderObject); - $address = $this->fetchesAddress->execute(['id' => $request->get('address_id')]); $addressObject = new AddressObject($address->street_one, $address->street_two, $address->country_id, $address->state_id, $address->district_id, $address->postcode,$address->reference); $this->createAddress->execute($order, $addressObject); - $this->createOrderRolesProcessor->execute($request, $order); + $this->createOrderRolesProcessor->execute($originWarehouse, $order); return $order; } diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessorOld.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessorOld.php index ccb638ef..bdab0601 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessorOld.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessorOld.php @@ -10,6 +10,7 @@ use App\Classes\Modules\Orders\Services\CreatesOrder; use App\Classes\Modules\Orders\Standards\Rules\CanCreateOrder; use App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor; use App\Classes\Modules\OrderSteps\Processors\CreateOrderStepsProcessor; +use App\Classes\Modules\Steps\Processors\CreateStepsProcessor; use App\Classes\Modules\Unity\Services\CreatesContract; use App\Classes\ValueObjects\Constants\OrderStatus; use App\Classes\ValueObjects\Constants\OrderSteps; @@ -33,8 +34,8 @@ class CreateOrderProcessorOld /** @var ConfirmOrderProcessor */ private $confirmOrderProcessor; - /** @var CreateOrderStepsProcessor */ - private $createOrderStepsProcessor; + /** @var CreateStepsProcessor */ + private $createStepsProcessor; /** @var CreatesContract */ private $unityCreateContract; @@ -58,11 +59,11 @@ class CreateOrderProcessorOld private $fetchesAddress; /** - * CreateOrderProcessor constructor. + * CreateOrderProcessorOld constructor. * @param CanCreateOrder $canCreateOrder * @param CreatesOrder $createsOrder * @param \App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor $confirmOrderProcessor - * @param CreateOrderStepsProcessor $createOrderStepsProcessor + * @param CreateStepsProcessor $createStepsProcessor * @param CreatesContract $unityCreateContract * @param AssignContractEntityProcessor $unityAssignContractEntity * @param CreateContractEntityProcessor $unityCreateContractEntity @@ -71,12 +72,12 @@ class CreateOrderProcessorOld * @param CreatesAddress $createAddress * @param FetchesAddress $fetchesAddress */ - public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, \App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor $confirmOrderProcessor, CreateOrderStepsProcessor $createOrderStepsProcessor, CreatesContract $unityCreateContract, AssignContractEntityProcessor $unityAssignContractEntity, CreateContractEntityProcessor $unityCreateContractEntity, ActivateContractProcessor $unityActivateContract, \App\Classes\Modules\Orders\Processors\CreateOrderRolesProcessor $createOrderRoleProcessor, CreatesAddress $createAddress, FetchesAddress $fetchesAddress) + public function __construct(CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, \App\Classes\Modules\Orders\Processors\ConfirmOrderProcessor $confirmOrderProcessor, CreateStepsProcessor $createStepsProcessor, CreatesContract $unityCreateContract, AssignContractEntityProcessor $unityAssignContractEntity, CreateContractEntityProcessor $unityCreateContractEntity, ActivateContractProcessor $unityActivateContract, \App\Classes\Modules\Orders\Processors\CreateOrderRolesProcessor $createOrderRoleProcessor, CreatesAddress $createAddress, FetchesAddress $fetchesAddress) { $this->canCreateOrder = $canCreateOrder; $this->createsOrder = $createsOrder; $this->confirmOrderProcessor = $confirmOrderProcessor; - $this->createOrderStepsProcessor = $createOrderStepsProcessor; + $this->createStepsProcessor = $createStepsProcessor; $this->unityCreateContract = $unityCreateContract; $this->unityAssignContractEntity = $unityAssignContractEntity; $this->unityCreateContractEntity = $unityCreateContractEntity; @@ -120,7 +121,7 @@ class CreateOrderProcessorOld //Add processing to order step //Note: For processing apointee_id is CIEF Freight Forward , id is 1, reserved in company table - $this->createOrderStepsProcessor->execute($order, OrderSteps::PROCESSING, 1); + $this->createStepsProcessor->execute($order, OrderSteps::PROCESSING, 1); //Pre-approved order, no need Admin to process it //This processor then calls Generate Order Steps diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php index 4b8f0bb8..0d4b1860 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php @@ -40,17 +40,20 @@ class CreateOrderRolesProcessor } - public function execute(Request $request, Order $order){ + /** + * @param CompanyModule $originWarehouse + * @param Order $order + * @return bool + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(CompanyModule $originWarehouse, Order $order){ $address = $order->addresses()->first(); $importer = $order->companyModule; - /** @var CompanyModule $originWarehouse */ - $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $request->get('warehouse_id')]); - /** @var CompanyModule $destinationWarehouse */ - $destinationWarehouse = $this->fetchesCompanyModule->execute(['reference' => $address->state_id = 13 ? WarehouseReferences::SABAH : ($address->state_id === 14 ? WarehouseReferences::SARAWAK : WarehouseReferences::KLANG)]); + $destinationWarehouse = $this->fetchesCompanyModule->execute(['reference' => WarehouseReferences::DESTINATION_WAREHOUSE[$address->state_id ]]); /** @var CompanyModule $freightForwarder */ $freightForwarder = $originWarehouse->company->companyModules()->freightForwarders()->first(); @@ -80,5 +83,28 @@ class CreateOrderRolesProcessor $this->createsOrderRole->execute($roleObject); return true; + + $companies = $this->fetchesCompany->getRepository()->whereIn('id',[1, $request->get('warehouse_id')])->get(); + + $cief_company = $companies[0]->id == 1 ? $companies[0] : $companies[1]; + $warehouse_company = $companies[0]->id != 1 ? $companies[0] : $companies[1]; + + $cief_company_module = $cief_company->companyModule()->first(); + $contractEntities[] = $this->unityCreateContractEntity->execute( $contract_reference_no, [$cief_company_module->unity_hash_id]); + $contractEntities[0]->{"company_module_id"} = $cief_company_module->id; + + $warehouse_company_module = $warehouse_company->companyModule()->first(); + $contractEntities[] = $this->unityCreateContractEntity->execute( $contract_reference_no, [$warehouse_company_module->unity_hash_id]); + $contractEntities[1]->{"company_module_id"} = $warehouse_company_module->id; + + foreach($contractEntities as $entity){ + $order_role_object = new OrderRoleObject($orderId, $entity->company_module_id, $entity->hash_id, $entity->entity_signature_hash_id); + + $this->canCreateOrderRole->passes($order_role_object); + + $this->createsOrderRole->execute($order_role_object); + } + + return $contractEntities; } } diff --git a/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php b/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php new file mode 100644 index 00000000..bd807d02 --- /dev/null +++ b/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php @@ -0,0 +1,92 @@ +cookies = $cookies; + } + + /** + * @return string|null + */ + public function getCookies(): ?string + { + return $this->cookies; + } + + + /** + * @param string $url + * @param string $method + * @param $body + * @param string $cookie + * @param bool $requiresAuthentication + * @return \Psr\Http\Message\ResponseInterface + * @throws \GuzzleHttp\Exception\GuzzleException + */ + public function clientRequest(string $url, string $method, $body, string $cookie, $requiresAuthentication = true){ + + if($requiresAuthentication) { + if(!$this->getCookies()){ + $this->remoteLogin(); + } + } + + $client = new \GuzzleHttp\Client( + [ + 'cookies' => true, + 'headers' => [ + 'Content-Type' => 'application/json', + 'Cookie' => $this->getCookies() ? $this->getCookies() : $cookie + ] + ] + ); + + $request = $client->request($method, $url, [\GuzzleHttp\RequestOptions::JSON => $body]); + + return $request; + } + + /** + * @throws \GuzzleHttp\Exception\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); + + $this->setCookies($latest_cookie.';AppVTCC='.$this->getResponseBody($loginRequest)->AccessToken); + + } + + public function getResponseBody(ResponseInterface $request){ + return json_decode($request->getBody()->getContents())->d; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php index 30184f62..cff8cbb6 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerLogic.php @@ -5,7 +5,7 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\Containers\CreatesContainer; -use App\Classes\Modules\PackingLists\Standards\Containers\Rules\CanCreateContainer; +use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanCreateContainer; use App\Classes\Modules\PackingLists\DataTransferObjects\ContainerObject; use App\Classes\Modules\PackingLists\Services\FetchesPackingList; use App\Http\Resources\ContainerResource; @@ -52,9 +52,7 @@ class CreateContainerLogic extends AbstractControllerLogic 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')); + $object = new ContainerObject($request->input('container_reference'), $request->input('container_type'), $request->input('seal_reference')); $this->canCreateContainer->passes($object); diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php index e25f4748..d8969d0b 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/DeleteContainerLogic.php @@ -6,7 +6,7 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\Containers\DeletesContainer; use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer; -use App\Classes\Modules\PackingLists\Standards\Containers\Rules\CanDeleteContainer; +use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanDeleteContainer; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php index 2a6f670a..8969126c 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php @@ -5,7 +5,7 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer; -use App\Classes\Modules\PackingLists\Standards\Containers\Rules\CanFetchContainer; +use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanFetchContainer; use App\Http\Resources\ContainerResource; use ErrorException; use Illuminate\Http\JsonResponse; diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php index f5422224..fb3f64af 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/ListContainersLogic.php @@ -5,7 +5,7 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\Containers\ListsContainers; -use App\Classes\Modules\PackingLists\Standards\Containers\Rules\CanListContainers; +use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanListContainers; use App\Http\Resources\ContainerResource; use ErrorException; use Illuminate\Http\JsonResponse; diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php index 8d739bed..3d1516f0 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/UpdateContainerLogic.php @@ -6,7 +6,7 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic\Containers; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\Containers\UpdatesContainer; use App\Classes\Modules\PackingLists\Services\Containers\FetchesContainer; -use App\Classes\Modules\PackingLists\Standards\Containers\Rules\CanUpdateContainer; +use App\Classes\Modules\PackingLists\Standards\Rules\Containers\CanUpdateContainer; use App\Classes\Modules\PackingLists\DataTransferObjects\ContainerObject; use App\Http\Resources\ContainerResource; use ErrorException; diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php index 3774a025..a06a6842 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/CreatePackingListLogic.php @@ -2,6 +2,10 @@ namespace App\Classes\Modules\PackingLists\ControllersLogic; +use App\Classes\Modules\Companies\Services\FetchesCompany; +use App\Classes\Modules\PackingLists\DataTransferObjects\PackageObject; +use App\Classes\Modules\PackingLists\Processors\CreatePackingListProcessor; +use App\Classes\Modules\PackingLists\Services\Packages\FetchesPackage; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\PackingLists\Services\CreatesPackingList; @@ -9,16 +13,14 @@ use App\Classes\Modules\PackingLists\Services\CreatesPackingListPackage; use App\Classes\Modules\PackingLists\Standards\Rules\CanCreatePackingList; use App\Classes\Modules\PackingLists\Standards\Rules\CanCreatePackingListPackage; use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject; -use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListPackageObject; -use App\Classes\Modules\Packages\Services\FetchesPackage; use App\Http\Resources\PackingListResource; -use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class CreatePackingListLogic extends AbstractControllerLogic { + /** * @return array */ @@ -29,62 +31,28 @@ class CreatePackingListLogic extends AbstractControllerLogic ]; } - /** @var CanCreatePackingList */ - private $canCreatePackingList; - - private $canCreatePackingListPackage; - - /** @var FetchesCompany */ - private $fetchesPackage; - - /** @var CreatesPackingList */ - private $createsPackingList; - - private $createsPackingListPackage; + /** @var CreatePackingListProcessor */ + private $createPackingListProcessor; /** * CreatePackingListLogic constructor. - * @param CanCreatePackingList $canCreatePackingList - * @param FetchesCompany $fetchesCompany - * @param CreatesPackingList $createsPackingList + * @param CreatePackingListProcessor $createPackingListProcessor */ - public function __construct(CanCreatePackingList $canCreatePackingList, CanCreatePackingListPackage $canCreatePackingListPackage, FetchesPackage $fetchesPackage, CreatesPackingList $createsPackingList, CreatesPackingListPackage $createsPackingListPackage) + public function __construct(CreatePackingListProcessor $createPackingListProcessor) { - $this->canCreatePackingList = $canCreatePackingList; - $this->canCreatePackingListPackage = $canCreatePackingListPackage; - $this->fetchesPackage = $fetchesPackage; - $this->createsPackingList = $createsPackingList; - $this->createsPackingListPackage = $createsPackingListPackage; + $this->createPackingListProcessor = $createPackingListProcessor; } /** * @param Request $request * @return JsonResponse - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\MalformedRequestException - * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request) : JsonResponse { - $package = $this->fetchesPackage->execute(['id'=>$request->input('package_id')]); - - $reference_no = rand(1000000, 9999999); - - - $object = new PackingListObject($reference_no, ApprovalStatus::PENDING_SUBMISSION); - - $this->canCreatePackingList->passes($object); - - $packageList = $this->createsPackingList->execute( $object); - - - $object = new PackingListPackageObject($packageList->id, $package->id); - - $this->canCreatePackingListPackage->passes($object); - - $query = $this->createsPackingListPackage->execute($object); + $object = new PackingListObject($request->input('reference_number'), ApprovalStatus::PENDING_SUBMISSION); + $query = $this->createPackingListProcessor->execute($object); return $this->resourceResponse(new PackingListResource($query)); diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php index 28e77a8c..c9eebc15 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/CreatePackageLogic.php @@ -65,7 +65,6 @@ class CreatePackageLogic extends AbstractControllerLogic $order = $this->fetchesOrder->execute(['id' => $request->input('order_id')]); $object = new PackageObject( - $order->id, null, $request->input('type'), $request->input('description'), @@ -74,7 +73,7 @@ class CreatePackageLogic extends AbstractControllerLogic $request->input('length'), $request->input('weight'), $request->input('quantity'), - ApprovalStatus::PENDING_SUBMISSION); + ApprovalStatus::PENDING_VERIFICATION); $this->canCreatePackage->passes($object); diff --git a/app/Classes/Modules/PackingLists/DataTransferObjects/ContainerObject.php b/app/Classes/Modules/PackingLists/DataTransferObjects/ContainerObject.php index 25dec4a1..92b0effa 100644 --- a/app/Classes/Modules/PackingLists/DataTransferObjects/ContainerObject.php +++ b/app/Classes/Modules/PackingLists/DataTransferObjects/ContainerObject.php @@ -7,39 +7,76 @@ use App\Classes\General\Interfaces\DataTransferObject; class ContainerObject implements DataTransferObject { - private $packingListId; + /** @var string */ + private $reference; - private $containerReference; + /** @var string */ + private $containerNumber; + /** @var string */ + private $sealNumber; + + /** @var int */ private $containerType; - private $sealReference; + /** @var int */ + private $status; - public function __construct(int $packingListId, ?string $containerReference, int $containerType, ?String $sealReference) + /** + * ContainerObject constructor. + * @param string $reference + * @param string $containerNumber + * @param string $sealNumber + * @param int $containerType + * @param int $status + */ + public function __construct(string $reference, string $containerNumber, string $sealNumber, int $containerType, int $status) { - $this->packingListId = $packingListId; - $this->containerReference = $containerReference; + $this->reference = $reference; + $this->containerNumber = $containerNumber; + $this->sealNumber = $sealNumber; $this->containerType = $containerType; - $this->sealReference = $sealReference; + $this->status = $status; } - public function getPackingListId(): int + /** + * @return string + */ + public function getReference(): string { - return $this->packingListId; + return $this->reference; } - public function getContainerReference(): ?string + /** + * @return string + */ + public function getContainerNumber(): string { - return $this->containerReference; + return $this->containerNumber; } + /** + * @return string + */ + public function getSealNumber(): string + { + return $this->sealNumber; + } + + /** + * @return int + */ public function getContainerType(): int { return $this->containerType; } - public function getSealReference(): ?string + /** + * @return int + */ + public function getStatus(): int { - return $this->sealReference; + return $this->status; } + } diff --git a/app/Classes/Modules/PackingLists/DataTransferObjects/PackageObject.php b/app/Classes/Modules/PackingLists/DataTransferObjects/PackageObject.php index 8eb9b466..0c825ee2 100644 --- a/app/Classes/Modules/PackingLists/DataTransferObjects/PackageObject.php +++ b/app/Classes/Modules/PackingLists/DataTransferObjects/PackageObject.php @@ -7,30 +7,47 @@ use App\Classes\General\Interfaces\DataTransferObject; class PackageObject implements DataTransferObject { - private $orderId; - - private $claimantId; - + /** @var int */ private $type; + /** @var null|string */ private $description; + /** @var float */ private $width; + /** @var float */ private $height; + /** @var float */ private $length; + /** @var float */ private $weight; + /** @var int */ private $quantity; + /** @var int */ private $status; - public function __construct(int $orderId, ?int $claimantId, int $type, ?string $description, float $width, float $height, float $length, float $weight, int $quantity, int $status) + /** @var string|null */ + private $reference; + + /** + * PackageObject constructor. + * @param int $type + * @param null|string $description + * @param float $width + * @param float $height + * @param float $length + * @param float $weight + * @param int $quantity + * @param int $status + * @param null|string $reference + */ + public function __construct(int $type, ?string $description, float $width, float $height, float $length, float $weight, int $quantity, int $status, ?string $reference=null) { - $this->orderId = $orderId; - $this->claimantId = $claimantId; $this->type = $type; $this->description = $description; $this->width = $width; @@ -39,55 +56,80 @@ class PackageObject implements DataTransferObject $this->weight = $weight; $this->quantity = $quantity; $this->status = $status; + $this->reference = $reference; } - public function getOrderId(): int - { - return $this->orderId; - } - - public function getClaimantId(): ?int - { - return $this->claimantId; - } - + /** + * @return int + */ public function getType(): int { return $this->type; } + /** + * @return null|string + */ public function getDescription(): ?string { return $this->description; } + /** + * @return float + */ public function getWidth(): float { return $this->width; } + /** + * @return float + */ public function getHeight(): float { return $this->height; } + /** + * @return float + */ public function getLength(): float { return $this->length; } + /** + * @return float + */ public function getWeight(): float { return $this->weight; } + /** + * @return int + */ public function getQuantity(): int { return $this->quantity; } + /** + * @return int + */ public function getStatus(): int { return $this->status; } + + /** + * @return null|string + */ + public function getReference(): ?string + { + return $this->reference; + } + + } diff --git a/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php b/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php index 77ab79f3..c6e1cbd0 100644 --- a/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php +++ b/app/Classes/Modules/PackingLists/DataTransferObjects/PackingListObject.php @@ -7,31 +7,62 @@ use App\Classes\General\Interfaces\DataTransferObject; class PackingListObject implements DataTransferObject { - /** @var null|string */ + /** @var string */ private $reference; + /** @var int */ + private $claimantId; + + /** @var int */ + private $type; + /** @var int */ private $status; + /** @var string|null */ + private $contractReference; + /** * PackingListObject constructor. - * @param null|string $reference + * @param string $reference + * @param int $claimantId + * @param int $type * @param int $status + * @param null|string $contractReference */ - public function __construct(?string $reference, int $status) + public function __construct(string $reference, int $claimantId, int $type, int $status, ?string $contractReference = null) { $this->reference = $reference; + $this->claimantId = $claimantId; + $this->type = $type; $this->status = $status; + $this->contractReference = $contractReference; } /** - * @return null|string + * @return string */ - public function getReference(): ?string + public function getReference(): string { return $this->reference; } + /** + * @return int + */ + public function getClaimantId(): int + { + return $this->claimantId; + } + + /** + * @return int + */ + public function getType(): int + { + return $this->type; + } + /** * @return int */ @@ -40,5 +71,13 @@ class PackingListObject implements DataTransferObject return $this->status; } + /** + * @return null|string + */ + public function getContractReference(): ?string + { + return $this->contractReference; + } + } diff --git a/app/Classes/Modules/PackingLists/Processors/CreateContainerProcessor.php b/app/Classes/Modules/PackingLists/Processors/CreateContainerProcessor.php new file mode 100644 index 00000000..6b0d5a0e --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/CreateContainerProcessor.php @@ -0,0 +1,45 @@ +canCreateContainer = $canCreateContainer; + $this->createsContainer = $createsContainer; + } + + + /** + * @param ContainerObject $object + * @param ContainerOwner $owner + * @return \Illuminate\Database\Eloquent\Model + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(ContainerObject $object, ContainerOwner $owner){ + + $this->canCreateContainer->passes($object); + return $this->createsContainer->execute($object, $owner); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/Processors/CreatePackageProcessor.php b/app/Classes/Modules/PackingLists/Processors/CreatePackageProcessor.php new file mode 100644 index 00000000..500a4550 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/CreatePackageProcessor.php @@ -0,0 +1,48 @@ +canCreatePackage = $canCreatePackage; + $this->createsPackage = $createsPackage; + } + + + /** + * @param PackageObject $object + * @param PackingList $packingList + * @return \Illuminate\Database\Eloquent\Model + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(PackageObject $object, PackingList $packingList){ + + $this->canCreatePackage->passes($object); + + return $this->createsPackage->execute($object, $packingList); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php b/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php new file mode 100644 index 00000000..7b5a86d1 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/CreatePackingListProcessor.php @@ -0,0 +1,47 @@ +canCreatePackingList = $canCreatePackingList; + $this->createsPackingList = $createsPackingList; + } + + /** + * @param PackingListObject $object + * @param Packable $packable + * @return \Illuminate\Database\Eloquent\Model + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(PackingListObject $object, Packable $packable){ + + $this->canCreatePackingList->passes($object); + return $this->createsPackingList->execute($object, $packable); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php new file mode 100644 index 00000000..ddbcd01b --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php @@ -0,0 +1,140 @@ +fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + $this->updatesContractObligations = $updatesContractObligations; + } + + + /** + * @return array + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(){ + + $containers = Container::where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); + + /** @var Container $container */ + foreach($containers as $container){ + try { + $filter = '["RefNo:=%js%\"'.$container->reference.'\"\u0000"]'; + + $containerDetailsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $containerDetails = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailsRequest); + + $containerDetails = $containerDetails->Rows[0]; + + if(!$eta = $containerDetails[3]){ + continue; + } + + $eta = Carbon::parse($eta); + + $delayDate = $containerDetails[6]; + + $containerStatus = $containerDetails[9]; + + $unstuffingDate = $containerDetails[7]; + + $transport = $container->transports()->first(); + + if(!$transport){ + $transportObject = new TransportObject(TransportType::SEA, null, null, $eta, null, ApprovalStatus::APPROVED); + /** @var Transport $transport */ + $transport = $this->createsTransport->execute($transportObject, $container); + $this->createsSchedule->execute($transport, new ScheduleObject($eta->subDays(5), $eta, ApprovalStatus::APPROVED)); + } + + if($delayDate){ + $delayDate = Carbon::parse($delayDate); + $transport = $container->transports()->first(); + if(!$transport->schedules()->where('eta', '=', $delayDate)){ + $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); + } + + $this->createsSchedule->execute($transport, new ScheduleObject($delayDate->subDays(5), $delayDate, ApprovalStatus::APPROVED)); + } + + if($containerStatus === 'Unstuffing'){ + $container->update(['status' => ApprovalStatus::COMPLETED]); + $container->transports()->first()->update(['drop_date' => Carbon::parse($unstuffingDate)->subDay(), 'status' => ApprovalStatus::COMPLETED]); + $container->packingLists()->update(['status' => ApprovalStatus::APPROVED]); + /** @var PackingList $packingList */ + foreach($container->packingLists as $packingList){ + $signature = $packingList->owner->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->entity_sigiture; + foreach($packingList->steps()->where('reference', '!=', 'DELIVERY')->get() as $step){ + $this->updatesContractObligations->execute($signature, $step->obligation_hash_id); + $step->update(['status' => ApprovalStatus::COMPLETED]); + } + } + } + + } catch (GuzzleException $exception) { + continue; + } + + } + + return []; + + } + + +} diff --git a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php new file mode 100644 index 00000000..9774de92 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php @@ -0,0 +1,101 @@ +fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + $this->updatesContractObligations = $updatesContractObligations; + } + + + /** + * @return array + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(){ + + $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::APPROVED)->get(); + + /** @var PackingList $packingList */ + 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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); + + foreach($shippingPackingLists->Rows as $shippingPackingList){ + if(!$shippingPackingList[9]) { + continue; + } + + $deliveryDate = Carbon::parse($shippingPackingList[9]); + $transportObject = new TransportObject(TransportType::LAND, null, null, $deliveryDate, $deliveryDate, ApprovalStatus::APPROVED); + /** @var Transport $transport */ + $transport = $this->createsTransport->execute($transportObject, $packingList); + $this->createsSchedule->execute($transport, new ScheduleObject($deliveryDate, $deliveryDate, ApprovalStatus::APPROVED)); + + $deliveryStep = $packingList->steps()->where('reference', '=', '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 []; + + } + + +} diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php new file mode 100644 index 00000000..ccf1b5f0 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -0,0 +1,221 @@ +fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal; + $this->fetchesOrder = $fetchesOrder; + $this->createPackingListProcessor = $createPackingListProcessor; + $this->createPackageProcessor = $createPackageProcessor; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; + $this->fetchesContainer = $fetchesContainer; + $this->fetchesPackingList = $fetchesPackingList; + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->createContainerProcessor = $createContainerProcessor; + $this->unityCreateContract = $unityCreateContract; + $this->unityAssignContractEntity = $unityAssignContractEntity; + $this->unityCreateContractEntity = $unityCreateContractEntity; + $this->createsStep = $createsStep; + $this->unityActivateContract = $unityActivateContract; + } + + + /** + * @param Carbon|null $start + * @param Carbon|null $end + * @return array + * @throws GuzzleException + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(?Carbon $start = null, ?Carbon $end = null){ + + DB::beginTransaction(); + $start = $start ? $start : Carbon::now()->subMonth(); + $end = $end ? $end : Carbon::now(); + $filter = '["LoadedTime:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; + + $containersRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $containers = $this->fetchesDataFRomVTPortal->getResponseBody($containersRequest); + + foreach ($containers->Rows as $container){ + + $filter = '["ContainerID:=%js%'.$container[11].'"]'; + $containerDetailRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $containerDetail = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailRequest); + + $containerObject = new ContainerObject($container[0], str_replace(' ', '', $container[24]), str_replace(' ', '', $container[15]), ContainerTypes::FORTY_FEET_DRY_CONTAINER, ApprovalStatus::PENDING_VERIFICATION); + + try { + $container = $this->fetchesContainer->execute(['reference' => $containerObject->getReference()]); + } catch (ResourceNotFoundException $exception){ + $warehouseId = $container[12]; + $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $warehouseId === 11 ? 3 : 4]); + $container = $this->createContainerProcessor->execute($containerObject, $originWarehouse); + } + + foreach($containerDetail->Rows as $packingList){ + $marking = explode('/', explode('CIEF/', $packingList[13])[1]); + + if(!array_key_exists(1, $marking)){ + continue; + } + + $orderNumber = $marking[1]; + + if(!$packingList[22]){ + continue; + } + + try { + /** @var Order $order */ + $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); + } catch (ResourceNotFoundException $exception){ + continue; + } + + $packingListReference = $packingList[16]; + + try{ + $this->fetchesPackingList->execute(['reference' => $packingListReference]); + } catch (ResourceNotFoundException $exception){ + $contract = $this->unityCreateContract->execute(); + $contractReference = $contract->hash_id; + $contractObligations = $contract->contract_obligation_list; + + $this->unityActivateContract->execute($contractReference); + + $supervisorHashId = $order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->unity_hash_id; + + $supervisorContractEntity = $this->unityCreateContractEntity->execute($contractReference, $supervisorHashId); + $order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->update(['entity_hash_id' => $supervisorContractEntity->hash_id, 'entity_signature' => $supervisorContractEntity->entity_signature_hash_id]); + + $importerContractEntity = $this->unityCreateContractEntity->execute($contractReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::IMPORTER)->first()->appointee->unity_hash_id); + $order->orderRoles()->where('role_id', '=', OrderRoleTypes::IMPORTER)->first()->update(['entity_hash_id' => $importerContractEntity->hash_id, 'entity_signature' => $importerContractEntity->entity_signature_hash_id]); + + $this->unityAssignContractEntity->execute($supervisorContractEntity->hash_id, $contractObligations); + + $packingListObject = new PackingListObject($packingListReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_FREIGHT_FORWARDER)->first()->appointee->id, PackingListType::SHIPPING_PACKING_LIST, ApprovalStatus::PENDING_VERIFICATION, $contractReference); + + /** @var PackingList $packingList */ + $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + $container->packingLists()->attach($packingList); + + foreach($contractObligations as $obligation) { + $stepObject = new StepsObject($order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->id, $obligation->reference, $obligation->sequence, $obligation->hash_id); + $this->createsStep->execute($packingList, $stepObject); + } + + + } + + } + + } + + + DB::commit(); + return []; + + } + + +} diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php new file mode 100644 index 00000000..ec896e5c --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -0,0 +1,79 @@ +fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal; + $this->listsPackingLists = $listsPackingLists; + $this->createPackageProcessor = $createPackageProcessor; + } + + + /** + * @return array + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(){ + + $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); + + $packingList->packages()->delete(); + + foreach($shippingPackingLists->Rows as $shippingPackingList){ + if(!$shippingPackingList[22]) { + continue; + } + + $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[43] ? $shippingPackingList[43] : $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); + $this->createPackageProcessor->execute($packageObject, $packingList); + + } + } catch (GuzzleException $exception) { + continue; + } + + } + + return []; + + } + + +} diff --git a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php index 4340b99e..28a696a8 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php @@ -2,275 +2,218 @@ namespace App\Classes\Modules\PackingLists\Processors; -use App\Classes\General\Services\GeneratesInitials; -use App\Classes\Modules\Accounts\Processors\CreateUserProcessor; -use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; -use App\Classes\Modules\Addresses\Services\CreatesAddress; -use App\Classes\Modules\Companies\DataTransferObjects\CompanyConnectionObject; -use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor; -use App\Classes\Modules\Companies\Processors\CreateCompanyProcessor; -use App\Classes\Modules\Companies\Services\ApprovesCompanyConnection; -use App\Classes\Modules\Companies\Services\CreatesCompanyConnection; -use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus; -use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; -use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; +use App\Classes\Exceptions\ResourceNotFoundException; +use App\Classes\Modules\Addresses\Processors\CreateAddressFromOldAddressProcessor; +use App\Classes\Modules\Addresses\Services\CleansOldAddress; +use App\Classes\Modules\Companies\Services\FetchesCompanyModule; +use App\Classes\Modules\Orders\Processors\CreateOrderProcessor; +use App\Classes\Modules\Orders\Services\FetchesDataFromVTPortal; +use App\Classes\Modules\Orders\Services\FetchesOrder; +use App\Classes\Modules\PackingLists\ControllersLogic\Packages\CreatePackageLogic; +use App\Classes\Modules\PackingLists\DataTransferObjects\PackageObject; +use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject; +use App\Classes\Modules\PackingLists\Services\FetchesPackingList; +use App\Classes\Modules\Schedules\DataTransferObjects\ScheduleObject; +use App\Classes\Modules\Schedules\Services\CreatesSchedule; +use App\Classes\Modules\Transports\DataTransferObjects\TransportObject; +use App\Classes\Modules\Transports\Services\CreatesTransport; use App\Classes\ValueObjects\Constants\ApprovalStatus; -use App\Classes\ValueObjects\Constants\BusinessType; -use App\Classes\ValueObjects\Constants\CompanyType; -use App\Models\Company; +use App\Classes\ValueObjects\Constants\OrderRoleTypes; +use App\Classes\ValueObjects\Constants\PackageType; +use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\TransportType; +use App\Models\Address; use App\Models\CompanyModule; -use App\Models\District; -use App\Models\OldAddress; -use App\Models\OldCompany; +use App\Models\OldOrders; +use App\Models\PackingList; +use App\Models\Transport; use Carbon\Carbon; use GuzzleHttp\Exception\GuzzleException; -use Illuminate\Support\Facades\Cache; -use Psr\Http\Message\ResponseInterface; +use Illuminate\Support\Facades\DB; class FetchWarehouseReceiveListFromVTPortalProcessor { - /** @var CreateUserProcessor */ - private $createUserProcessor; - /** @var CreateCompanyProcessor */ - private $createCompanyProcessor; + /** @var FetchesDataFromVTPortal */ + private $fetchesDataFRomVTPortal; - /** @var UpdatesCompanyStatus*/ - private $updatesCompanyStatus; + /** @var CleansOldAddress */ + private $cleansOldAddress; - /** @var CreateCompanyModuleProcessor */ - private $createCompanyModuleProcessor; + /** @var CreateAddressFromOldAddressProcessor */ + private $createAddressFromOldAddressProcessor; - /** @var CreateContactProcessor */ - private $createContactProcessor; + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; - /** @var CreatesCompanyConnection */ - private $createsCompanyConnection; + /** @var FetchesOrder */ + private $fetchesOrder; - /** @var ApprovesCompanyConnection */ - private $approvesCompanyConnection; + /** @var CreateOrderProcessor */ + private $createOrderProcessor; - /** @var CreatesAddress */ - private $createsAddress; + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** @var CreatePackingListProcessor */ + private $createPackingListProcessor; + + /** @var CreatePackageLogic */ + private $createPackage; + + /** @var CreatePackageProcessor */ + private $createPackageProcessor; + + /** @var CreatesTransport */ + private $createsTransport; + + /** @var CreatesSchedule */ + private $createsSchedule; /** * FetchWarehouseReceiveListFromVTPortalProcessor constructor. - * @param CreateUserProcessor $createUserProcessor - * @param CreateCompanyProcessor $createCompanyProcessor - * @param UpdatesCompanyStatus $updatesCompanyStatus - * @param CreateCompanyModuleProcessor $createCompanyModuleProcessor - * @param CreateContactProcessor $createContactProcessor - * @param CreatesCompanyConnection $createsCompanyConnection - * @param ApprovesCompanyConnection $approvesCompanyConnection - * @param CreatesAddress $createsAddress + * @param FetchesDataFromVTPortal $fetchesDataFRomVTPortal + * @param CleansOldAddress $cleansOldAddress + * @param CreateAddressFromOldAddressProcessor $createAddressFromOldAddressProcessor + * @param FetchesCompanyModule $fetchesCompanyModule + * @param FetchesOrder $fetchesOrder + * @param CreateOrderProcessor $createOrderProcessor + * @param FetchesPackingList $fetchesPakcingList + * @param CreatePackingListProcessor $createPackingListProcessor + * @param CreatePackageLogic $createPackage + * @param CreatePackageProcessor $createPackageProcessor + * @param CreatesTransport $createsTransport + * @param CreatesSchedule $createsSchedule */ - public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, UpdatesCompanyStatus $updatesCompanyStatus, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, CreatesAddress $createsAddress) + public function __construct(FetchesDataFromVTPortal $fetchesDataFRomVTPortal, CleansOldAddress $cleansOldAddress, CreateAddressFromOldAddressProcessor $createAddressFromOldAddressProcessor, FetchesCompanyModule $fetchesCompanyModule, FetchesOrder $fetchesOrder, CreateOrderProcessor $createOrderProcessor, FetchesPackingList $fetchesPakcingList, CreatePackingListProcessor $createPackingListProcessor, CreatePackageLogic $createPackage, CreatePackageProcessor $createPackageProcessor, CreatesTransport $createsTransport, CreatesSchedule $createsSchedule) { - $this->createUserProcessor = $createUserProcessor; - $this->createCompanyProcessor = $createCompanyProcessor; - $this->updatesCompanyStatus = $updatesCompanyStatus; - $this->createCompanyModuleProcessor = $createCompanyModuleProcessor; - $this->createContactProcessor = $createContactProcessor; - $this->createsCompanyConnection = $createsCompanyConnection; - $this->approvesCompanyConnection = $approvesCompanyConnection; - $this->createsAddress = $createsAddress; + $this->fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal; + $this->cleansOldAddress = $cleansOldAddress; + $this->createAddressFromOldAddressProcessor = $createAddressFromOldAddressProcessor; + $this->fetchesCompanyModule = $fetchesCompanyModule; + $this->fetchesOrder = $fetchesOrder; + $this->createOrderProcessor = $createOrderProcessor; + $this->fetchesPackingList = $fetchesPakcingList; + $this->createPackingListProcessor = $createPackingListProcessor; + $this->createPackage = $createPackage; + $this->createPackageProcessor = $createPackageProcessor; + $this->createsTransport = $createsTransport; + $this->createsSchedule = $createsSchedule; } /** - * @return string + * @param Carbon|null $start + * @param Carbon|null $end + * @return array * @throws GuzzleException * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ - public function execute(){ + public function execute(?Carbon $start = null, ?Carbon $end = null){ -// $addresses = OldAddress::whereIn('id', [2, 3, 4, 9, 11, 12, 17, 18, 19, 22, 23, 27, 28, 30, 31, 33, 36, 38, 40, 42, 45, 50, 51, 52, 53, 54, 58, 59, 61, 67, 68, 70, 72, 78, 80, 82, 83, 85, 86, 89, 93, 94, 97, 100, 102, 103, 104, 106, 107, 111, 115, 120, 125, 126, 128, 130, 131, 132, 133, 134, 135, 136, 137, 140, 142, 144, 145, 155, 156, 159, 170, 172, 173, 175, 177, 178, 180, 181, 182, 183, 185, 186, 187, 190, 199, 200, 202, 204, 207, 210, 213, 214, 215, 217, 218, 220, 222, 228, 231, 232, 234, 237, 242, 244, 245, 251, 252, 255, 258, 259, 261, 262, 266, 268, 273, 274, 275, 278, 281, 282, 285, 287, 292, 294, 295, 296, 297, 299, 303, 306, 307, 308, 311, 315, 316, 317, 319, 320, 321, 328, 329, 330, 332, 333, 334, 336, 339, 341]); - $companies = OldCompany::has('orders')->get(); + DB::beginTransaction(); + $start = $start ? $start : Carbon::now()->subMonth(); + $end = $end ? $end : Carbon::now(); + $filter = '["ParcelDate:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; - foreach($companies as $company){ - - $marking = explode("CIEF/", $company->marking); - if(count($marking) < 2){ - continue; - } - - /** @var Company $newCompany */ - $newCompany = $this->createCompanyProcessor->execute($company->name, CompanyType::COMPANY_BUSINESS, ApprovalStatus::PENDING_SUBMISSION); - - $this->updatesCompanyStatus->execute($newCompany, ApprovalStatus::APPROVED); - - /** @var CompanyModule $companyModule */ - $companyModule = $this->createCompanyModuleProcessor->execute($newCompany, BusinessType::IMPORTER); - - $connectionObject = new CompanyConnectionObject($companyModule, 'CIEF', $marking[1]); - - $connection = $this->createsCompanyConnection->execute($connectionObject); - $this->approvesCompanyConnection->execute($connection); - - $i = 0; - foreach($company->addresses as $address){ - if($address->street_one === '' && $address->street_two === ''){ - continue; - } - - if(!$address->post_code){ - continue; - } - - $district = District::where('postcode', 'like', '%'. $address->post_code .'%')->first(); - - if(!$district) { - continue; - } - - $street_one = str_replace($district->name, '',str_replace($district->state->name, '', $address->street_one)); - $street_two = str_replace($district->name, '',str_replace($district->state->name, '', $address->street_two)); - - $object = new AddressObject($street_one, $street_two, $district->country_id, $district->state_id, $district->id, $address->post_code, 'Business Address'); - $this->createsAddress->execute($companyModule, $object); - - if($address->contact){ - $i++; - if($i === 1) { - $contactObject = new ContactObject('', $address->contact, $company->email, '',); - $this->createContactProcessor->execute($contactObject, $newCompany); - } - } - - - } - - - - } - dd('done'); - -return ''; - Cache::forget('VT_COOKIE_CACHE'); - $loginRequest = $this->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC"}}'), ''); - $response = $this->getResponseBody($loginRequest); - $orders = []; - $unknown = 0; + $warehouseListRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + $response = $this->fetchesDataFRomVTPortal->getResponseBody($warehouseListRequest); foreach ($response->Rows as $parcel){ $marking = explode('/', explode('CIEF/', $parcel[5])[1]); - $customerMarking = $marking[0]; - if($customerMarking === '2752CHG'){ - 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]; + if(!array_key_exists(1, $marking)){ + continue; } -// $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); + $orderNumber = $marking[1]; - } - - /** - * @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(); + if(!$parcel[9]){ + continue; } + + try { + $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); + } catch (ResourceNotFoundException $exception) { + + $oldOrder = OldOrders::where('marking', '=', $orderNumber)->first(); + + if(!$oldOrder){ + continue; + } + + $customerMarking = str_replace(' ', '', str_replace('/', '', str_replace('CIEF/', '', $oldOrder->company->marking))); + + $companyModule = CompanyModule::whereHas('inviters', function($query) use ($customerMarking) { + return $query->where('invitee_reference', '=', $customerMarking); + })->first(); + + if(!$companyModule) { + continue; + } + + if(!$oldOrder->address) { + continue; + } + + /** @var Address $address */ + $address = $this->createAddressFromOldAddressProcessor->execute($oldOrder->address, $companyModule); + + if(!$address){ + continue; + } + + + $warehouseId = $parcel[0]; + $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $warehouseId === 11 ? 3 : 4]); + + $order = $this->createOrderProcessor->execute($companyModule->company, $originWarehouse, $address, $orderNumber); + } + + + $packingListReference = $parcel[17]; + $quantity = $parcel[9]; + $measurement = round(($parcel[10]/$quantity) ** (1/3) * 100, 2); + $description = $parcel[7]; + $tracking = $parcel[6]; + $receiveDate = $parcel[1]; + + $packingListObject = new PackingListObject($packingListReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee->id, PackingListType::WAREHOUSE_RECEIVE_LIST, ApprovalStatus::APPROVED); + + /** @var PackingList $packingList */ + $packingList = $order->packingLists()->where('reference', '=', $packingListReference)->first(); + + if(!$packingList) { + $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + + $transportObject = new TransportObject(TransportType::LAND, null, $tracking, Carbon::parse($receiveDate), Carbon::parse($receiveDate), ApprovalStatus::APPROVED); + + + $this->createsTransport->execute($transportObject, $packingList); + } + + /** @var Transport $transport */ + $transport = $packingList->transports()->first(); + + $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); + + $this->createsSchedule->execute($transport, new ScheduleObject(Carbon::parse($receiveDate), Carbon::parse($receiveDate), ApprovalStatus::APPROVED)); + + $packingList->packages()->delete(); + + $packageObject = new PackageObject(PackageType::CARTON, $description, $measurement, $measurement, $measurement, 0, $quantity, ApprovalStatus::APPROVED); + $this->createPackageProcessor->execute($packageObject, $packingList); + } - $client = new \GuzzleHttp\Client( - [ - 'cookies' => true, - 'headers' => [ - 'Content-Type' => 'application/json', - 'Cookie' => Cache::has('VT_COOKIE_CACHE') ? Cache::get('VT_COOKIE_CACHE'):$cookie - ] - ] - ); + DB::commit(); + return []; - $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/PackingLists/Processors/GenerateShippingOrderStepsProcessor.php b/app/Classes/Modules/PackingLists/Processors/GenerateShippingOrderStepsProcessor.php new file mode 100644 index 00000000..50ad28b5 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Processors/GenerateShippingOrderStepsProcessor.php @@ -0,0 +1,58 @@ +createsManyStep = $createsManyStep; + $this->updateStepProcessors = $updateStepProcessors; + } + + + public function execute(Steppable $owner, CompanyModule $appointee, array $contract_obligation_list = []){ + + $obligations = $contract_obligation_list; + + $this->createsManyStep->execute($owner, array_map(function($obligation) use ($appointee) { + return new StepsObject($appointee->id, $obligation->name,true, $step->sequence??0, 0,0, null,0, $step->hash_id); + }, $obligations)); + + $this->updateStepProcessors->execute(OrderSteps::PROCESSING); + + } +} diff --git a/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php b/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php index f4172753..d8d733b2 100644 --- a/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php +++ b/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainer.php @@ -2,26 +2,29 @@ namespace App\Classes\Modules\PackingLists\Services\Containers; -use App\Classes\General\Eloquent\AbstractUpdateRecord; +use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; +use App\Classes\General\Interfaces\ContainerOwner; use App\Classes\Modules\PackingLists\DataTransferObjects\ContainerObject; use App\Models\Container; -class CreatesContainer extends AbstractUpdateRecord +class CreatesContainer extends AbstractUpdateRelationshipRecord { /** * @param ContainerObject $object + * @param ContainerOwner $owner * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(ContainerObject $object) { + public function execute(ContainerObject $object, ContainerOwner $owner) { $model = new Container(); - $model->packing_list_id = $object->getPackingListId(); - $model->container_reference = $object->getContainerReference(); + $model->reference = $object->getReference(); + $model->container_number = $object->getContainerNumber(); $model->container_type = $object->getContainerType(); - $model->seal_reference = $object->getSealReference(); + $model->seal_reference = $object->getSealNumber(); + $model->status = $object->getStatus(); - return $this->handler($model); + return $this->handler($owner->containers(), $model); } } diff --git a/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php b/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php index 2cb151c5..0654557f 100644 --- a/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php +++ b/app/Classes/Modules/PackingLists/Services/CreatesPackingList.php @@ -3,17 +3,27 @@ namespace App\Classes\Modules\PackingLists\Services; use App\Classes\General\Eloquent\AbstractUpdateRecord; +use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; +use App\Classes\General\Interfaces\Packable; use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject; use App\Models\PackingList; -class CreatesPackingList extends AbstractUpdateRecord +class CreatesPackingList extends AbstractUpdateRelationshipRecord { - public function execute(PackingListObject $object) { + /** + * @param PackingListObject $object + * @param Packable $packable + * @return \Illuminate\Database\Eloquent\Model + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function execute(PackingListObject $object, Packable $packable) { $model = new PackingList(); $model->reference = $object->getReference(); + $model->claimant_id = $object->getClaimantId(); + $model->type = $object->getType(); $model->status = $object->getStatus(); - return $this->handler($model); + return $this->handler($packable->packingLists(), $model); } } diff --git a/app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php b/app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php index ef9f7623..e6fea2be 100644 --- a/app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php +++ b/app/Classes/Modules/PackingLists/Services/Packages/CreatesPackage.php @@ -3,15 +3,15 @@ namespace App\Classes\Modules\PackingLists\Services\Packages; use App\Classes\General\Eloquent\AbstractUpdateRecord; +use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; use App\Classes\Modules\PackingLists\DataTransferObjects\PackageObject; use App\Models\Package; +use App\Models\PackingList; -class CreatesPackage extends AbstractUpdateRecord +class CreatesPackage extends AbstractUpdateRelationshipRecord { - public function execute(PackageObject $object) { + public function execute(PackageObject $object, PackingList $packingList) { $model = new Package(); - $model->order_id = $object->getOrderId(); - $model->claimant_id = $object->getClaimantId(); $model->type = $object->getType(); $model->description = $object->getDescription(); $model->width = $object->getWidth(); @@ -21,7 +21,7 @@ class CreatesPackage extends AbstractUpdateRecord $model->quantity = $object->getQuantity(); $model->status = $object->getStatus(); - return $this->handler($model); + return $this->handler($packingList->packages(), $model); } } diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php index 7163461d..f899e7a7 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanCreateContainer.php @@ -1,6 +1,6 @@ containerPackingListValidation = $containerPackingListValidation; + $this->containerValidation = $containerValidation; } @@ -34,19 +34,19 @@ class CanCreateContainer extends AbstractRule } /** - * @param PackingListObject $object + * @param ContainerObject $object * @return bool * @throws \App\Classes\Exceptions\RequestValidationException */ protected function validators($object): bool { - return $this->containerPackingListValidation->validate($object); + return $this->containerValidation->validate($object); } /** - * @param PackingListObject $object + * @param ContainerObject $object * @return bool */ protected function criteria($object): bool diff --git a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php index 3c4df10e..d585ecaf 100644 --- a/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php +++ b/app/Classes/Modules/PackingLists/Standards/Rules/Containers/CanDeleteContainer.php @@ -1,6 +1,6 @@ $object->getPackingListId(), - 'container_reference' => $object->getContainerReference(), - 'container_type' => $object->getContainerType(), - 'seal_reference' => $object->getSealReference(), + 'reference' => $object->getReference() ]; } @@ -27,8 +24,7 @@ class ContainerValidation extends AbstractValidation */ protected function rules(): array { return [ - 'packing_list_id' => 'required', - 'container_reference' => 'required', + 'reference' => 'required' ]; } diff --git a/app/Classes/Modules/PackingLists/Standards/Validators/PackageValidation.php b/app/Classes/Modules/PackingLists/Standards/Validators/PackageValidation.php index 6730c8ba..17d35e72 100644 --- a/app/Classes/Modules/PackingLists/Standards/Validators/PackageValidation.php +++ b/app/Classes/Modules/PackingLists/Standards/Validators/PackageValidation.php @@ -16,7 +16,6 @@ class PackageValidation extends AbstractValidation */ protected function data($object): array { return [ - 'order_id' => $object->getOrderId(), 'type' => $object->getType(), 'width' => $object->getWidth(), 'height' => $object->getHeight(), @@ -31,7 +30,6 @@ class PackageValidation extends AbstractValidation */ protected function rules(): array { return [ - 'order_id' => 'required', 'type' => 'required', 'width' => 'required', 'height' => 'required', diff --git a/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php b/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php index 026e10d2..efca110a 100644 --- a/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php +++ b/app/Classes/Modules/Schedules/DataTransferObjects/ScheduleObject.php @@ -8,54 +8,42 @@ use Carbon\Carbon; class ScheduleObject implements DataTransferObject { - /** @var Carbonn date */ + /** @var Carbon */ private $etd; - /** @var Carbon date */ + /** @var Carbon */ private $eta; - /** @var int */ - private $transport_id; - /** @var int */ private $status; /** - * ScheduleObject constructor - * @param int $etd - * @param int $eta - * @param int $transport_id + * ScheduleObject constructor. + * @param Carbon $etd + * @param Carbon $eta + * @param int $status */ - public function __construct(string $etd, string $eta, int $transport_id, int $status) + public function __construct(Carbon $etd, Carbon $eta, int $status) { $this->etd = $etd; $this->eta = $eta; - $this->transport_id = $transport_id; $this->status = $status; } /** - * @return string + * @return Carbon */ - public function getETD(): Carbon + public function getEtd(): Carbon { - return Carbon::parse($this->etd); + return $this->etd; } /** - * @return string + * @return Carbon */ - public function getETA(): Carbon + public function getEta(): Carbon { - return Carbon::parse($this->eta); - } - - /** - * @return int - */ - public function getTransportId(): int - { - return $this->transport_id; + return $this->eta; } /** @@ -65,4 +53,6 @@ class ScheduleObject implements DataTransferObject { return $this->status; } + + } diff --git a/app/Classes/Modules/Schedules/Services/CreatesSchedule.php b/app/Classes/Modules/Schedules/Services/CreatesSchedule.php index 7dad5210..71336853 100644 --- a/app/Classes/Modules/Schedules/Services/CreatesSchedule.php +++ b/app/Classes/Modules/Schedules/Services/CreatesSchedule.php @@ -22,6 +22,7 @@ class CreatesSchedule extends AbstractUpdateRelationshipRecord $model->etd = $object->getETD(); $model->eta = $object->getETA(); + $model->status = $object->getStatus(); return $this->handler($transport->schedules(), $model); diff --git a/app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php b/app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php index 1c75079a..d9a58071 100644 --- a/app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php +++ b/app/Classes/Modules/Steps/DataTransferObjects/StepsObject.php @@ -7,81 +7,64 @@ use Carbon\Carbon; class StepsObject implements DataTransferObject { - private $id; - - private $appointee_id; + /** @var int */ + private $appointeeId; + /** @var string */ private $reference; - private $primary; - + /** @var float */ private $sequence; - private $status; + /** @var string */ + private $obligationId; - private $contract_status; - - private $completed_date; - - private $hash_id; - - public function __construct(int $appointee_id, string $reference, bool $primary, float $sequence, int $status, int $contract_status, ?string $completed_date, int $id=0, ?string $hash_id) + /** + * StepsObject constructor. + * @param int $appointeeId + * @param string $reference + * @param float $sequence + * @param string $obligationId + */ + public function __construct(int $appointeeId, string $reference, float $sequence, string $obligationId) { - $this->appointee_id = $appointee_id; + $this->appointeeId = $appointeeId; $this->reference = $reference; - $this->primary = $primary; - $this->sequence = $sequence; - $this->status = $status; - $this->contract_status = $contract_status; - $this->completed_date = $completed_date; - - $this->id = $id; - $this->hash_id = $hash_id; + $this->obligationId = $obligationId; } + /** + * @return int + */ public function getAppointeeId(): int { - return $this->appointee_id; + return $this->appointeeId; } + /** + * @return string + */ public function getReference(): string { return $this->reference; } - public function getPrimary(): bool - { - return $this->primary; - } - + /** + * @return float + */ public function getSequence(): float { return $this->sequence; } - public function getStatus(): int + /** + * @return string + */ + public function getObligationId(): string { - return $this->status; + return $this->obligationId; } - public function getContractStatus(): int - { - return $this->contract_status; - } - public function getCompletedDate(): Carbon - { - return $this->completed_date ? Carbon::parse($this->completed_date) : Carbon::now(); - } - - public function getId(): int - { - return $this->id; - } - - public function getHashId(): ?string - { - return $this->hash_id; - } } diff --git a/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php b/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php index d7b4e95e..81067f03 100644 --- a/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php +++ b/app/Classes/Modules/Steps/Processors/CreateStepsProcessor.php @@ -35,11 +35,20 @@ class CreateStepsProcessor $this->fetchesSteps = $fetchesSteps; } - public function execute(Model $order, string $currentStep, $appointee_id){ + /** + * @param Order $order + * @param string $currentStep + * @param $appointee_id + * @return Model + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function execute(Order $order, string $currentStep, $appointee_id){ - $order_steps_object = new StepsObject( $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); + $stepObject = new StepsObject( $appointee_id, $currentStep, true, 0, OrderStatus::PROCESSING, 0, null, 0, null); - $this->canCreateStep->passes($order_steps_object); + $this->canCreateStep->passes($stepObject); return $this->createsSteps->execute($order, $order_steps_object); diff --git a/app/Classes/Modules/Steps/Services/CreatesManySteps.php b/app/Classes/Modules/Steps/Services/CreatesManySteps.php index a2f4099f..9c87c0dd 100644 --- a/app/Classes/Modules/Steps/Services/CreatesManySteps.php +++ b/app/Classes/Modules/Steps/Services/CreatesManySteps.php @@ -8,10 +8,10 @@ use App\Classes\Modules\Steps\DataTransferObjects\StepsObject; use App\Models\Step; use App\Models\Order; -class CreatesManySteps extends AbstractUpdateRecord +class CreatesManySteps extends AbstractUpdateRelationshipRecord { - public function execute(Order $order, array $orderSteps) { + public function execute(Steppable $owner, array $orderSteps) { $orderStepsModel=[]; foreach($orderSteps as $step){ diff --git a/app/Classes/Modules/Steps/Services/CreatesStep.php b/app/Classes/Modules/Steps/Services/CreatesStep.php new file mode 100644 index 00000000..8c6ea6c5 --- /dev/null +++ b/app/Classes/Modules/Steps/Services/CreatesStep.php @@ -0,0 +1,33 @@ +appointee_id = $orderSteps->getAppointeeId(); + $model->reference = $orderSteps->getReference(); + $model->sequence = $orderSteps->getSequence(); + $model->obligation_hash_id = $orderSteps->getObligationId(); + + return $this->handler($owner->steps(), $model); + + } +} diff --git a/app/Classes/Modules/Steps/Services/CreatesSteps.php b/app/Classes/Modules/Steps/Services/CreatesSteps.php deleted file mode 100644 index 0cadbe55..00000000 --- a/app/Classes/Modules/Steps/Services/CreatesSteps.php +++ /dev/null @@ -1,35 +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($order->orderSteps(), $orderStepsModel); - - } -} diff --git a/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php b/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php index c391ac72..9bde2ec5 100644 --- a/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php +++ b/app/Classes/Modules/Transports/DataTransferObjects/TransportObject.php @@ -11,44 +11,44 @@ class TransportObject implements DataTransferObject /** @var string */ private $type; - /** @var string|null */ + /** @var null|string */ private $courier; - /** @var int */ - private $tracking_number; + /** @var null|string */ + private $trackingNumber; - /** @var int */ - private $dispacth_date; + /** @var Carbon|null */ + private $dispatchDate; - /** @var int */ - private $drop_date; + /** @var Carbon|null */ + private $dropDate; /** @var int */ private $status; /** * TransportObject constructor. - * @param int $type + * @param string $type * @param null|string $courier - * @param string $tracking_number - * @param int $dispatch_date - * @param int $drop_date + * @param null|string $trackingNumber + * @param Carbon|null $dispatchDate + * @param Carbon|null $dropDate * @param int $status */ - public function __construct(int $type, string $courier, string $tracking_number, ?string $dispatch_date, ?string $drop_date, int $status) + public function __construct(string $type, ?string $courier, ?string $trackingNumber, ?Carbon $dispatchDate, ?Carbon $dropDate, int $status) { $this->type = $type; $this->courier = $courier; - $this->tracking_number = $tracking_number; - $this->dispatch_date = $dispatch_date; - $this->drop_date = $drop_date; + $this->trackingNumber = $trackingNumber; + $this->dispatchDate = $dispatchDate; + $this->dropDate = $dropDate; $this->status = $status; } /** - * @return int + * @return string */ - public function getType(): int + public function getType(): string { return $this->type; } @@ -62,27 +62,27 @@ class TransportObject implements DataTransferObject } /** - * @return int + * @return null|string */ - public function getTrackingNumber(): string + public function getTrackingNumber(): ?string { - return $this->tracking_number; + return $this->trackingNumber; } /** - * @return int + * @return Carbon|null */ public function getDispatchDate(): ?Carbon { - return $this->dispatch_date ? Carbon::parse($this->dispatch_date) : null; + return $this->dispatchDate; } /** - * @return int + * @return Carbon|null */ public function getDropDate(): ?Carbon { - return $this->drop_date ? Carbon::parse($this->drop_date) : null; + return $this->dropDate; } /** diff --git a/app/Classes/Modules/Transports/Services/CreatesTransport.php b/app/Classes/Modules/Transports/Services/CreatesTransport.php index 1011e139..fa071c37 100644 --- a/app/Classes/Modules/Transports/Services/CreatesTransport.php +++ b/app/Classes/Modules/Transports/Services/CreatesTransport.php @@ -4,6 +4,7 @@ namespace App\Classes\Modules\Transports\Services; use App\Classes\General\Eloquent\AbstractUpdateRecord; use App\Classes\General\Eloquent\AbstractUpdateRelationshipRecord; +use App\Classes\General\Interfaces\Transportable; use App\Classes\Modules\Transports\DataTransferObjects\TransportObject; use App\Models\Transport; use App\Models\Container; @@ -12,12 +13,12 @@ class CreatesTransport extends AbstractUpdateRelationshipRecord { /** - * @param Container $containerPackingList * @param TransportObject $object + * @param Transportable $transportable * @return \Illuminate\Database\Eloquent\Model * @throws \App\Classes\Exceptions\MalformedRequestException */ - public function execute(Container $containerPackingList, TransportObject $object) { + public function execute(TransportObject $object, Transportable $transportable) { $model = new Transport(); $model->type = $object->getType(); @@ -27,7 +28,7 @@ class CreatesTransport extends AbstractUpdateRelationshipRecord $model->drop_date = $object->getDropDate(); $model->status = $object->getStatus(); - return $this->handler($containerPackingList->transports(), $model); + return $this->handler($transportable->transports(), $model); } } diff --git a/app/Classes/Modules/Unity/Processors/AssignContractEntityProcessor.php b/app/Classes/Modules/Unity/Processors/AssignContractEntityProcessor.php index c5308ab1..bf4936d6 100644 --- a/app/Classes/Modules/Unity/Processors/AssignContractEntityProcessor.php +++ b/app/Classes/Modules/Unity/Processors/AssignContractEntityProcessor.php @@ -20,15 +20,12 @@ class AssignContractEntityProcessor $this->fetchesCompany = $fetchesCompany; } - public function execute(Request $request, array $contractEntities, array $obligations){ + public function execute(string $contractEntities, array $obligations){ $responses = []; - //CIEF Contract Entity Hash ID - $contract_entity_hash_id = $contractEntities[0]->hash_id; - foreach($obligations as $obligation){ - $responses[] = $this->updatesContractEntity->execute($obligation->hash_id, [$contract_entity_hash_id]); + $responses[] = $this->updatesContractEntity->execute($obligation->hash_id, [$contractEntities]); } return $responses; diff --git a/app/Classes/Modules/Unity/Processors/CreateContractEntityProcessor.php b/app/Classes/Modules/Unity/Processors/CreateContractEntityProcessor.php index 7cf14a08..33a4ce27 100644 --- a/app/Classes/Modules/Unity/Processors/CreateContractEntityProcessor.php +++ b/app/Classes/Modules/Unity/Processors/CreateContractEntityProcessor.php @@ -20,7 +20,7 @@ class CreateContractEntityProcessor $this->fetchesCompany = $fetchesCompany; } - public function execute(string $new_contract_id, array $entity_hash_ids){ + public function execute(string $new_contract_id, string $entity_hash_ids){ return $this->createsContractEntity->execute($new_contract_id, $entity_hash_ids); } } diff --git a/app/Classes/Modules/Unity/Services/CreatesContractEntity.php b/app/Classes/Modules/Unity/Services/CreatesContractEntity.php index f722ee5f..dd0bb135 100644 --- a/app/Classes/Modules/Unity/Services/CreatesContractEntity.php +++ b/app/Classes/Modules/Unity/Services/CreatesContractEntity.php @@ -21,12 +21,10 @@ class CreatesContractEntity $this->contract_hash_id = Config::get('unity.contract_template_hash_id'); } - public function execute(string $new_contract_id, array $entity_hash_ids){ + public function execute(string $new_contract_id, string $entity_hash_ids){ $accesToken=$this->getAccessToken->execute(); - $response = Http::withToken($accesToken)->post($this->createContractEntityEndpoint,['contract_id'=>[$new_contract_id],'entity_id'=>$entity_hash_ids])->object(); - return (isset($response->data)) ? $response->data : null; } diff --git a/app/Classes/ValueObjects/Constants/PackageType.php b/app/Classes/ValueObjects/Constants/PackageType.php new file mode 100644 index 00000000..797c178e --- /dev/null +++ b/app/Classes/ValueObjects/Constants/PackageType.php @@ -0,0 +1,11 @@ + self::KLANG, + 2 => self::KLANG, + 3 => self::KLANG, + 4 => self::KLANG, + 5 => self::SABAH, + 6 => self::KLANG, + 7 => self::KLANG, + 8 => self::KLANG, + 9 => self::KLANG, + 10 => self::KLANG, + 11 => self::KLANG, + 12 => self::KLANG, + 13 => self::SABAH, + 14 => self::KLANG, + 15 => self::KLANG, + 16 => self::KLANG, + ]; + } diff --git a/app/Http/Resources/ContainerResource.php b/app/Http/Resources/ContainerResource.php index e47e44db..59c60916 100644 --- a/app/Http/Resources/ContainerResource.php +++ b/app/Http/Resources/ContainerResource.php @@ -16,10 +16,10 @@ class ContainerResource extends JsonResource { return [ 'id' => $this->id, - 'container_reference' => $this->container_reference, + 'container_reference' => $this->reference, 'container_type' => $this->container_type, + 'container_number' => $this->container_number, 'seal_reference' => $this->seal_reference, - 'packing_list' => PackingListResource::collection($this->packingLists), 'transport' => TransportResource::collection($this->transports), ]; } diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 1a31578f..183536e3 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -2,7 +2,11 @@ namespace App\Http\Resources; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderRoleTypes; +use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\TransportType; +use Carbon\Carbon; use Illuminate\Http\Resources\Json\JsonResource; class OrderResource extends JsonResource @@ -24,6 +28,55 @@ class OrderResource extends JsonResource '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()), + $this->mergeWhen($this->relationLoaded('parcels'), [ + 'origin_warehouse_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereDoesntHave('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + }); + })->get()), + 'in_transit_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::SHIPPING_PACKING_LIST)->whereHas('containers', function($query) { + return $query->whereHas('transports', function($query){ + return $query->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + }); + })->get()), + 'destination_warehouse_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->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()), + 'delivered_packages' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->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()); + }); + }); + })->whereHas('transports', function($query){ + return $query->where('type', '=', TransportType::LAND)->where('status', '=', ApprovalStatus::APPROVED)->whereHas('schedules', function($query){ + return $query->where('etd', '<', Carbon::now()); + }); + }); + })->get()), + 'parcels' => PackageResource::collection($this->parcels()->whereHas('packingList', function($query){ + return $query->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST); + })->get()), + ]), 'created_at' => $this->created_at->format('d-m-Y') ]; } diff --git a/app/Http/Resources/PackageResource.php b/app/Http/Resources/PackageResource.php index fb011ad3..7a3209d1 100644 --- a/app/Http/Resources/PackageResource.php +++ b/app/Http/Resources/PackageResource.php @@ -16,15 +16,18 @@ class PackageResource extends JsonResource { return [ 'id' => $this->id, - 'packing_list_id' => $this->packing_list_id, 'type' => $this->type, 'description' => $this->description, - 'width' => $this->width, - 'height' => $this->height, - 'length' => $this->length, + 'width' => floatval($this->width), + 'height' => floatval($this->height), + 'length' => floatval($this->length), 'weight' => $this->weight, 'quantity' => $this->quantity, + 'cbm' => (($this->width / 100) * ($this->width / 100) * ($this->width / 100)) * $this->quantity, 'status' => $this->status, + 'order' => new OrderResource($this->packingList->owner), + 'container' => new ContainerResource($this->packingList->containers()->first()), + 'transport' => new TransportResource($this->packingList->transports()->first()) ]; } } diff --git a/app/Http/Resources/PackingListResource.php b/app/Http/Resources/PackingListResource.php index 43730ea5..e75ce164 100644 --- a/app/Http/Resources/PackingListResource.php +++ b/app/Http/Resources/PackingListResource.php @@ -19,6 +19,8 @@ class PackingListResource extends JsonResource 'claimant_id' => $this->claimant_id, 'reference' => $this->reference, 'status' => $this->status, + 'transport' => new TransportResource($this->transports()->first()), + 'packages' => PackageResource::collection($this->packages), ]; } } diff --git a/app/Http/Resources/ScheduleResource.php b/app/Http/Resources/ScheduleResource.php index 702fb642..6f7209d6 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, - 'eta' => $this->eta, + 'etd' => $this->etd->format('d-m-Y'), + 'eta' => $this->eta->format('d-m-Y'), 'status' => $this->status, ]; } diff --git a/app/Http/Resources/TransportResource.php b/app/Http/Resources/TransportResource.php index 86e894cf..6656721a 100644 --- a/app/Http/Resources/TransportResource.php +++ b/app/Http/Resources/TransportResource.php @@ -2,6 +2,7 @@ namespace App\Http\Resources; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use Illuminate\Http\Resources\Json\JsonResource; class TransportResource extends JsonResource @@ -19,9 +20,11 @@ class TransportResource extends JsonResource 'type' => $this->type, 'courier' => $this->courier, 'tracking_number' => $this->tracking_number, - 'dispatch_date' => $this->dispatch_date, - 'drop_date' => $this->drop_date, + 'dispatch_date' => $this->dispatch_date ? $this->dispatch_date->format('d-m-Y') : $this->dispatch_date, + 'drop_date' => $this->drop_date ? $this->drop_date->format('d-m-Y') : $this->drop_date, 'status' => $this->status, + 'current_schedule' => new ScheduleResource($this->schedules()->where('status', '=', ApprovalStatus::APPROVED)->first()), + 'schedule_history' => ScheduleResource::collection($this->schedules()->where('status', '!=', ApprovalStatus::APPROVED)->get()) ]; } } diff --git a/app/Models/Address.php b/app/Models/Address.php index 43784f8d..bbd60d70 100644 --- a/app/Models/Address.php +++ b/app/Models/Address.php @@ -11,10 +11,10 @@ use Illuminate\Database\Eloquent\Relations\MorphTo; * Class Address * @package App\Models * - * @property \App\Models\Country country_id - * @property \App\Models\Company company_id - * @property \App\Models\State state_id - * @property \App\Models\District district_id + * @property int country_id + * @property int company_id + * @property int state_id + * @property int district_id * @property string postcode * @property string street_one * @property string street_two diff --git a/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index 9b21263f..eecc0118 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Classes\General\Interfaces\Addressable; use App\Classes\General\Interfaces\Contactable; +use App\Classes\General\Interfaces\ContainerOwner; use App\Classes\General\Interfaces\Documentable; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\BusinessType; @@ -27,7 +28,7 @@ use PhpParser\Node\Expr\AssignOp\Mod; * @property integer type * @property integer status */ -class CompanyModule extends AbstractModel implements Addressable, Documentable, Contactable +class CompanyModule extends AbstractModel implements Addressable, Documentable, Contactable, ContainerOwner { use SoftDeletes; @@ -120,6 +121,14 @@ class CompanyModule extends AbstractModel implements Addressable, Documentable, return $this->HasMany(Bank::class, 'company_id'); } + /** + * @return MorphMany + */ + public function containers(): morphMany + { + return $this->morphMany(Container::class, 'owner'); + } + /** * @param Builder $query * @return Builder @@ -147,4 +156,6 @@ class CompanyModule extends AbstractModel implements Addressable, Documentable, return $query->where('type', '=', BusinessType::WAREHOUSE); } + + } diff --git a/app/Models/Container.php b/app/Models/Container.php index 043806ac..9ff4fde8 100644 --- a/app/Models/Container.php +++ b/app/Models/Container.php @@ -2,19 +2,22 @@ namespace App\Models; +use App\Classes\General\Interfaces\Transportable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\MorphMany; -class Container extends AbstractModel +class Container extends AbstractModel implements Transportable { use SoftDeletes; protected $table = 'containers'; + protected $fillable = ['status']; + public function packingLists(): belongsToMany { - return $this->belongsToMany(PackingList::class, Container::class, 'container_id', 'packing_list_id'); + return $this->belongsToMany(PackingList::class, ContainerPackingList::class, 'container_id', 'packing_list_id'); } /** diff --git a/app/Models/ContainerPackingList.php b/app/Models/ContainerPackingList.php index 0aecbbee..54622536 100644 --- a/app/Models/ContainerPackingList.php +++ b/app/Models/ContainerPackingList.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; -class Container extends AbstractModel +class ContainerPackingList extends AbstractModel { use SoftDeletes; diff --git a/app/Models/OldOrders.php b/app/Models/OldOrders.php index 48b39b83..d0c06c58 100644 --- a/app/Models/OldOrders.php +++ b/app/Models/OldOrders.php @@ -15,4 +15,20 @@ class OldOrders extends Model protected $table = 'orders'; + /** + * @return hasOne + */ + public function address(): hasOne + { + return $this->hasOne(OldAddress::class, 'reference_id', 'address_id')->where('type', '=', 1); + } + + /** + * @return belongsTo + */ + public function company(): belongsTo + { + return $this->belongsTo(oldCompany::class, 'company_id'); + } + } diff --git a/app/Models/Order.php b/app/Models/Order.php index 58f64dc8..4d537646 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -3,14 +3,17 @@ namespace App\Models; use App\Classes\General\Interfaces\Addressable; +use App\Classes\General\Interfaces\Contactable; +use App\Classes\General\Interfaces\Packable; use App\Classes\ValueObjects\Constants\RoleTypes; use App\Scopes\CustomerOrdersScope; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; -class Order extends AbstractModel implements Addressable +class Order extends AbstractModel implements Addressable, Packable { use SoftDeletes; @@ -43,6 +46,22 @@ class Order extends AbstractModel implements Addressable return $this->morphMany(Address::class, 'owner'); } + /** + * @return MorphMany + */ + public function packingLists(): morphMany + { + return $this->morphMany(PackingList::class, 'owner'); + } + + /** + * @return HasManyThrough + */ + public function parcels(): HasManyThrough + { + return $this->HasManyThrough(Package::class, PackingList::class, 'owner_id', 'packing_list_id')->where('owner_type', Order::class); + } + /** * @return HasMany */ @@ -51,6 +70,7 @@ class Order extends AbstractModel implements Addressable return $this->HasMany(OrderRole::class, 'order_id'); } + protected static function booted() { // if (auth()->user()->type === RoleTypes::USER) { diff --git a/app/Models/OrderRole.php b/app/Models/OrderRole.php index 1d80603c..b1682daa 100644 --- a/app/Models/OrderRole.php +++ b/app/Models/OrderRole.php @@ -10,6 +10,8 @@ class OrderRole extends Model { use HasFactory; + protected $fillable = ['entity_hash_id', 'entity_signature']; + /** * @return BelongsTo */ diff --git a/app/Models/Package.php b/app/Models/Package.php index 39c39488..2c987764 100644 --- a/app/Models/Package.php +++ b/app/Models/Package.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasOneThrough; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; @@ -12,14 +13,12 @@ class Package extends AbstractModel protected $table = 'packages'; - public function order(): BelongsTo + /** + * @return BelongsTo + */ + public function packingList(): BelongsTo { - return $this->BelongsTo(Order::class, 'order_id', 'id'); - } - - public function owner(): morphTo - { - return $this->morphTo(); + return $this->belongsTo(PackingList::class, 'packing_list_id'); } } diff --git a/app/Models/PackingList.php b/app/Models/PackingList.php index d67e3931..1bbfa6ac 100644 --- a/app/Models/PackingList.php +++ b/app/Models/PackingList.php @@ -2,17 +2,58 @@ namespace App\Models; +use App\Classes\General\Interfaces\Steppable; +use App\Classes\General\Interfaces\Transportable; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; +use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; -class PackingList extends AbstractModel +class PackingList extends AbstractModel implements Transportable, Steppable { use SoftDeletes; protected $table = 'packing_lists'; - public function orderSteps(): morphMany + protected $fillable = ['status']; + + /** + * @return \Illuminate\Database\Eloquent\Relations\MorphTo + */ + public function owner(): morphTo + { + return $this->morphTo(); + } + + public function containers(): BelongsToMany + { + return $this->BelongsToMany(Container::class, ContainerPackingList::class); + } + + /** + * @return MorphMany + */ + public function steps(): morphMany { return $this->morphMany(Step::class, 'owner'); } + + /** + * @return HasMany + */ + public function packages(): hasMany + { + return $this->hasMany(Package::class, 'packing_list_id'); + } + + /** + * @return morphMany + */ + public function transports(): morphMany + { + return $this->morphMany(Transport::class, 'owner'); + } + } diff --git a/app/Models/Schedule.php b/app/Models/Schedule.php index 8d8f1f95..bc7022a9 100644 --- a/app/Models/Schedule.php +++ b/app/Models/Schedule.php @@ -12,6 +12,8 @@ class Schedule extends AbstractModel protected $table = 'schedules'; + protected $dates = ['etd', 'eta']; + public function owner(): morphTo { return $this->morphTo(); diff --git a/app/Models/Step.php b/app/Models/Step.php index 0f924e1d..55603045 100644 --- a/app/Models/Step.php +++ b/app/Models/Step.php @@ -10,22 +10,12 @@ class Step extends AbstractModel { use SoftDeletes; - protected $table = 'order_steps'; + protected $table = 'steps'; + + protected $fillable = ['status']; protected $dates = ['deleted_at']; - protected $fillable = ['order_id','appointee_id','reference','primary','sequence','status','contract_status','complete_date','unity_hash_id']; - - public function companyModule(): belongsTo - { - return $this->belongsTo(CompanyModule::class, 'appointee_id', 'id'); - } - - public function orderRole(): belongsTo - { - return $this->belongsTo(OrderRole::class, 'appointee_id', 'company_module_id'); - } - public function owner(): morphTo { return $this->morphTo(); diff --git a/app/Models/Transport.php b/app/Models/Transport.php index ce83dc56..1d817097 100644 --- a/app/Models/Transport.php +++ b/app/Models/Transport.php @@ -13,6 +13,10 @@ class Transport extends AbstractModel protected $table = 'transport_arrangements'; + protected $fillable = ['status', 'drop_date']; + + protected $dates = ['dispatch_date', 'drop_date']; + /** * @return \Illuminate\Database\Eloquent\Relations\MorphTo */ diff --git a/config/unity.php b/config/unity.php index aa66ce8c..49eceaf1 100644 --- a/config/unity.php +++ b/config/unity.php @@ -41,9 +41,7 @@ return [ 'on_error_email' => env('UNITY_ON_ERROR_EMAIL','dev@shipping.com,dev@unity.com'), - 'contract_template_id' => env('UNITY_CONTRACT_TEMPLATE_ID', 105), - - 'contract_template_hash_id' => env('UNITY_CONTRACT_TEMPLATE_HASH_ID', 'zDMkNBK3dpej1Zpg7yv9'), + 'contract_template_hash_id' => env('UNITY_CONTRACT_TEMPLATE_HASH_ID', 'Kp3qzMV82m5R2PZg6eX0'), 'contract_template_cache' => env('UNITY_CONTRACT_TEMPLATE_CACHE','60'), @@ -51,8 +49,4 @@ return [ 'PACKING' => Constant\OrderSteps::PACKING, ], - 'step_processors' => [ - Constant\OrderSteps::PACKING => Step\Packing::class, - ], - ]; diff --git a/database/migrations/2021_07_07_174624_create_steps_table.php b/database/migrations/2021_07_07_174624_create_steps_table.php index 90b97903..9a9a0b67 100644 --- a/database/migrations/2021_07_07_174624_create_steps_table.php +++ b/database/migrations/2021_07_07_174624_create_steps_table.php @@ -1,5 +1,6 @@ bigInteger('appointee_id')->unsigned()->index(); $table->string('obligation_hash_id',200)->nullable(); $table->string('reference'); - $table->integer('primary')->default(0); + $table->integer('primary')->default(false); $table->decimal('sequence', 4, 2); - $table->integer('status')->default(0); + $table->integer('status')->default(ApprovalStatus::PENDING_SUBMISSION); $table->date('complete_date')->nullable(); $table->softDeletes(); $table->timestamps(); diff --git a/database/migrations/2021_07_21_110049_create_packing_lists_table.php b/database/migrations/2021_07_21_110049_create_packing_lists_table.php index 0516b539..0e375d64 100644 --- a/database/migrations/2021_07_21_110049_create_packing_lists_table.php +++ b/database/migrations/2021_07_21_110049_create_packing_lists_table.php @@ -16,7 +16,8 @@ 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->bigInteger('claimant_id')->unsigned()->index()->nullable(); + $table->string('reference_contract')->nullable(); $table->string('reference',200); $table->integer('type')->default(0); $table->integer('status')->default(0); diff --git a/database/migrations/2021_07_21_110190_create_containers_table.php b/database/migrations/2021_07_21_110190_create_containers_table.php index 773bba5b..59ede968 100644 --- a/database/migrations/2021_07_21_110190_create_containers_table.php +++ b/database/migrations/2021_07_21_110190_create_containers_table.php @@ -17,10 +17,11 @@ class CreateContainersTable extends Migration { Schema::create('containers', function (Blueprint $table) { $table->id(); - $table->string('reference',45); - $table->string('container_number',45); + $table->morphs('owner'); + $table->string('reference'); + $table->string('container_number')->nullable(); $table->integer('container_type')->default(ContainerTypes::FORTY_FEET_DRY_CONTAINER); - $table->string('seal_reference',45); + $table->string('seal_reference')->nullable(); $table->integer('status')->default(ApprovalStatus::PENDING_SUBMISSION); $table->softDeletes(); $table->timestamps(); diff --git a/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php b/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php index c01bbe62..4f3cf60a 100644 --- a/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php +++ b/database/migrations/2021_07_21_110434_create_transport_arrangements_table.php @@ -1,5 +1,7 @@ id(); $table->morphs('owner'); - $table->integer('type')->default(0); + $table->integer('type')->default(TransportType::SEA); - $table->string('courier',45); - $table->string('tracking_number',45); + $table->string('courier')->nullable(); + $table->string('tracking_number')->nullable(); $table->timestamp('dispatch_date')->nullable(); $table->timestamp('drop_date')->nullable(); - $table->integer('status')->default(0); + $table->integer('status')->default(ApprovalStatus::PENDING_VERIFICATION); $table->softDeletes(); $table->timestamps(); }); diff --git a/database/seeders/CompaniesTableSeeder.php b/database/seeders/CompaniesTableSeeder.php index 6e50c868..5df4ba5e 100644 --- a/database/seeders/CompaniesTableSeeder.php +++ b/database/seeders/CompaniesTableSeeder.php @@ -3,6 +3,8 @@ namespace Database\Seeders; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; +use App\Classes\Modules\Addresses\Processors\CreateAddressFromOldAddressProcessor; +use App\Classes\Modules\Addresses\Services\CleansOldAddress; use App\Classes\Modules\Addresses\Services\CreatesAddress; use App\Classes\Modules\Companies\DataTransferObjects\CompanyConnectionObject; use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject; @@ -48,6 +50,9 @@ class CompaniesTableSeeder extends Seeder /** @var ApprovesCompanyConnection */ private $approvesCompanyConnection; + /** @var CreateAddressFromOldAddressProcessor */ + private $createAddressFromOldAddressProcessor; + /** @var CreatesAddress */ private $createsAddress; @@ -65,11 +70,12 @@ class CompaniesTableSeeder extends Seeder * @param CreateContactProcessor $createContactProcessor * @param CreatesCompanyConnection $createsCompanyConnection * @param ApprovesCompanyConnection $approvesCompanyConnection + * @param CreateAddressFromOldAddressProcessor $createAddressFromOldAddressProcessor * @param CreatesAddress $createsAddress * @param CreatesCompany $createsCompany * @param CreatesContact $createsContact */ - public function __construct(CreateCompanyProcessor $createCompanyProcessor, UpdatesCompanyStatus $updatesCompanyStatus, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, CreatesAddress $createsAddress, CreatesCompany $createsCompany, CreatesContact $createsContact) + public function __construct(CreateCompanyProcessor $createCompanyProcessor, UpdatesCompanyStatus $updatesCompanyStatus, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, CreateAddressFromOldAddressProcessor $createAddressFromOldAddressProcessor, CreatesAddress $createsAddress, CreatesCompany $createsCompany, CreatesContact $createsContact) { $this->createCompanyProcessor = $createCompanyProcessor; $this->updatesCompanyStatus = $updatesCompanyStatus; @@ -77,6 +83,7 @@ class CompaniesTableSeeder extends Seeder $this->createContactProcessor = $createContactProcessor; $this->createsCompanyConnection = $createsCompanyConnection; $this->approvesCompanyConnection = $approvesCompanyConnection; + $this->createAddressFromOldAddressProcessor = $createAddressFromOldAddressProcessor; $this->createsAddress = $createsAddress; $this->createsCompany = $createsCompany; $this->createsContact = $createsContact; @@ -168,16 +175,20 @@ class CompaniesTableSeeder extends Seeder } - if(App::environment(['production'])){ + if(true){ $companies = OldCompany::all(); foreach($companies as $company){ $marking = explode("CIEF/", $company->marking); + if(count($marking) < 2){ continue; } + $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); + + /** @var Company $newCompany */ $newCompany = $this->createCompanyProcessor->execute($company->name, CompanyType::COMPANY_BUSINESS, ApprovalStatus::PENDING_SUBMISSION); @@ -186,33 +197,14 @@ class CompaniesTableSeeder extends Seeder /** @var CompanyModule $companyModule */ $companyModule = $this->createCompanyModuleProcessor->execute($newCompany, BusinessType::IMPORTER); - $connectionObject = new CompanyConnectionObject($companyModule, 'CIEF', $marking[1]); + $connectionObject = new CompanyConnectionObject($companyModule, 'CIEF', $marking); $connection = $this->createsCompanyConnection->execute($connectionObject); $this->approvesCompanyConnection->execute($connection); $i = 0; foreach($company->addresses as $address){ - if($address->street_one === '' && $address->street_two === ''){ - continue; - } - - if(!$address->post_code){ - continue; - } - - $district = District::where('postcode', 'like', '%'. $address->post_code .'%')->first(); - - if(!$district) { - continue; - } - - $street_one = str_replace($district->state->name, '',str_replace($district->name, '', $address->street_one)); - $street_two = str_replace($district->state->name, '',str_replace($district->name, '', $address->street_two)); - - $object = new AddressObject(str_replace(', ,', ',', str_replace(', ,', ',', $street_one)), str_replace(', ,', ',', str_replace(', ,', ',', $street_two)), $district->country_id, $district->state_id, $district->id, $address->post_code, 'Business Address'); - $this->createsAddress->execute($companyModule, $object); - + $this->createAddressFromOldAddressProcessor->execute($address, $companyModule); $contact = preg_replace("/[^0-9.]/", "", $address->contact); if($contact){ $i++; @@ -224,20 +216,10 @@ class CompaniesTableSeeder extends Seeder } - - - } } } - private function cleanAddress($address){ - $address = str_replace('Malaysia', '', str_replace('malaysia', '', $address)); - $address = str_replace(', ,', ',', str_replace(', ,', ',', str_replace(', ,', ',', $address))); - $address = str_replace(' ', ' ', str_replace(' ', ' ', str_replace(' ', ' ', $address))); - return str_replace(', ,', ',', str_replace(', ,', ',', $address)); - - } } diff --git a/resources/assets/vue/components/general/elements/ValidationErrorComponent.vue b/resources/assets/vue/components/general/elements/ValidationErrorComponent.vue deleted file mode 100644 index 737e67c7..00000000 --- a/resources/assets/vue/components/general/elements/ValidationErrorComponent.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/resources/assets/vue/components/general/forms/FileUploadComponent.vue b/resources/assets/vue/components/general/forms/FileUploadComponent.vue index 033c7c5c..3eaf28b8 100644 --- a/resources/assets/vue/components/general/forms/FileUploadComponent.vue +++ b/resources/assets/vue/components/general/forms/FileUploadComponent.vue @@ -1,5 +1,5 @@ @@ -21,7 +22,9 @@ required: 'this field is required', email: 'enter a valid email address', minLength: 'this field must have at least', - sameAs: 'this field must match the' + minValue: 'this field must at least be', + sameAs: 'this field must match the', + numeric: 'this field can only contain numbers' }, } }, diff --git a/resources/assets/vue/components/orders/elements/PackageComponent.vue b/resources/assets/vue/components/orders/elements/PackageComponent.vue new file mode 100644 index 00000000..f9a1da89 --- /dev/null +++ b/resources/assets/vue/components/orders/elements/PackageComponent.vue @@ -0,0 +1,135 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/elements/ParcelComponent.vue b/resources/assets/vue/components/orders/elements/ParcelComponent.vue new file mode 100644 index 00000000..6c037efc --- /dev/null +++ b/resources/assets/vue/components/orders/elements/ParcelComponent.vue @@ -0,0 +1,72 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue index a90125ce..84525c41 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue @@ -95,7 +95,7 @@
-
+
-
+
-
+
+
+
+
+
+
+
Received Parcels
+

Parcels received at our warehouse

+
+
+ +
+
+
+
+ +
+
+
+
+
-
+
-
-
-
-
-
-
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
-
-
-

Nothing To Show Here Yet!

-
-
+

Nothing To Show Here Yet!

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

Nothing To Show Here Yet!

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

Nothing To Show Here Yet!

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

Nothing To Show Here Yet!

From a3cdae6815d214eb3ccb21d78256198289efa329 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 23 Aug 2021 09:35:37 +0800 Subject: [PATCH 02/61] update packinglists from vt portal jobs and schedule --- app/Classes/Jobs/CurlWarehouseListJob.php | 94 ------------------- ...hContainersStatusUpdateFromVTPortalJob.php | 40 ++++++++ .../Jobs/FetchDeliveryListFromVTPortalJob.php | 40 ++++++++ .../FetchLoadedContainersFromVTPortalJob.php | 46 +++++++++ .../Jobs/FetchPackingListFromVTPortalJob.php | 40 ++++++++ ...tchWarehouseReceiveListFromVTPortalJob.php | 45 +++++++++ app/Console/Kernel.php | 11 ++- database/seeders/OrdersTableSeeder.php | 34 +++++++ 8 files changed, 255 insertions(+), 95 deletions(-) delete mode 100644 app/Classes/Jobs/CurlWarehouseListJob.php create mode 100644 app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php create mode 100644 app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php create mode 100644 app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php create mode 100644 app/Classes/Jobs/FetchPackingListFromVTPortalJob.php create mode 100644 app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php create mode 100644 database/seeders/OrdersTableSeeder.php diff --git a/app/Classes/Jobs/CurlWarehouseListJob.php b/app/Classes/Jobs/CurlWarehouseListJob.php deleted file mode 100644 index 6d8703c5..00000000 --- a/app/Classes/Jobs/CurlWarehouseListJob.php +++ /dev/null @@ -1,94 +0,0 @@ -page = $page; - } - - /** - * Execute the job. - * - * @return void - * @throws \GuzzleHttp\Exception\GuzzleException - */ - public function handle() - { - $cookies = $this->getCookie(); - - $headers = [ - 'Content-Type' => 'application/json', - 'Cookie' => $cookies, - ]; - - $yesterday = Carbon::now()->subDays(1)->format('Y-m-d'); - - $client = new \GuzzleHttp\Client(['headers' => $headers]); - $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', [\GuzzleHttp\RequestOptions::JSON => json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":' . $this->page . ',"PageSize":100,"PageOffset":0,"SortExpression":"ParcelDate DESC,FullMarking DESC","GroupExpression":"","Filter":["ParcelDate:=%js%\"' . $yesterday . 'T00:00:00.000\"\u0000"],"ContextKey":"view1","FilterIsExternal":false,"LookupContextFieldName":null,"LookupContextController":null,"LookupContextView":null,"LookupContext":null,"Inserting":false,"LastCommandName":null,"ExternalFilter":[],"DoesNotRequireData":false,"LastView":"grid1","Tag":null,"RequiresFirstLetters":false,"ViewType":"Grid","SupportsCaching":true,"SystemFilter":null,"RequiresRowCount":true,"QuickFindHint":null,"RequiresPivot":false,"PivotDefinitions":null,"RequiresMetaData":true}}')]); - - $data = json_decode($res->getBody()->getContents()); - - if (!empty($data->d->Row)) { - // insert data here - - // next page - $this->page = $this->page > 0 ? $this->page + 1 : 1; - CurlWarehouseListJob::dispatch($this->page + 1) - ->delay(Carbon::now()->addSeconds(10)); - } - } - - public function getCookie() - { - // get latest cookies - $client = new \GuzzleHttp\Client(['cookies' => true]); - $r = $client->request('GET', 'https://portalvt.azurewebsites.net'); - $call_cookie = $client->getConfig('cookies'); - $call_cookie = $call_cookie->toArray(); - $latest_cookie = []; - - foreach ($call_cookie as $key => $row) { - $latest_cookie[] = $row['Name'] . '=' . $row['Value']; - } - $latest_cookie = implode(';', $latest_cookie); - - // get access token - $headers = [ - 'Content-Type' => 'application/json', - 'Cookie' => $latest_cookie, - ]; - $client = new \GuzzleHttp\Client(['headers' => $headers]); - $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', [\GuzzleHttp\RequestOptions::JSON => [ - "username" => "CIEF", - "password" => "0122120880", - "createPersistentCookie" => true, - ]]); - - $token = json_decode($res->getBody()->getContents()); - $token = $token->d->AccessToken; - - $latest_cookie = $latest_cookie . ';AppVTCC=' . $token; - return $latest_cookie; - } -} diff --git a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php new file mode 100644 index 00000000..66ed254d --- /dev/null +++ b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php @@ -0,0 +1,40 @@ +fetchContainersStatusUpdateFromVTPortalProcessor = $fetchContainersStatusUpdateFromVTPortalProcessor; + } + + + /** + * Execute the job. + * + * @return void + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function handle() + { + $this->fetchContainersStatusUpdateFromVTPortalProcessor->execute(); + } +} diff --git a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php new file mode 100644 index 00000000..2be16a09 --- /dev/null +++ b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php @@ -0,0 +1,40 @@ +fetchDeliveryListFromVTPortalProcessor = $fetchDeliveryListFromVTPortalProcessor; + } + + + /** + * Execute the job. + * + * @return void + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function handle() + { + $this->fetchDeliveryListFromVTPortalProcessor->execute(); + } +} diff --git a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php new file mode 100644 index 00000000..eb31b715 --- /dev/null +++ b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php @@ -0,0 +1,46 @@ +fetchLoadedContainersFromVTPortalProcessor = $fetchLoadedContainersFromVTPortalProcessor; + } + + + /** + * Execute the job. + * + * @param Carbon|null $start + * @param Carbon|null $end + * @return void + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + * @throws \GuzzleHttp\Exception\GuzzleException + */ + public function handle(?Carbon $start = null, ?Carbon $end = null) + { + $this->fetchLoadedContainersFromVTPortalProcessor->execute($start, $end); + } +} diff --git a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php new file mode 100644 index 00000000..917955d6 --- /dev/null +++ b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php @@ -0,0 +1,40 @@ +fetchPackingListFromVTPortalProcessor = $fetchPackingListFromVTPortalProcessor; + } + + /** + * Execute the job. + * + * @return void + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function handle() + { + $this->fetchPackingListFromVTPortalProcessor->execute(); + } +} diff --git a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php new file mode 100644 index 00000000..4e812a34 --- /dev/null +++ b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php @@ -0,0 +1,45 @@ +fetchWarehouseReceiveListFromVTPortalProcessor = $fetchWarehouseReceiveListFromVTPortalProcessor; + } + + /** + * Execute the job. + * + * @param Carbon|null $start + * @param Carbon|null $end + * @return void + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + * @throws \GuzzleHttp\Exception\GuzzleException + */ + public function handle(?Carbon $start = null, ?Carbon $end = null) + { + $this->fetchWarehouseReceiveListFromVTPortalProcessor->execute($start, $end); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 69914e99..bec96f83 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -2,6 +2,11 @@ namespace App\Console; +use App\Classes\Jobs\FetchContainersStatusUpdateFromVTPortalJob; +use App\Classes\Jobs\FetchDeliveryListFromVTPortalJob; +use App\Classes\Jobs\FetchLoadedContainersFromVTPortalJob; +use App\Classes\Jobs\FetchPackingListFromVTPortalJob; +use App\Classes\Jobs\FetchWarehouseReceiveListFromVTPortalJob; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -24,7 +29,11 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { - // $schedule->command('inspire')->hourly(); + $schedule->job(FetchWarehouseReceiveListFromVTPortalJob::class)->dailyAt('21:00'); + $schedule->job(FetchLoadedContainersFromVTPortalJob::class)->dailyAt('21:15'); + $schedule->job(FetchPackingListFromVTPortalJob::class)->dailyAt('21:30'); + $schedule->job(FetchContainersStatusUpdateFromVTPortalJob::class)->dailyAt('21:45'); + $schedule->job(FetchDeliveryListFromVTPortalJob::class)->dailyAt('22:00'); } /** diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php new file mode 100644 index 00000000..bce0b3f9 --- /dev/null +++ b/database/seeders/OrdersTableSeeder.php @@ -0,0 +1,34 @@ +chain([ + FetchLoadedContainersFromVTPortalJob::class, + FetchPackingListFromVTPortalJob::class, + FetchContainersStatusUpdateFromVTPortalProcessor::class, + FetchDeliveryListFromVTPortalJob::class, + + ]); + + } + +} From 25c95f084397c54b131d8bc11c7688531a02e001 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 23 Aug 2021 09:36:00 +0800 Subject: [PATCH 03/61] update packinglists from vt portal jobs and schedule --- database/seeders/DatabaseSeeder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 6f13aff8..bba317e6 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -24,5 +24,6 @@ class DatabaseSeeder extends Seeder $this->call(CurrenciesTableSeeder::class); $this->call(CompaniesTableSeeder::class); + $this->call(OrdersTableSeeder::class); } } \ No newline at end of file From 572cb4ac1da1572a7d1c20989ba4ae2b3b3cbefe Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 23 Aug 2021 10:43:02 +0800 Subject: [PATCH 04/61] update packinglists from vt portal jobs and schedule --- ...hContainersStatusUpdateFromVTPortalJob.php | 17 ++--------------- .../Jobs/FetchDeliveryListFromVTPortalJob.php | 17 +++-------------- .../FetchLoadedContainersFromVTPortalJob.php | 19 ++----------------- .../Jobs/FetchPackingListFromVTPortalJob.php | 16 ++-------------- ...tchWarehouseReceiveListFromVTPortalJob.php | 18 ++---------------- 5 files changed, 11 insertions(+), 76 deletions(-) diff --git a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php index 66ed254d..bae43fbd 100644 --- a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php @@ -14,27 +14,14 @@ class FetchContainersStatusUpdateFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - /** @var FetchContainersStatusUpdateFromVTPortalProcessor */ - private $fetchContainersStatusUpdateFromVTPortalProcessor; - - /** - * FetchContainersStatusUpdateFromVTPortalJob constructor. - * @param FetchContainersStatusUpdateFromVTPortalProcessor $fetchContainersStatusUpdateFromVTPortalProcessor - */ - public function __construct(FetchContainersStatusUpdateFromVTPortalProcessor $fetchContainersStatusUpdateFromVTPortalProcessor) - { - $this->fetchContainersStatusUpdateFromVTPortalProcessor = $fetchContainersStatusUpdateFromVTPortalProcessor; - } - - /** * Execute the job. * * @return void - * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function handle() { - $this->fetchContainersStatusUpdateFromVTPortalProcessor->execute(); + (App()->make(FetchContainersStatusUpdateFromVTPortalProcessor::class))->execute(); } } diff --git a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php index 2be16a09..60dc27bd 100644 --- a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php @@ -14,27 +14,16 @@ class FetchDeliveryListFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - /** @var FetchDeliveryListFromVTPortalProcessor */ - private $fetchDeliveryListFromVTPortalProcessor; - - /** - * FetchDeliveryListFromVTPortalJob constructor. - * @param FetchDeliveryListFromVTPortalProcessor $fetchDeliveryListFromVTPortalProcessor - */ - public function __construct(FetchDeliveryListFromVTPortalProcessor $fetchDeliveryListFromVTPortalProcessor) - { - $this->fetchDeliveryListFromVTPortalProcessor = $fetchDeliveryListFromVTPortalProcessor; - } - /** * Execute the job. * * @return void - * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function handle() { - $this->fetchDeliveryListFromVTPortalProcessor->execute(); + + (App()->make(FetchDeliveryListFromVTPortalProcessor::class))->execute(); } } diff --git a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php index eb31b715..33665682 100644 --- a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php @@ -15,18 +15,6 @@ class FetchLoadedContainersFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - /** @var FetchLoadedContainersFromVTPortalProcessor */ - private $fetchLoadedContainersFromVTPortalProcessor; - - /** - * FetchLoadedContainersFromVTPortalJob constructor. - * @param FetchLoadedContainersFromVTPortalProcessor $fetchLoadedContainersFromVTPortalProcessor - */ - public function __construct(FetchLoadedContainersFromVTPortalProcessor $fetchLoadedContainersFromVTPortalProcessor) - { - $this->fetchLoadedContainersFromVTPortalProcessor = $fetchLoadedContainersFromVTPortalProcessor; - } - /** * Execute the job. @@ -34,13 +22,10 @@ class FetchLoadedContainersFromVTPortalJob implements ShouldQueue * @param Carbon|null $start * @param Carbon|null $end * @return void - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\MalformedRequestException - * @throws \App\Classes\Exceptions\RequestValidationException - * @throws \GuzzleHttp\Exception\GuzzleException + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function handle(?Carbon $start = null, ?Carbon $end = null) { - $this->fetchLoadedContainersFromVTPortalProcessor->execute($start, $end); + (App()->make(FetchLoadedContainersFromVTPortalProcessor::class))->execute($start, $end); } } diff --git a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php index 917955d6..e578a687 100644 --- a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php @@ -14,27 +14,15 @@ class FetchPackingListFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - /** @var FetchPackingListFromVTPortalProcessor */ - private $fetchPackingListFromVTPortalProcessor; - - /** - * FetchPackingListFromVTPortalJob constructor. - * @param FetchPackingListFromVTPortalProcessor $fetchPackingListFromVTPortalProcessor - */ - public function __construct(FetchPackingListFromVTPortalProcessor $fetchPackingListFromVTPortalProcessor) - { - $this->fetchPackingListFromVTPortalProcessor = $fetchPackingListFromVTPortalProcessor; - } /** * Execute the job. * * @return void - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\RequestValidationException + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function handle() { - $this->fetchPackingListFromVTPortalProcessor->execute(); + (App()->make(FetchPackingListFromVTPortalProcessor::class))->execute(); } } diff --git a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php index 4e812a34..aaf4208b 100644 --- a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php @@ -15,17 +15,6 @@ class FetchWarehouseReceiveListFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - /** @var FetchWarehouseReceiveListFromVTPortalProcessor */ - private $fetchWarehouseReceiveListFromVTPortalProcessor; - - /** - * FetchWarehouseReceiveListFromVTPortalJob constructor. - * @param FetchWarehouseReceiveListFromVTPortalProcessor $fetchWarehouseReceiveListFromVTPortalProcessor - */ - public function __construct(FetchWarehouseReceiveListFromVTPortalProcessor $fetchWarehouseReceiveListFromVTPortalProcessor) - { - $this->fetchWarehouseReceiveListFromVTPortalProcessor = $fetchWarehouseReceiveListFromVTPortalProcessor; - } /** * Execute the job. @@ -33,13 +22,10 @@ class FetchWarehouseReceiveListFromVTPortalJob implements ShouldQueue * @param Carbon|null $start * @param Carbon|null $end * @return void - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\MalformedRequestException - * @throws \App\Classes\Exceptions\RequestValidationException - * @throws \GuzzleHttp\Exception\GuzzleException + * @throws \Illuminate\Contracts\Container\BindingResolutionException */ public function handle(?Carbon $start = null, ?Carbon $end = null) { - $this->fetchWarehouseReceiveListFromVTPortalProcessor->execute($start, $end); + (App()->make(FetchWarehouseReceiveListFromVTPortalProcessor::class))->execute($start, $end); } } From c79443eb622fbbcb563d70bcdbef0518434cb9b5 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 23 Aug 2021 10:45:06 +0800 Subject: [PATCH 05/61] update packinglists from vt portal jobs and schedule --- database/seeders/OrdersTableSeeder.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index bce0b3f9..a52d9129 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -2,6 +2,7 @@ namespace Database\Seeders; +use App\Classes\Jobs\FetchContainersStatusUpdateFromVTPortalJob; use App\Classes\Jobs\FetchDeliveryListFromVTPortalJob; use App\Classes\Jobs\FetchLoadedContainersFromVTPortalJob; use App\Classes\Jobs\FetchPackingListFromVTPortalJob; @@ -22,10 +23,10 @@ class OrdersTableSeeder extends Seeder { FetchWarehouseReceiveListFromVTPortalJob::dispatch()->chain([ - FetchLoadedContainersFromVTPortalJob::class, - FetchPackingListFromVTPortalJob::class, - FetchContainersStatusUpdateFromVTPortalProcessor::class, - FetchDeliveryListFromVTPortalJob::class, + new FetchLoadedContainersFromVTPortalJob(), + new FetchPackingListFromVTPortalJob(), + new FetchContainersStatusUpdateFromVTPortalJob(), + new FetchDeliveryListFromVTPortalJob(), ]); From c07bcb6334c5ac9f861cae560d3519da0c75bd60 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 23 Aug 2021 10:52:25 +0800 Subject: [PATCH 06/61] update packinglists from vt portal jobs and schedule --- database/seeders/OrdersTableSeeder.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index a52d9129..b4984055 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -21,15 +21,11 @@ class OrdersTableSeeder extends Seeder */ public function run() { - - FetchWarehouseReceiveListFromVTPortalJob::dispatch()->chain([ - new FetchLoadedContainersFromVTPortalJob(), - new FetchPackingListFromVTPortalJob(), - new FetchContainersStatusUpdateFromVTPortalJob(), - new FetchDeliveryListFromVTPortalJob(), - - ]); - + FetchWarehouseReceiveListFromVTPortalJob::dispatch(); + FetchLoadedContainersFromVTPortalJob::dispatch()->delay(now()->addMinutes(20)); + FetchPackingListFromVTPortalJob::dispatch()->delay(now()->addMinutes(40)); + FetchContainersStatusUpdateFromVTPortalJob::dispatch()->delay(now()->addMinutes(60)); + FetchDeliveryListFromVTPortalJob::dispatch()->delay(now()->addMinutes(80)); } } From bea3836df8d2e3d33a7632f4ea009e0cc045f04d Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 19:33:04 +0800 Subject: [PATCH 07/61] update packinglists from vt portal jobs and schedule --- ...hContainersStatusUpdateFromVTPortalJob.php | 2 + .../Jobs/FetchDeliveryListFromVTPortalJob.php | 2 + .../FetchLoadedContainersFromVTPortalJob.php | 8 +- .../Jobs/FetchPackingListFromVTPortalJob.php | 2 + ...tchWarehouseReceiveListFromVTPortalJob.php | 8 +- .../ControllersLogic/ListOrdersLogic.php | 2 +- .../Services/FetchesDataFromVTPortal.php | 6 +- ...hLoadedContainersFromVTPortalProcessor.php | 7 + ...ehouseReceiveListFromVTPortalProcessor.php | 156 +++++++++--------- database/seeders/OrdersTableSeeder.php | 8 +- .../orders/elements/OrderComponent.vue | 6 +- 11 files changed, 115 insertions(+), 92 deletions(-) diff --git a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php index bae43fbd..f885d5d2 100644 --- a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php @@ -14,6 +14,8 @@ class FetchContainersStatusUpdateFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + public $timeout = 3600; + /** * Execute the job. * diff --git a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php index 60dc27bd..100fd52d 100644 --- a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php @@ -15,6 +15,8 @@ class FetchDeliveryListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + public $timeout = 3600; + /** * Execute the job. * diff --git a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php index 33665682..4b128d8e 100644 --- a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php @@ -16,16 +16,16 @@ class FetchLoadedContainersFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + public $timeout = 3600; + /** * Execute the job. * - * @param Carbon|null $start - * @param Carbon|null $end * @return void * @throws \Illuminate\Contracts\Container\BindingResolutionException */ - public function handle(?Carbon $start = null, ?Carbon $end = null) + public function handle() { - (App()->make(FetchLoadedContainersFromVTPortalProcessor::class))->execute($start, $end); + (App()->make(FetchLoadedContainersFromVTPortalProcessor::class))->execute(); } } diff --git a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php index e578a687..05888453 100644 --- a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php @@ -15,6 +15,8 @@ class FetchPackingListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + public $timeout = 3600; + /** * Execute the job. * diff --git a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php index aaf4208b..757a899f 100644 --- a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php @@ -16,16 +16,16 @@ class FetchWarehouseReceiveListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + public $timeout = 3600; + /** * Execute the job. * - * @param Carbon|null $start - * @param Carbon|null $end * @return void * @throws \Illuminate\Contracts\Container\BindingResolutionException */ - public function handle(?Carbon $start = null, ?Carbon $end = null) + public function handle() { - (App()->make(FetchWarehouseReceiveListFromVTPortalProcessor::class))->execute($start, $end); + (App()->make(FetchWarehouseReceiveListFromVTPortalProcessor::class))->execute(); } } diff --git a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php index bf960049..da0eb033 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php @@ -44,7 +44,7 @@ class ListOrdersLogic extends AbstractControllerLogic { $this->canListOrders->passes(); - $query = $this->listsOrders->execute($this->listsOrders->deserializeFilters($request->input('filters'))); + $query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true])); return $this->collectionResponse(OrderResource::collection($query)); diff --git a/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php b/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php index bd807d02..6d77abce 100644 --- a/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php +++ b/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php @@ -54,9 +54,10 @@ class FetchesDataFromVTPortal ] ); - $request = $client->request($method, $url, [\GuzzleHttp\RequestOptions::JSON => $body]); + $request = $client->requestAsync($method, $url, [\GuzzleHttp\RequestOptions::JSON => $body, 'timeout' => 1200]); + + return $request->wait(); - return $request; } /** @@ -66,6 +67,7 @@ class FetchesDataFromVTPortal $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']; diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php index ccf1b5f0..25eca299 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -128,6 +128,13 @@ class FetchLoadedContainersFromVTPortalProcessor DB::beginTransaction(); $start = $start ? $start : Carbon::now()->subMonth(); + + $startLimit = Carbon::parse('11-08-2021'); + + if($start->isBefore($startLimit)){ + $start = $startLimit; + } + $end = $end ? $end : Carbon::now(); $filter = '["LoadedTime:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; diff --git a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php index 28a696a8..dfc39838 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php @@ -30,6 +30,7 @@ use App\Models\Transport; use Carbon\Carbon; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class FetchWarehouseReceiveListFromVTPortalProcessor { @@ -108,110 +109,117 @@ class FetchWarehouseReceiveListFromVTPortalProcessor * @param Carbon|null $end * @return array * @throws GuzzleException - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\MalformedRequestException - * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(?Carbon $start = null, ?Carbon $end = null){ - DB::beginTransaction(); - $start = $start ? $start : Carbon::now()->subMonth(); - $end = $end ? $end : Carbon::now(); - $filter = '["ParcelDate:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; + try { - $warehouseListRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + $start = $start ? $start : Carbon::now()->subMonth(); - $response = $this->fetchesDataFRomVTPortal->getResponseBody($warehouseListRequest); + $startLimit = Carbon::parse('11-08-2021'); - foreach ($response->Rows as $parcel){ - $marking = explode('/', explode('CIEF/', $parcel[5])[1]); - - if(!array_key_exists(1, $marking)){ - continue; + if($start->isBefore($startLimit)){ + $start = $startLimit; } - $orderNumber = $marking[1]; + $end = $end ? $end : Carbon::now(); + $filter = '["ParcelDate:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; - if(!$parcel[9]){ - continue; - } + $warehouseListRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - try { - $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); - } catch (ResourceNotFoundException $exception) { + $response = $this->fetchesDataFRomVTPortal->getResponseBody($warehouseListRequest); - $oldOrder = OldOrders::where('marking', '=', $orderNumber)->first(); + foreach ($response->Rows as $parcel){ + $marking = explode('/', explode('CIEF/', $parcel[5])[1]); - if(!$oldOrder){ + if(!array_key_exists(1, $marking)){ continue; } - $customerMarking = str_replace(' ', '', str_replace('/', '', str_replace('CIEF/', '', $oldOrder->company->marking))); + $orderNumber = $marking[1]; - $companyModule = CompanyModule::whereHas('inviters', function($query) use ($customerMarking) { - return $query->where('invitee_reference', '=', $customerMarking); - })->first(); - - if(!$companyModule) { + if(!$parcel[9]){ continue; } - if(!$oldOrder->address) { - continue; + try { + $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); + } catch (ResourceNotFoundException $exception) { + + $oldOrder = OldOrders::where('marking', '=', $orderNumber)->first(); + + if(!$oldOrder){ + continue; + } + + $customerMarking = str_replace(' ', '', str_replace('/', '', str_replace('CIEF/', '', $oldOrder->company->marking))); + + $companyModule = CompanyModule::whereHas('inviters', function($query) use ($customerMarking) { + return $query->where('invitee_reference', '=', $customerMarking); + })->first(); + + if(!$companyModule) { + continue; + } + + if(!$oldOrder->address) { + continue; + } + + /** @var Address $address */ + $address = $this->createAddressFromOldAddressProcessor->execute($oldOrder->address, $companyModule); + + if(!$address){ + continue; + } + + + $warehouseId = $parcel[0]; + $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $warehouseId === 11 ? 3 : 4]); + + $order = $this->createOrderProcessor->execute($companyModule->company, $originWarehouse, $address, $orderNumber); } - /** @var Address $address */ - $address = $this->createAddressFromOldAddressProcessor->execute($oldOrder->address, $companyModule); + $packingListReference = $parcel[17]; + $quantity = $parcel[9]; + $measurement = round(($parcel[10]/$quantity) ** (1/3) * 100, 2); + $description = $parcel[7]; + $tracking = $parcel[6]; + $receiveDate = $parcel[1]; - if(!$address){ - continue; + $packingListObject = new PackingListObject($packingListReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee->id, PackingListType::WAREHOUSE_RECEIVE_LIST, ApprovalStatus::APPROVED); + + /** @var PackingList $packingList */ + $packingList = $order->packingLists()->where('reference', '=', $packingListReference)->first(); + + if(!$packingList) { + $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + + $transportObject = new TransportObject(TransportType::LAND, null, $tracking, Carbon::parse($receiveDate), Carbon::parse($receiveDate), ApprovalStatus::APPROVED); + + + $this->createsTransport->execute($transportObject, $packingList); } + /** @var Transport $transport */ + $transport = $packingList->transports()->first(); - $warehouseId = $parcel[0]; - $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $warehouseId === 11 ? 3 : 4]); + $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); + + $this->createsSchedule->execute($transport, new ScheduleObject(Carbon::parse($receiveDate), Carbon::parse($receiveDate), ApprovalStatus::APPROVED)); + + $packingList->packages()->delete(); + + $packageObject = new PackageObject(PackageType::CARTON, $description, $measurement, $measurement, $measurement, 0, $quantity, ApprovalStatus::APPROVED); + $this->createPackageProcessor->execute($packageObject, $packingList); - $order = $this->createOrderProcessor->execute($companyModule->company, $originWarehouse, $address, $orderNumber); } - - $packingListReference = $parcel[17]; - $quantity = $parcel[9]; - $measurement = round(($parcel[10]/$quantity) ** (1/3) * 100, 2); - $description = $parcel[7]; - $tracking = $parcel[6]; - $receiveDate = $parcel[1]; - - $packingListObject = new PackingListObject($packingListReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee->id, PackingListType::WAREHOUSE_RECEIVE_LIST, ApprovalStatus::APPROVED); - - /** @var PackingList $packingList */ - $packingList = $order->packingLists()->where('reference', '=', $packingListReference)->first(); - - if(!$packingList) { - $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); - - $transportObject = new TransportObject(TransportType::LAND, null, $tracking, Carbon::parse($receiveDate), Carbon::parse($receiveDate), ApprovalStatus::APPROVED); - - - $this->createsTransport->execute($transportObject, $packingList); - } - - /** @var Transport $transport */ - $transport = $packingList->transports()->first(); - - $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); - - $this->createsSchedule->execute($transport, new ScheduleObject(Carbon::parse($receiveDate), Carbon::parse($receiveDate), ApprovalStatus::APPROVED)); - - $packingList->packages()->delete(); - - $packageObject = new PackageObject(PackageType::CARTON, $description, $measurement, $measurement, $measurement, 0, $quantity, ApprovalStatus::APPROVED); - $this->createPackageProcessor->execute($packageObject, $packingList); - + return []; + } catch (\Exception $exception){ + Log::error($exception->getMessage()); } - DB::commit(); - return []; } diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index b4984055..c9fb6667 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -22,10 +22,10 @@ class OrdersTableSeeder extends Seeder public function run() { FetchWarehouseReceiveListFromVTPortalJob::dispatch(); - FetchLoadedContainersFromVTPortalJob::dispatch()->delay(now()->addMinutes(20)); - FetchPackingListFromVTPortalJob::dispatch()->delay(now()->addMinutes(40)); - FetchContainersStatusUpdateFromVTPortalJob::dispatch()->delay(now()->addMinutes(60)); - FetchDeliveryListFromVTPortalJob::dispatch()->delay(now()->addMinutes(80)); + FetchLoadedContainersFromVTPortalJob::dispatch()->delay(now()->addMinutes(5)); + FetchPackingListFromVTPortalJob::dispatch()->delay(now()->addMinutes(10)); + FetchContainersStatusUpdateFromVTPortalJob::dispatch()->delay(now()->addMinutes(15)); + FetchDeliveryListFromVTPortalJob::dispatch()->delay(now()->addMinutes(20)); } } diff --git a/resources/assets/vue/components/orders/elements/OrderComponent.vue b/resources/assets/vue/components/orders/elements/OrderComponent.vue index d87533f1..d7add0c4 100644 --- a/resources/assets/vue/components/orders/elements/OrderComponent.vue +++ b/resources/assets/vue/components/orders/elements/OrderComponent.vue @@ -39,15 +39,15 @@
Received -
0
+
{{item.parcels.reduce((total, obj) => obj.quantity + total, 0)}}
In Transit -
0
+
{{item.in_transit_packages.reduce((total, obj) => obj.quantity + total, 0)}}
Delivered -
0
+
{{item.delivered_packages.reduce((total, obj) => obj.quantity + total, 0)}}
From 46b5d19331523d3ab2c31a7c478af4c58605c73c Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 19:44:52 +0800 Subject: [PATCH 08/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchDeliveryListFromVTPortalProcessor.php | 2 +- database/migrations/2021_07_21_110051_create_packages_table.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php index 9774de92..ca3a83cc 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php @@ -79,7 +79,7 @@ class FetchDeliveryListFromVTPortalProcessor $transport = $this->createsTransport->execute($transportObject, $packingList); $this->createsSchedule->execute($transport, new ScheduleObject($deliveryDate, $deliveryDate, ApprovalStatus::APPROVED)); - $deliveryStep = $packingList->steps()->where('reference', '=', 'DELIVERY')->first(); + $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]); 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 4ec1c00d..9c09f5e9 100644 --- a/database/migrations/2021_07_21_110051_create_packages_table.php +++ b/database/migrations/2021_07_21_110051_create_packages_table.php @@ -20,7 +20,7 @@ class CreatePackagesTable extends Migration $table->integer('type')->default(0); $table->string('reference')->nullable(); - $table->string('description',45)->nullable(); + $table->string('description')->nullable(); $table->decimal('width', 8, 2); $table->decimal('height', 8, 2); From eac5c6d104be83cad3c6c57cbda20d4d00813b5a Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 19:50:35 +0800 Subject: [PATCH 09/61] update packinglists from vt portal jobs and schedule --- app/Models/OldAddress.php | 5 ----- app/Models/OldCompany.php | 12 ------------ app/Models/OldOrders.php | 3 --- 3 files changed, 20 deletions(-) diff --git a/app/Models/OldAddress.php b/app/Models/OldAddress.php index 54c56bb8..5a2b3a3c 100644 --- a/app/Models/OldAddress.php +++ b/app/Models/OldAddress.php @@ -2,12 +2,7 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Illuminate\Database\Eloquent\Relations\HasOne; -use Illuminate\Database\Eloquent\SoftDeletes; -use Illuminate\Database\Eloquent\Relations\MorphTo; class OldAddress extends Model { diff --git a/app/Models/OldCompany.php b/app/Models/OldCompany.php index 97f354cc..2ca5b482 100644 --- a/app/Models/OldCompany.php +++ b/app/Models/OldCompany.php @@ -2,21 +2,9 @@ namespace App\Models; -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\Model; -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; class OldCompany extends Model diff --git a/app/Models/OldOrders.php b/app/Models/OldOrders.php index d0c06c58..0b484a30 100644 --- a/app/Models/OldOrders.php +++ b/app/Models/OldOrders.php @@ -2,12 +2,9 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasOne; -use Illuminate\Database\Eloquent\SoftDeletes; -use Illuminate\Database\Eloquent\Relations\MorphTo; class OldOrders extends Model { From 66c3b532cbd462320566e1566bb0d6ab8aaa2a01 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 19:57:27 +0800 Subject: [PATCH 10/61] update packinglists from vt portal jobs and schedule --- app/Models/OldOrders.php | 2 +- database/seeders/CompaniesTableSeeder.php | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/Models/OldOrders.php b/app/Models/OldOrders.php index 0b484a30..81041fab 100644 --- a/app/Models/OldOrders.php +++ b/app/Models/OldOrders.php @@ -25,7 +25,7 @@ class OldOrders extends Model */ public function company(): belongsTo { - return $this->belongsTo(oldCompany::class, 'company_id'); + return $this->belongsTo(OldCompany::class, 'company_id'); } } diff --git a/database/seeders/CompaniesTableSeeder.php b/database/seeders/CompaniesTableSeeder.php index 5df4ba5e..01bb3801 100644 --- a/database/seeders/CompaniesTableSeeder.php +++ b/database/seeders/CompaniesTableSeeder.php @@ -4,7 +4,6 @@ namespace Database\Seeders; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; use App\Classes\Modules\Addresses\Processors\CreateAddressFromOldAddressProcessor; -use App\Classes\Modules\Addresses\Services\CleansOldAddress; use App\Classes\Modules\Addresses\Services\CreatesAddress; use App\Classes\Modules\Companies\DataTransferObjects\CompanyConnectionObject; use App\Classes\Modules\Companies\DataTransferObjects\CompanyObject; @@ -22,12 +21,10 @@ use App\Classes\ValueObjects\Constants\CompanyType; use App\Classes\ValueObjects\Constants\BusinessType; use App\Models\CompanyModule; -use App\Models\District; use App\Models\OldCompany; use Illuminate\Database\Seeder; use App\Models\Company; -use Illuminate\Support\Facades\App; class CompaniesTableSeeder extends Seeder { From 61c11aef26f234e0c16d17c5fc9a32f090520657 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 21:20:49 +0800 Subject: [PATCH 11/61] update packinglists from vt portal jobs and schedule --- .../FetchWarehouseReceiveListFromVTPortalProcessor.php | 4 ++++ .../assets/vue/components/orders/elements/OrderComponent.vue | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php index dfc39838..862fdb60 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php @@ -112,6 +112,8 @@ class FetchWarehouseReceiveListFromVTPortalProcessor */ public function execute(?Carbon $start = null, ?Carbon $end = null){ + DB::beginTransaction(); + try { $start = $start ? $start : Carbon::now()->subMonth(); @@ -220,6 +222,8 @@ class FetchWarehouseReceiveListFromVTPortalProcessor Log::error($exception->getMessage()); } + DB::commit(); + } diff --git a/resources/assets/vue/components/orders/elements/OrderComponent.vue b/resources/assets/vue/components/orders/elements/OrderComponent.vue index d7add0c4..907f3d73 100644 --- a/resources/assets/vue/components/orders/elements/OrderComponent.vue +++ b/resources/assets/vue/components/orders/elements/OrderComponent.vue @@ -67,7 +67,7 @@
Total CBM -
0.00
+
{{(Math.round((item.origin_warehouse_packages.reduce((total, obj) => obj.cbm + total, 0) + item.in_transit_packages.reduce((total, obj) => obj.cbm + total, 0) + item.delivered_packages.reduce((total, obj) => obj.cbm + total, 0)) * 10000) / 10000).toFixed(3)}}
From 0772173dd93f8f902916cc40da99582fe953fca2 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 23:40:38 +0800 Subject: [PATCH 12/61] update packinglists from vt portal jobs and schedule --- ...hContainersStatusUpdateFromVTPortalJob.php | 2 +- .../Jobs/FetchDeliveryListFromVTPortalJob.php | 2 +- .../FetchLoadedContainersFromVTPortalJob.php | 2 +- .../Jobs/FetchPackingListFromVTPortalJob.php | 2 +- ...tchWarehouseReceiveListFromVTPortalJob.php | 2 +- ...inersStatusUpdateFromVTPortalProcessor.php | 111 ++++++------- ...FetchDeliveryListFromVTPortalProcessor.php | 56 ++++--- ...hLoadedContainersFromVTPortalProcessor.php | 148 +++++++++--------- .../FetchPackingListFromVTPortalProcessor.php | 42 ++--- database/seeders/OrdersTableSeeder.php | 11 +- 10 files changed, 197 insertions(+), 181 deletions(-) diff --git a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php index f885d5d2..296d3f52 100644 --- a/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchContainersStatusUpdateFromVTPortalJob.php @@ -14,7 +14,7 @@ class FetchContainersStatusUpdateFromVTPortalJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 3600; + public $timeout = 900; /** * Execute the job. diff --git a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php index 100fd52d..49005f3e 100644 --- a/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchDeliveryListFromVTPortalJob.php @@ -15,7 +15,7 @@ class FetchDeliveryListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 3600; + public $timeout = 900; /** * Execute the job. diff --git a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php index 4b128d8e..af8d51ea 100644 --- a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php @@ -16,7 +16,7 @@ class FetchLoadedContainersFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 3600; + public $timeout = 300; /** * Execute the job. diff --git a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php index 05888453..adaa9dc6 100644 --- a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php @@ -15,7 +15,7 @@ class FetchPackingListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 3600; + public $timeout = 900; /** * Execute the job. diff --git a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php index 757a899f..bc7083ff 100644 --- a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php @@ -16,7 +16,7 @@ class FetchWarehouseReceiveListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 3600; + public $timeout = 300; /** * Execute the job. diff --git a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php index ddbcd01b..18599d95 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php @@ -30,6 +30,7 @@ use App\Models\Transport; use Carbon\Carbon; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class FetchContainersStatusUpdateFromVTPortalProcessor { @@ -68,68 +69,72 @@ class FetchContainersStatusUpdateFromVTPortalProcessor */ public function execute(){ - $containers = Container::where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); + try { + $containers = Container::where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); - /** @var Container $container */ - foreach($containers as $container){ - try { - $filter = '["RefNo:=%js%\"'.$container->reference.'\"\u0000"]'; + /** @var Container $container */ + foreach($containers as $container){ + try { + $filter = '["RefNo:=%js%\"'.$container->reference.'\"\u0000"]'; - $containerDetailsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + $containerDetailsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - $containerDetails = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailsRequest); + $containerDetails = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailsRequest); - $containerDetails = $containerDetails->Rows[0]; + $containerDetails = $containerDetails->Rows[0]; - if(!$eta = $containerDetails[3]){ + if(!$eta = $containerDetails[3]){ + continue; + } + + $eta = Carbon::parse($eta); + + $delayDate = $containerDetails[6]; + + $containerStatus = $containerDetails[9]; + + $unstuffingDate = $containerDetails[7]; + + $transport = $container->transports()->first(); + + if(!$transport){ + $transportObject = new TransportObject(TransportType::SEA, null, null, $eta, null, ApprovalStatus::APPROVED); + /** @var Transport $transport */ + $transport = $this->createsTransport->execute($transportObject, $container); + $this->createsSchedule->execute($transport, new ScheduleObject($eta->subDays(5), $eta, ApprovalStatus::APPROVED)); + } + + if($delayDate){ + $delayDate = Carbon::parse($delayDate); + $transport = $container->transports()->first(); + if(!$transport->schedules()->where('eta', '=', $delayDate)){ + $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); + } + + $this->createsSchedule->execute($transport, new ScheduleObject($delayDate->subDays(5), $delayDate, ApprovalStatus::APPROVED)); + } + + if($containerStatus === 'Unstuffing'){ + $container->update(['status' => ApprovalStatus::COMPLETED]); + $container->transports()->first()->update(['drop_date' => Carbon::parse($unstuffingDate)->subDay(), 'status' => ApprovalStatus::COMPLETED]); + $container->packingLists()->update(['status' => ApprovalStatus::APPROVED]); + /** @var PackingList $packingList */ + foreach($container->packingLists as $packingList){ + $signature = $packingList->owner->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->entity_sigiture; + foreach($packingList->steps()->where('reference', '!=', 'DELIVERY')->get() as $step){ + $this->updatesContractObligations->execute($signature, $step->obligation_hash_id); + $step->update(['status' => ApprovalStatus::COMPLETED]); + } + } + } + + } catch (GuzzleException $exception) { continue; } - $eta = Carbon::parse($eta); - - $delayDate = $containerDetails[6]; - - $containerStatus = $containerDetails[9]; - - $unstuffingDate = $containerDetails[7]; - - $transport = $container->transports()->first(); - - if(!$transport){ - $transportObject = new TransportObject(TransportType::SEA, null, null, $eta, null, ApprovalStatus::APPROVED); - /** @var Transport $transport */ - $transport = $this->createsTransport->execute($transportObject, $container); - $this->createsSchedule->execute($transport, new ScheduleObject($eta->subDays(5), $eta, ApprovalStatus::APPROVED)); - } - - if($delayDate){ - $delayDate = Carbon::parse($delayDate); - $transport = $container->transports()->first(); - if(!$transport->schedules()->where('eta', '=', $delayDate)){ - $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); - } - - $this->createsSchedule->execute($transport, new ScheduleObject($delayDate->subDays(5), $delayDate, ApprovalStatus::APPROVED)); - } - - if($containerStatus === 'Unstuffing'){ - $container->update(['status' => ApprovalStatus::COMPLETED]); - $container->transports()->first()->update(['drop_date' => Carbon::parse($unstuffingDate)->subDay(), 'status' => ApprovalStatus::COMPLETED]); - $container->packingLists()->update(['status' => ApprovalStatus::APPROVED]); - /** @var PackingList $packingList */ - foreach($container->packingLists as $packingList){ - $signature = $packingList->owner->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->entity_sigiture; - foreach($packingList->steps()->where('reference', '!=', 'DELIVERY')->get() as $step){ - $this->updatesContractObligations->execute($signature, $step->obligation_hash_id); - $step->update(['status' => ApprovalStatus::COMPLETED]); - } - } - } - - } catch (GuzzleException $exception) { - continue; } - + } catch (\Exception $exception) { + Log::error($exception); } return []; diff --git a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php index ca3a83cc..6714472b 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php @@ -19,6 +19,7 @@ use App\Models\PackingList; use App\Models\Transport; use Carbon\Carbon; use GuzzleHttp\Exception\GuzzleException; +use Illuminate\Support\Facades\Log; class FetchDeliveryListFromVTPortalProcessor { @@ -53,44 +54,47 @@ class FetchDeliveryListFromVTPortalProcessor /** * @return array - * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute(){ - $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::APPROVED)->get(); + try { + $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::APPROVED)->get(); - /** @var PackingList $packingList */ - foreach($packingLists as $packingList){ - try { - $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; + /** @var PackingList $packingList */ + 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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + $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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); + + foreach($shippingPackingLists->Rows as $shippingPackingList){ + if(!$shippingPackingList[9] && !$shippingPackingList[10]) { + continue; + } + + $deliveryDate = Carbon::parse($shippingPackingList[9] ? $shippingPackingList[9]:$shippingPackingList[10]); + $transportObject = new TransportObject(TransportType::LAND, null, null, $deliveryDate, $deliveryDate, ApprovalStatus::APPROVED); + /** @var Transport $transport */ + $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]); - $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); - foreach($shippingPackingLists->Rows as $shippingPackingList){ - if(!$shippingPackingList[9]) { - continue; } - $deliveryDate = Carbon::parse($shippingPackingList[9]); - $transportObject = new TransportObject(TransportType::LAND, null, null, $deliveryDate, $deliveryDate, ApprovalStatus::APPROVED); - /** @var Transport $transport */ - $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; } - } catch (GuzzleException $exception) { - continue; } - + } catch (\Exception $exception){ + Log::error($exception); } return []; diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php index 25eca299..2776124d 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -28,6 +28,7 @@ use App\Models\PackingList; use Carbon\Carbon; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class FetchLoadedContainersFromVTPortalProcessor { @@ -120,102 +121,103 @@ class FetchLoadedContainersFromVTPortalProcessor * @param Carbon|null $end * @return array * @throws GuzzleException - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\MalformedRequestException - * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(?Carbon $start = null, ?Carbon $end = null){ DB::beginTransaction(); - $start = $start ? $start : Carbon::now()->subMonth(); + try { + $start = $start ? $start : Carbon::now()->subMonth(); - $startLimit = Carbon::parse('11-08-2021'); + $startLimit = Carbon::parse('11-08-2021'); - if($start->isBefore($startLimit)){ - $start = $startLimit; - } - - $end = $end ? $end : Carbon::now(); - $filter = '["LoadedTime:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; - - $containersRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - - $containers = $this->fetchesDataFRomVTPortal->getResponseBody($containersRequest); - - foreach ($containers->Rows as $container){ - - $filter = '["ContainerID:=%js%'.$container[11].'"]'; - $containerDetailRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - - $containerDetail = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailRequest); - - $containerObject = new ContainerObject($container[0], str_replace(' ', '', $container[24]), str_replace(' ', '', $container[15]), ContainerTypes::FORTY_FEET_DRY_CONTAINER, ApprovalStatus::PENDING_VERIFICATION); - - try { - $container = $this->fetchesContainer->execute(['reference' => $containerObject->getReference()]); - } catch (ResourceNotFoundException $exception){ - $warehouseId = $container[12]; - $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $warehouseId === 11 ? 3 : 4]); - $container = $this->createContainerProcessor->execute($containerObject, $originWarehouse); + if($start->isBefore($startLimit)){ + $start = $startLimit; } - foreach($containerDetail->Rows as $packingList){ - $marking = explode('/', explode('CIEF/', $packingList[13])[1]); + $end = $end ? $end : Carbon::now(); + $filter = '["LoadedTime:$between$%js%\"'.$start->format('Y-m-d').'T00:00:00.000\"$and$%js%\"'.$end->format('Y-m-d').'T00:00:00.000\"\u0000"]'; - if(!array_key_exists(1, $marking)){ - continue; - } + $containersRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - $orderNumber = $marking[1]; + $containers = $this->fetchesDataFRomVTPortal->getResponseBody($containersRequest); - if(!$packingList[22]){ - continue; - } + foreach ($containers->Rows as $container){ + + $filter = '["ContainerID:=%js%'.$container[11].'"]'; + $containerDetailRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + + $containerDetail = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailRequest); + + $containerObject = new ContainerObject($container[0], str_replace(' ', '', $container[24]), str_replace(' ', '', $container[15]), ContainerTypes::FORTY_FEET_DRY_CONTAINER, ApprovalStatus::PENDING_VERIFICATION); try { - /** @var Order $order */ - $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); + $container = $this->fetchesContainer->execute(['reference' => $containerObject->getReference()]); } catch (ResourceNotFoundException $exception){ - continue; + $warehouseId = $container[12]; + $originWarehouse = $this->fetchesCompanyModule->execute(['id' => $warehouseId === 11 ? 3 : 4]); + $container = $this->createContainerProcessor->execute($containerObject, $originWarehouse); } - $packingListReference = $packingList[16]; + foreach($containerDetail->Rows as $packingList){ + $marking = explode('/', explode('CIEF/', $packingList[13])[1]); - try{ - $this->fetchesPackingList->execute(['reference' => $packingListReference]); - } catch (ResourceNotFoundException $exception){ - $contract = $this->unityCreateContract->execute(); - $contractReference = $contract->hash_id; - $contractObligations = $contract->contract_obligation_list; - - $this->unityActivateContract->execute($contractReference); - - $supervisorHashId = $order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->unity_hash_id; - - $supervisorContractEntity = $this->unityCreateContractEntity->execute($contractReference, $supervisorHashId); - $order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->update(['entity_hash_id' => $supervisorContractEntity->hash_id, 'entity_signature' => $supervisorContractEntity->entity_signature_hash_id]); - - $importerContractEntity = $this->unityCreateContractEntity->execute($contractReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::IMPORTER)->first()->appointee->unity_hash_id); - $order->orderRoles()->where('role_id', '=', OrderRoleTypes::IMPORTER)->first()->update(['entity_hash_id' => $importerContractEntity->hash_id, 'entity_signature' => $importerContractEntity->entity_signature_hash_id]); - - $this->unityAssignContractEntity->execute($supervisorContractEntity->hash_id, $contractObligations); - - $packingListObject = new PackingListObject($packingListReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_FREIGHT_FORWARDER)->first()->appointee->id, PackingListType::SHIPPING_PACKING_LIST, ApprovalStatus::PENDING_VERIFICATION, $contractReference); - - /** @var PackingList $packingList */ - $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); - $container->packingLists()->attach($packingList); - - foreach($contractObligations as $obligation) { - $stepObject = new StepsObject($order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->id, $obligation->reference, $obligation->sequence, $obligation->hash_id); - $this->createsStep->execute($packingList, $stepObject); + if(!array_key_exists(1, $marking)){ + continue; } + $orderNumber = $marking[1]; + + if(!$packingList[22]){ + continue; + } + + try { + /** @var Order $order */ + $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); + } catch (ResourceNotFoundException $exception){ + continue; + } + + $packingListReference = $packingList[16]; + + try{ + $this->fetchesPackingList->execute(['reference' => $packingListReference]); + } catch (ResourceNotFoundException $exception){ + $contract = $this->unityCreateContract->execute(); + $contractReference = $contract->hash_id; + $contractObligations = $contract->contract_obligation_list; + + $this->unityActivateContract->execute($contractReference); + + $supervisorHashId = $order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->unity_hash_id; + + $supervisorContractEntity = $this->unityCreateContractEntity->execute($contractReference, $supervisorHashId); + $order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->update(['entity_hash_id' => $supervisorContractEntity->hash_id, 'entity_signature' => $supervisorContractEntity->entity_signature_hash_id]); + + $importerContractEntity = $this->unityCreateContractEntity->execute($contractReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::IMPORTER)->first()->appointee->unity_hash_id); + $order->orderRoles()->where('role_id', '=', OrderRoleTypes::IMPORTER)->first()->update(['entity_hash_id' => $importerContractEntity->hash_id, 'entity_signature' => $importerContractEntity->entity_signature_hash_id]); + + $this->unityAssignContractEntity->execute($supervisorContractEntity->hash_id, $contractObligations); + + $packingListObject = new PackingListObject($packingListReference, $order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_FREIGHT_FORWARDER)->first()->appointee->id, PackingListType::SHIPPING_PACKING_LIST, ApprovalStatus::PENDING_VERIFICATION, $contractReference); + + /** @var PackingList $packingList */ + $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + $container->packingLists()->attach($packingList); + + foreach($contractObligations as $obligation) { + $stepObject = new StepsObject($order->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->id, $obligation->reference, $obligation->sequence, $obligation->hash_id); + $this->createsStep->execute($packingList, $stepObject); + } + + + } } } - + } catch (\Exception $exception){ + Log::error($exception); } diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index ec896e5c..d163fdb7 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -10,6 +10,7 @@ use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\PackingListType; use App\Models\PackingList; use GuzzleHttp\Exception\GuzzleException; +use Illuminate\Support\Facades\Log; class FetchPackingListFromVTPortalProcessor { @@ -39,38 +40,41 @@ class FetchPackingListFromVTPortalProcessor /** * @return array - * @throws \App\Classes\Exceptions\AccessForbiddenException - * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(){ - $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); + try { + $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); - foreach($packingLists as $packingList){ - try { - $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; + 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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + $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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); + $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); - $packingList->packages()->delete(); + $packingList->packages()->delete(); + + foreach($shippingPackingLists->Rows as $shippingPackingList){ + if(!$shippingPackingList[22]) { + continue; + } + + $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); + $this->createPackageProcessor->execute($packageObject, $packingList); - foreach($shippingPackingLists->Rows as $shippingPackingList){ - if(!$shippingPackingList[22]) { - continue; } - - $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[43] ? $shippingPackingList[43] : $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); - $this->createPackageProcessor->execute($packageObject, $packingList); - + } catch (GuzzleException $exception) { + continue; } - } catch (GuzzleException $exception) { - continue; - } + } + } catch (\Exception $exception) { + Log::error($exception); } + return []; } diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index c9fb6667..0e881591 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -21,11 +21,12 @@ class OrdersTableSeeder extends Seeder */ public function run() { - FetchWarehouseReceiveListFromVTPortalJob::dispatch(); - FetchLoadedContainersFromVTPortalJob::dispatch()->delay(now()->addMinutes(5)); - FetchPackingListFromVTPortalJob::dispatch()->delay(now()->addMinutes(10)); - FetchContainersStatusUpdateFromVTPortalJob::dispatch()->delay(now()->addMinutes(15)); - FetchDeliveryListFromVTPortalJob::dispatch()->delay(now()->addMinutes(20)); + FetchWarehouseReceiveListFromVTPortalJob::withChain([ + new FetchLoadedContainersFromVTPortalJob, + new FetchPackingListFromVTPortalJob, + new FetchContainersStatusUpdateFromVTPortalJob, + new FetchDeliveryListFromVTPortalJob + ])->dispatch(); } } From 3582654861282ceff6a9e45ca8944ae4381b8acc Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 23:46:00 +0800 Subject: [PATCH 13/61] update packinglists from vt portal jobs and schedule --- .../Modules/Companies/ControllersLogic/ListCompaniesLogic.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/Classes/Modules/Companies/ControllersLogic/ListCompaniesLogic.php b/app/Classes/Modules/Companies/ControllersLogic/ListCompaniesLogic.php index e060ddc7..80b15c1c 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/ListCompaniesLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/ListCompaniesLogic.php @@ -53,10 +53,6 @@ class ListCompaniesLogic extends AbstractControllerLogic { $this->canListCompanies->passes(); - logger("llogic"); - - logger($request->input('filters')); - $query = $this->listsCompanies->execute($this->listsCompanies->deserializeFilters($request->input('filters'))); return $this->collectionResponse(CompanyResource::collection($query)); From 82162026b37c034465fc6290f1a8b9ae6ee51082 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 29 Aug 2021 23:55:09 +0800 Subject: [PATCH 14/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchLoadedContainersFromVTPortalProcessor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php index 2776124d..1dfbef16 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -186,6 +186,7 @@ class FetchLoadedContainersFromVTPortalProcessor $contract = $this->unityCreateContract->execute(); $contractReference = $contract->hash_id; $contractObligations = $contract->contract_obligation_list; + dd($contractObligations); $this->unityActivateContract->execute($contractReference); From b5e2f47b318deb0e55917975a7bfc6f0736b3ac0 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:03:26 +0800 Subject: [PATCH 15/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchLoadedContainersFromVTPortalProcessor.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php index 1dfbef16..2776124d 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -186,7 +186,6 @@ class FetchLoadedContainersFromVTPortalProcessor $contract = $this->unityCreateContract->execute(); $contractReference = $contract->hash_id; $contractObligations = $contract->contract_obligation_list; - dd($contractObligations); $this->unityActivateContract->execute($contractReference); From 32d35231907cc5edefbead2dae26be5f1c2db274 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:23:22 +0800 Subject: [PATCH 16/61] update packinglists from vt portal jobs and schedule --- .../FetchLoadedContainersFromVTPortalProcessor.php | 4 ++++ database/seeders/OrdersTableSeeder.php | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php index 2776124d..01e3ae4a 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -162,12 +162,14 @@ class FetchLoadedContainersFromVTPortalProcessor $marking = explode('/', explode('CIEF/', $packingList[13])[1]); if(!array_key_exists(1, $marking)){ + Log::error('unknown order number'); continue; } $orderNumber = $marking[1]; if(!$packingList[22]){ + Log::error('no quantity'); continue; } @@ -175,6 +177,7 @@ class FetchLoadedContainersFromVTPortalProcessor /** @var Order $order */ $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); } catch (ResourceNotFoundException $exception){ + Log::error('order doesnt exist'); continue; } @@ -203,6 +206,7 @@ class FetchLoadedContainersFromVTPortalProcessor /** @var PackingList $packingList */ $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); + Log::error($packingList); $container->packingLists()->attach($packingList); foreach($contractObligations as $obligation) { diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index 0e881591..fd473747 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -21,12 +21,14 @@ class OrdersTableSeeder extends Seeder */ public function run() { - FetchWarehouseReceiveListFromVTPortalJob::withChain([ - new FetchLoadedContainersFromVTPortalJob, - new FetchPackingListFromVTPortalJob, - new FetchContainersStatusUpdateFromVTPortalJob, - new FetchDeliveryListFromVTPortalJob - ])->dispatch(); + FetchLoadedContainersFromVTPortalJob::dispatch(); +// +// FetchWarehouseReceiveListFromVTPortalJob::withChain([ +// new FetchLoadedContainersFromVTPortalJob, +// new FetchPackingListFromVTPortalJob, +// new FetchContainersStatusUpdateFromVTPortalJob, +// new FetchDeliveryListFromVTPortalJob +// ])->dispatch(); } } From 9c62a792b759be204669c16b72efe43a949ab324 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:31:29 +0800 Subject: [PATCH 17/61] update packinglists from vt portal jobs and schedule --- .../Jobs/FetchLoadedContainersFromVTPortalJob.php | 2 +- .../FetchWarehouseReceiveListFromVTPortalJob.php | 2 +- config/queue.php | 2 +- database/seeders/OrdersTableSeeder.php | 15 +++++++-------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php index af8d51ea..952d3c7a 100644 --- a/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchLoadedContainersFromVTPortalJob.php @@ -16,7 +16,7 @@ class FetchLoadedContainersFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 300; + public $timeout = 900; /** * Execute the job. diff --git a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php index bc7083ff..ced445a2 100644 --- a/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchWarehouseReceiveListFromVTPortalJob.php @@ -16,7 +16,7 @@ class FetchWarehouseReceiveListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 300; + public $timeout = 900; /** * Execute the job. diff --git a/config/queue.php b/config/queue.php index 25ea5a81..0f221cb6 100644 --- a/config/queue.php +++ b/config/queue.php @@ -38,7 +38,7 @@ return [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', - 'retry_after' => 90, + 'retry_after' => 3600, 'after_commit' => false, ], diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index fd473747..60caa71c 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -21,14 +21,13 @@ class OrdersTableSeeder extends Seeder */ public function run() { - FetchLoadedContainersFromVTPortalJob::dispatch(); -// -// FetchWarehouseReceiveListFromVTPortalJob::withChain([ -// new FetchLoadedContainersFromVTPortalJob, -// new FetchPackingListFromVTPortalJob, -// new FetchContainersStatusUpdateFromVTPortalJob, -// new FetchDeliveryListFromVTPortalJob -// ])->dispatch(); + + FetchWarehouseReceiveListFromVTPortalJob::withChain([ + new FetchLoadedContainersFromVTPortalJob, + new FetchPackingListFromVTPortalJob, + new FetchContainersStatusUpdateFromVTPortalJob, + new FetchDeliveryListFromVTPortalJob + ])->dispatch(); } } From d353a8629f64cc1bb330915a2ef8e62fa213eec0 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:32:59 +0800 Subject: [PATCH 18/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchLoadedContainersFromVTPortalProcessor.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php index 01e3ae4a..2776124d 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php @@ -162,14 +162,12 @@ class FetchLoadedContainersFromVTPortalProcessor $marking = explode('/', explode('CIEF/', $packingList[13])[1]); if(!array_key_exists(1, $marking)){ - Log::error('unknown order number'); continue; } $orderNumber = $marking[1]; if(!$packingList[22]){ - Log::error('no quantity'); continue; } @@ -177,7 +175,6 @@ class FetchLoadedContainersFromVTPortalProcessor /** @var Order $order */ $order = $this->fetchesOrder->execute(['reference' => $orderNumber]); } catch (ResourceNotFoundException $exception){ - Log::error('order doesnt exist'); continue; } @@ -206,7 +203,6 @@ class FetchLoadedContainersFromVTPortalProcessor /** @var PackingList $packingList */ $packingList = $this->createPackingListProcessor->execute($packingListObject, $order); - Log::error($packingList); $container->packingLists()->attach($packingList); foreach($contractObligations as $obligation) { From f90f5f7370eb6a5d47dfb9335a82690eba867d73 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:40:54 +0800 Subject: [PATCH 19/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index d163fdb7..76b7d062 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -66,6 +66,7 @@ class FetchPackingListFromVTPortalProcessor } } catch (GuzzleException $exception) { + Log::error($exception); continue; } From 727977937717bcf59cadb38c0392c11a9c57612f Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:44:17 +0800 Subject: [PATCH 20/61] update packinglists from vt portal jobs and schedule --- database/seeders/OrdersTableSeeder.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index 60caa71c..a1272030 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -22,12 +22,13 @@ class OrdersTableSeeder extends Seeder public function run() { - FetchWarehouseReceiveListFromVTPortalJob::withChain([ - new FetchLoadedContainersFromVTPortalJob, - new FetchPackingListFromVTPortalJob, - new FetchContainersStatusUpdateFromVTPortalJob, - new FetchDeliveryListFromVTPortalJob - ])->dispatch(); + FetchPackingListFromVTPortalJob::dispatch(); +// FetchWarehouseReceiveListFromVTPortalJob::withChain([ +// new FetchLoadedContainersFromVTPortalJob, +// new FetchPackingListFromVTPortalJob, +// new FetchContainersStatusUpdateFromVTPortalJob, +// new FetchDeliveryListFromVTPortalJob +// ])->dispatch(); } } From c6e621c4abffd35093bab3b62736c42c54596157 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:52:23 +0800 Subject: [PATCH 21/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index 76b7d062..7f0e1b25 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -54,6 +54,8 @@ class FetchPackingListFromVTPortalProcessor $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); + Log::error($shippingPackingLists->Rows); + $packingList->packages()->delete(); foreach($shippingPackingLists->Rows as $shippingPackingList){ From c71727c9c07c6306e8b554566f0ab355c1bb2756 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 00:57:04 +0800 Subject: [PATCH 22/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index 7f0e1b25..b1b29e37 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -45,7 +45,7 @@ class FetchPackingListFromVTPortalProcessor try { $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); - + Log::error(count($packingLists)); foreach($packingLists as $packingList){ try { $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; From 5355b31bcbaea0805e7336bee00008acfc76e4a0 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:09:16 +0800 Subject: [PATCH 23/61] update packinglists from vt portal jobs and schedule --- app/Classes/Jobs/FetchPackingListFromVTPortalJob.php | 2 +- .../Processors/FetchPackingListFromVTPortalProcessor.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php index adaa9dc6..17bf1394 100644 --- a/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php +++ b/app/Classes/Jobs/FetchPackingListFromVTPortalJob.php @@ -15,7 +15,7 @@ class FetchPackingListFromVTPortalJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public $timeout = 900; + public $timeout = 1800; /** * Execute the job. diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index b1b29e37..ae8277c9 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -45,7 +45,6 @@ class FetchPackingListFromVTPortalProcessor try { $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); - Log::error(count($packingLists)); foreach($packingLists as $packingList){ try { $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; From 52cae7f877c2193f57f3b31a715893b4f438ced7 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:16:21 +0800 Subject: [PATCH 24/61] update packinglists from vt portal jobs and schedule --- .../FetchPackingListFromVTPortalProcessor.php | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index ae8277c9..85e53b84 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -10,7 +10,7 @@ use App\Classes\ValueObjects\Constants\PackageType; use App\Classes\ValueObjects\Constants\PackingListType; use App\Models\PackingList; use GuzzleHttp\Exception\GuzzleException; -use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\DB; class FetchPackingListFromVTPortalProcessor { @@ -40,42 +40,42 @@ class FetchPackingListFromVTPortalProcessor /** * @return array + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\RequestValidationException */ public function execute(){ - try { - $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); - foreach($packingLists as $packingList){ - try { - $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; + $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)->where('status', '=', ApprovalStatus::PENDING_VERIFICATION)->get(); - $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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); + foreach($packingLists as $packingList){ - $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); + try { + DB::beginTransaction(); - Log::error($shippingPackingLists->Rows); + $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]'; - $packingList->packages()->delete(); + $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":"ModifiedOn DESC","Filter":'.$filter.'}}'), ''); - foreach($shippingPackingLists->Rows as $shippingPackingList){ - if(!$shippingPackingList[22]) { - continue; - } + $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest); - $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); - $this->createPackageProcessor->execute($packageObject, $packingList); + $packingList->packages()->delete(); + foreach($shippingPackingLists->Rows as $shippingPackingList){ + if(!$shippingPackingList[22]) { + continue; } - } catch (GuzzleException $exception) { - Log::error($exception); - continue; + + $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[43] ? $shippingPackingList[43] : $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); + $this->createPackageProcessor->execute($packageObject, $packingList); + } + DB::commit(); + } catch (GuzzleException $exception) { + continue; } - } catch (\Exception $exception) { - Log::error($exception); - } + } return []; From dd4ecbe743d9421175e33f6bd8628973a31e2c67 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:21:23 +0800 Subject: [PATCH 25/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index 85e53b84..f22a2a3d 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -11,6 +11,7 @@ use App\Classes\ValueObjects\Constants\PackingListType; use App\Models\PackingList; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class FetchPackingListFromVTPortalProcessor { @@ -66,12 +67,13 @@ class FetchPackingListFromVTPortalProcessor } $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[43] ? $shippingPackingList[43] : $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); - $this->createPackageProcessor->execute($packageObject, $packingList); - + $package = $this->createPackageProcessor->execute($packageObject, $packingList); + Log::log('', $package); } DB::commit(); } catch (GuzzleException $exception) { + Log::error($exception); continue; } From 5b8bfa32d3b000a466bf861c1fa1edcbdfefeabe Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:22:17 +0800 Subject: [PATCH 26/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index f22a2a3d..0eac4663 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -63,6 +63,7 @@ class FetchPackingListFromVTPortalProcessor foreach($shippingPackingLists->Rows as $shippingPackingList){ if(!$shippingPackingList[22]) { + Log::error('no quantity'); continue; } From bf991413048935c67672a87dfe7098bb125eebcf Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:23:54 +0800 Subject: [PATCH 27/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index 0eac4663..2c914016 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -69,7 +69,7 @@ class FetchPackingListFromVTPortalProcessor $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[43] ? $shippingPackingList[43] : $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); $package = $this->createPackageProcessor->execute($packageObject, $packingList); - Log::log('', $package); + Log::error($package); } DB::commit(); From 30224f91145332302a37cc99d24c222c1cb148df Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:27:54 +0800 Subject: [PATCH 28/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index 2c914016..9ee6d875 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -67,7 +67,7 @@ class FetchPackingListFromVTPortalProcessor continue; } - $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[43] ? $shippingPackingList[43] : $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); + $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); $package = $this->createPackageProcessor->execute($packageObject, $packingList); Log::error($package); } From 11572a562749e63ba0009b7e37e0b9ad899788c0 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:40:05 +0800 Subject: [PATCH 29/61] update packinglists from vt portal jobs and schedule --- database/seeders/OrdersTableSeeder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index a1272030..243c8d6d 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -22,7 +22,7 @@ class OrdersTableSeeder extends Seeder public function run() { - FetchPackingListFromVTPortalJob::dispatch(); + FetchContainersStatusUpdateFromVTPortalJob::dispatch(); // FetchWarehouseReceiveListFromVTPortalJob::withChain([ // new FetchLoadedContainersFromVTPortalJob, // new FetchPackingListFromVTPortalJob, From 5e44386b24329e6ef1ebb25b645c9b4ebbb313a5 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:41:47 +0800 Subject: [PATCH 30/61] update packinglists from vt portal jobs and schedule --- .../Processors/FetchPackingListFromVTPortalProcessor.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php index 9ee6d875..715c61ba 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php @@ -63,18 +63,15 @@ class FetchPackingListFromVTPortalProcessor foreach($shippingPackingLists->Rows as $shippingPackingList){ if(!$shippingPackingList[22]) { - Log::error('no quantity'); continue; } $packageObject = new PackageObject(PackageType::CARTON, $shippingPackingList[19], $shippingPackingList[31], $shippingPackingList[30], $shippingPackingList[29], 0, $shippingPackingList[22], ApprovalStatus::APPROVED); - $package = $this->createPackageProcessor->execute($packageObject, $packingList); - Log::error($package); + $this->createPackageProcessor->execute($packageObject, $packingList); } DB::commit(); } catch (GuzzleException $exception) { - Log::error($exception); continue; } From 3f48d85e3122e949c213ca0c7f3582079a579fa7 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 01:46:56 +0800 Subject: [PATCH 31/61] update packinglists from vt portal jobs and schedule --- database/seeders/OrdersTableSeeder.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/database/seeders/OrdersTableSeeder.php b/database/seeders/OrdersTableSeeder.php index 243c8d6d..60caa71c 100644 --- a/database/seeders/OrdersTableSeeder.php +++ b/database/seeders/OrdersTableSeeder.php @@ -22,13 +22,12 @@ class OrdersTableSeeder extends Seeder public function run() { - FetchContainersStatusUpdateFromVTPortalJob::dispatch(); -// FetchWarehouseReceiveListFromVTPortalJob::withChain([ -// new FetchLoadedContainersFromVTPortalJob, -// new FetchPackingListFromVTPortalJob, -// new FetchContainersStatusUpdateFromVTPortalJob, -// new FetchDeliveryListFromVTPortalJob -// ])->dispatch(); + FetchWarehouseReceiveListFromVTPortalJob::withChain([ + new FetchLoadedContainersFromVTPortalJob, + new FetchPackingListFromVTPortalJob, + new FetchContainersStatusUpdateFromVTPortalJob, + new FetchDeliveryListFromVTPortalJob + ])->dispatch(); } } From 0a32af0dabbffae821d261925a0ef282e2e0ddb2 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:07:10 +0800 Subject: [PATCH 32/61] regenerate customers marking --- routes/web.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index da4792e8..d4b6d6d8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,6 @@ name('order.qr.download'); -Route::get('/test', 'TestController@test')->name('test'); \ No newline at end of file +Route::get('/test', function(){ + $companyConnections = CompanyConnection::all(); + foreach ($companyConnections as $connection){ + $company = $connection->invitee; + $oldCompany = \App\Models\OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); + if ($oldCompany){ + $marking = explode("CIEF/", $oldCompany->marking); + $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); + $connection->invitee_reference = $marking; + + } else { + $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); + } + + $connection->save(); + } +})->name('test'); \ No newline at end of file From 94cf4dee1b72c959c83190c6cd848b24beb4e760 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:08:35 +0800 Subject: [PATCH 33/61] regenerate customers marking --- routes/web.php | 1 + 1 file changed, 1 insertion(+) diff --git a/routes/web.php b/routes/web.php index d4b6d6d8..946b9514 100644 --- a/routes/web.php +++ b/routes/web.php @@ -69,6 +69,7 @@ Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download Route::get('/test', function(){ $companyConnections = CompanyConnection::all(); + dd($companyConnections); foreach ($companyConnections as $connection){ $company = $connection->invitee; $oldCompany = \App\Models\OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); From 0255b39f4bd1376cbdb60b994fadf804497ef1cd Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:09:33 +0800 Subject: [PATCH 34/61] regenerate customers marking --- routes/web.php | 1 - 1 file changed, 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 946b9514..d4b6d6d8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -69,7 +69,6 @@ Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download Route::get('/test', function(){ $companyConnections = CompanyConnection::all(); - dd($companyConnections); foreach ($companyConnections as $connection){ $company = $connection->invitee; $oldCompany = \App\Models\OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); From 64ab158991ec7f5c33fd7e5618cd5eafb46c7705 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:12:17 +0800 Subject: [PATCH 35/61] regenerate customers marking --- routes/web.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index d4b6d6d8..5a4192fd 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,7 @@ use App\Classes\General\Services\GeneratesInitials; use App\Models\CompanyConnection; +use App\Models\OldCompany; use App\Models\Order; use Illuminate\Support\Facades\Route; @@ -68,10 +69,11 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ + dd(count(OldCompany::all())); $companyConnections = CompanyConnection::all(); foreach ($companyConnections as $connection){ $company = $connection->invitee; - $oldCompany = \App\Models\OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); + $oldCompany = OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); if ($oldCompany){ $marking = explode("CIEF/", $oldCompany->marking); $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); From 46bfe78b777f0af40f4ec5db8962ccd68591091e Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:23:13 +0800 Subject: [PATCH 36/61] regenerate customers marking --- routes/web.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 5a4192fd..f3e69c7c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -69,7 +69,11 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - dd(count(OldCompany::all())); + try { + OldCompany::all(); + } catch (Exception $exception){ + dd($exception); + } $companyConnections = CompanyConnection::all(); foreach ($companyConnections as $connection){ $company = $connection->invitee; From 514364bb08e5884ace43442af90ac40b59960a56 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:35:45 +0800 Subject: [PATCH 37/61] regenerate customers marking --- routes/web.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/routes/web.php b/routes/web.php index f3e69c7c..07539497 100644 --- a/routes/web.php +++ b/routes/web.php @@ -69,11 +69,7 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - try { - OldCompany::all(); - } catch (Exception $exception){ - dd($exception); - } + $companyConnections = CompanyConnection::all(); foreach ($companyConnections as $connection){ $company = $connection->invitee; From 15650f53adea527c495364b4ed3ebbeda8c7c1d8 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:56:52 +0800 Subject: [PATCH 38/61] regenerate customers marking --- routes/web.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 07539497..07749dfc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use App\Classes\General\Services\GeneratesInitials; use App\Models\CompanyConnection; use App\Models\OldCompany; use App\Models\Order; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Route; /* @@ -69,7 +70,11 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - + try { + DB::connection('old_izyim_db')->getDatabaseName(); + } catch (Exception $exception){ + dd($exception); + } $companyConnections = CompanyConnection::all(); foreach ($companyConnections as $connection){ $company = $connection->invitee; From 06db3ddf7bf4b9e5739b0109c0b9860e92275c5f Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:57:50 +0800 Subject: [PATCH 39/61] regenerate customers marking --- routes/web.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 07749dfc..d3301522 100644 --- a/routes/web.php +++ b/routes/web.php @@ -71,7 +71,8 @@ Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download Route::get('/test', function(){ try { - DB::connection('old_izyim_db')->getDatabaseName(); + $databesname = DB::connection('old_izyim_db')->getDatabaseName(); + dd($databesname); } catch (Exception $exception){ dd($exception); } From 53575cf59a5346a5a99ceed5f135698e85dd122e Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 16:58:49 +0800 Subject: [PATCH 40/61] regenerate customers marking --- routes/web.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/routes/web.php b/routes/web.php index d3301522..d336c90d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -70,12 +70,8 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - try { - $databesname = DB::connection('old_izyim_db')->getDatabaseName(); - dd($databesname); - } catch (Exception $exception){ - dd($exception); - } + + dd(\App\Models\OldOrders::first()); $companyConnections = CompanyConnection::all(); foreach ($companyConnections as $connection){ $company = $connection->invitee; From fae47f4a759eb457df6f6c93c759abcfad83e19e Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 17:52:10 +0800 Subject: [PATCH 41/61] regenerate customers marking --- routes/web.php | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/routes/web.php b/routes/web.php index d336c90d..0fd86102 100644 --- a/routes/web.php +++ b/routes/web.php @@ -70,21 +70,25 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - - dd(\App\Models\OldOrders::first()); - $companyConnections = CompanyConnection::all(); - foreach ($companyConnections as $connection){ - $company = $connection->invitee; - $oldCompany = OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); - if ($oldCompany){ - $marking = explode("CIEF/", $oldCompany->marking); - $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); - $connection->invitee_reference = $marking; - - } else { - $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); - } - - $connection->save(); + $connection = mysqli_connect(env('DB_HOST_IZYIM'), env('DB_USERNAME_IZYIM'), env('DB_PASSWORD_IZYIM'), env('DB_DATABASE_IZYIM')); + if ($connection->connect_error) { + die("Connection failed: " . $connection->connect_error); } + die("Connected successfully"); + +// $companyConnections = CompanyConnection::all(); +// foreach ($companyConnections as $connection){ +// $company = $connection->invitee; +// $oldCompany = OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); +// if ($oldCompany){ +// $marking = explode("CIEF/", $oldCompany->marking); +// $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); +// $connection->invitee_reference = $marking; +// +// } else { +// $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); +// } +// +// $connection->save(); +// } })->name('test'); \ No newline at end of file From bf0d61c862cc72b740cce28ea67d6c94ce0b319d Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 18:31:25 +0800 Subject: [PATCH 42/61] regenerate customers marking --- config/database.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/database.php b/config/database.php index 6faebed6..4e8bc250 100644 --- a/config/database.php +++ b/config/database.php @@ -65,12 +65,12 @@ return [ 'old_izyim_db' => [ 'driver' => 'mysql', - 'url' => env('DATABASE_URL_IZYIM'), - 'host' => env('DB_HOST_IZYIM', '127.0.0.1'), - 'port' => env('DB_PORT_IZYIM', '3306'), + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE_IZYIM', 'forge'), - 'username' => env('DB_USERNAME_IZYIM', 'forge'), - 'password' => env('DB_PASSWORD_IZYIM', ''), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET_IZYIM', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', From aa210c0b6f453dba0f16bef8bd0f1a3c10ea1891 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 18:32:02 +0800 Subject: [PATCH 43/61] regenerate customers marking --- routes/web.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/routes/web.php b/routes/web.php index 0fd86102..9e3ce07a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -70,11 +70,7 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - $connection = mysqli_connect(env('DB_HOST_IZYIM'), env('DB_USERNAME_IZYIM'), env('DB_PASSWORD_IZYIM'), env('DB_DATABASE_IZYIM')); - if ($connection->connect_error) { - die("Connection failed: " . $connection->connect_error); - } - die("Connected successfully"); + dd(OldCompany::all()); // $companyConnections = CompanyConnection::all(); // foreach ($companyConnections as $connection){ From a31d7b7b8ba533db6c8abfaaf04ccb2eb2ac7d17 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 18:54:01 +0800 Subject: [PATCH 44/61] regenerate customers marking --- routes/web.php | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/routes/web.php b/routes/web.php index 9e3ce07a..76198201 100644 --- a/routes/web.php +++ b/routes/web.php @@ -70,21 +70,21 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - dd(OldCompany::all()); -// $companyConnections = CompanyConnection::all(); -// foreach ($companyConnections as $connection){ -// $company = $connection->invitee; -// $oldCompany = OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); -// if ($oldCompany){ -// $marking = explode("CIEF/", $oldCompany->marking); -// $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); -// $connection->invitee_reference = $marking; -// -// } else { -// $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); -// } -// + $companyConnections = CompanyConnection::all(); + foreach ($companyConnections as $connection){ + $company = $connection->invitee; + $oldCompany = OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); + if ($oldCompany){ + $marking = explode("CIEF/", $oldCompany->marking); + $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); + $connection->invitee_reference = $marking; + + } else { + $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); + dump($connection->invitee_reference); + } + // $connection->save(); -// } + } })->name('test'); \ No newline at end of file From a85aeb00d7c3879b5f0e989e4844b398e8c99818 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 18:55:12 +0800 Subject: [PATCH 45/61] regenerate customers marking --- routes/web.php | 1 + 1 file changed, 1 insertion(+) diff --git a/routes/web.php b/routes/web.php index 76198201..aec0a892 100644 --- a/routes/web.php +++ b/routes/web.php @@ -79,6 +79,7 @@ Route::get('/test', function(){ $marking = explode("CIEF/", $oldCompany->marking); $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); $connection->invitee_reference = $marking; + dump($connection->invitee_reference); } else { $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); From 414a0421993789c1d775d390de452f44124f81c6 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 18:56:14 +0800 Subject: [PATCH 46/61] regenerate customers marking --- routes/web.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/routes/web.php b/routes/web.php index aec0a892..97b74770 100644 --- a/routes/web.php +++ b/routes/web.php @@ -79,13 +79,10 @@ Route::get('/test', function(){ $marking = explode("CIEF/", $oldCompany->marking); $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); $connection->invitee_reference = $marking; - dump($connection->invitee_reference); - } else { $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); - dump($connection->invitee_reference); } -// $connection->save(); + $connection->save(); } })->name('test'); \ No newline at end of file From 7f0236d8d5255308d934c99d4fcdd6642f362806 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 19:14:37 +0800 Subject: [PATCH 47/61] regenerate customers marking --- .../Addresses/Services/CleansOldAddress.php | 8 +++++--- routes/web.php | 20 ++++++------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/app/Classes/Modules/Addresses/Services/CleansOldAddress.php b/app/Classes/Modules/Addresses/Services/CleansOldAddress.php index c23db315..90fad41c 100644 --- a/app/Classes/Modules/Addresses/Services/CleansOldAddress.php +++ b/app/Classes/Modules/Addresses/Services/CleansOldAddress.php @@ -35,15 +35,17 @@ class CleansOldAddress } - private function cleanAddress($address, $district, $postcode){ - $address = str_replace('Malaysia', '', str_replace('malaysia', '', $address)); + public function cleanAddress($address, $district, $postcode){ + $address = str_replace('Malaysia', '', str_replace('malaysia', '', str_replace('MALAYSIA', '', $address))); $address = str_replace($district->state->name, '',str_replace($district->name, '', $address)); + $address = str_replace(strtolower($district->state->name), '',str_replace(strtolower($district->name), '', $address)); + $address = str_replace(strtoupper($district->state->name), '',str_replace(strtoupper($district->name), '', $address)); $address = str_replace($postcode, '', $address); $address = str_replace(', ,', ',', str_replace(', ,', ',', str_replace(', ,', ',', $address))); $address = str_replace(',', ', ', $address); $address = preg_replace('!\s+!', ' ', $address); $address = preg_replace("/,+/", ",", $address); - return rtrim(rtrim(rtrim($address), ',')); + return rtrim(rtrim(rtrim(rtrim($address, '.')), ',')); } diff --git a/routes/web.php b/routes/web.php index 97b74770..3d82d779 100644 --- a/routes/web.php +++ b/routes/web.php @@ -70,19 +70,11 @@ Route::get('/customer/{marking}', function ($marking) { Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download')->name('order.qr.download'); Route::get('/test', function(){ - - $companyConnections = CompanyConnection::all(); - foreach ($companyConnections as $connection){ - $company = $connection->invitee; - $oldCompany = OldCompany::where('name', 'LIKE', '%'.$company->name.'%')->first(); - if ($oldCompany){ - $marking = explode("CIEF/", $oldCompany->marking); - $marking = str_replace(' ', '', str_replace('/', '', $marking[1])); - $connection->invitee_reference = $marking; - } else { - $connection->invitee_reference = mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(); - } - - $connection->save(); + $addresses = \App\Models\Address::all(); + foreach ($addresses as $address){ + dump((new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_one, $address->district, $address->postcode)); +// $address->street_one = (new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_one, $address->district, $address->postcode); +// $address->street_two = (new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_two, $address->district, $address->postcode); +// $address->save(); } })->name('test'); \ No newline at end of file From 278145e211e932f97d0554012d6162ad607a19cd Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 30 Aug 2021 19:16:14 +0800 Subject: [PATCH 48/61] regenerate customers marking --- routes/web.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/routes/web.php b/routes/web.php index 3d82d779..0281ac90 100644 --- a/routes/web.php +++ b/routes/web.php @@ -72,9 +72,8 @@ Route::get('/order/{id}/download', 'Orders\DownloadOrderQrPdfController@download Route::get('/test', function(){ $addresses = \App\Models\Address::all(); foreach ($addresses as $address){ - dump((new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_one, $address->district, $address->postcode)); -// $address->street_one = (new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_one, $address->district, $address->postcode); -// $address->street_two = (new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_two, $address->district, $address->postcode); -// $address->save(); + $address->street_one = (new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_one, $address->district, $address->postcode); + $address->street_two = (new \App\Classes\Modules\Addresses\Services\CleansOldAddress())->cleanAddress($address->street_two, $address->district, $address->postcode); + $address->save(); } })->name('test'); \ No newline at end of file From d9f3ad74cac40e7ebfc7e6d8d5dfbad455787269 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:18:57 +0800 Subject: [PATCH 49/61] change registration loading section --- resources/views/pages/accounts/login.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/pages/accounts/login.blade.php b/resources/views/pages/accounts/login.blade.php index 789d3a68..78d275b7 100644 --- a/resources/views/pages/accounts/login.blade.php +++ b/resources/views/pages/accounts/login.blade.php @@ -61,7 +61,7 @@
- +
From c651b6ca09d4796c0481d8cde1fb749474eb1990 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:22:28 +0800 Subject: [PATCH 50/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 5a166ae4..161a09af 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -115,7 +115,7 @@ class CreateCustomerLogic extends AbstractControllerLogic { /** @var User $user */ $user = $this->createUserProcessor->execute($request, RoleTypes::USER, !App::environment(['production']) ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); - +dd($user); /** @var Company $company */ $company = $this->createCompanyProcessor->execute($request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), $request->input('type'), ApprovalStatus::PENDING_SUBMISSION); From e8a78125837987271e62c1b42c61bfd0b342f157 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:23:19 +0800 Subject: [PATCH 51/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 161a09af..856735a9 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -115,7 +115,7 @@ class CreateCustomerLogic extends AbstractControllerLogic { /** @var User $user */ $user = $this->createUserProcessor->execute($request, RoleTypes::USER, !App::environment(['production']) ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); -dd($user); + /** @var Company $company */ $company = $this->createCompanyProcessor->execute($request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), $request->input('type'), ApprovalStatus::PENDING_SUBMISSION); @@ -130,6 +130,7 @@ dd($user); $connection = $this->createsCompanyConnection->execute($connectionObject); + dd($connection); $this->approvesCompanyConnection->execute($connection); $Object = new EmploymentObject($companyModule, $user); From d0a9f1aa9fc70fb985fd72b82e364296e9e82ba0 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:23:54 +0800 Subject: [PATCH 52/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 856735a9..c78962ea 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -130,7 +130,6 @@ class CreateCustomerLogic extends AbstractControllerLogic $connection = $this->createsCompanyConnection->execute($connectionObject); - dd($connection); $this->approvesCompanyConnection->execute($connection); $Object = new EmploymentObject($companyModule, $user); @@ -140,7 +139,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->uploadIdentityDocumentProcessor->execute($request, $company); $this->generateEmailVerificationAttemptProcessor->execute($user); - +dd('test'); return $this->response($this->authenticationProcessor->execute($request)); } } From 4246795e1400deaa426ad2c77cea198b99141a37 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:24:29 +0800 Subject: [PATCH 53/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index c78962ea..e9f5b77b 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -137,9 +137,9 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->assignEmployeeProcessor->execute($Object); $this->uploadIdentityDocumentProcessor->execute($request, $company); - + dd('test'); $this->generateEmailVerificationAttemptProcessor->execute($user); -dd('test'); + return $this->response($this->authenticationProcessor->execute($request)); } } From 5ca3a927c170031baee412d2ed9c2bfce4f49c95 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:26:07 +0800 Subject: [PATCH 54/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index e9f5b77b..c0b9552a 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -135,9 +135,9 @@ class CreateCustomerLogic extends AbstractControllerLogic $Object = new EmploymentObject($companyModule, $user); $this->assignEmployeeProcessor->execute($Object); - - $this->uploadIdentityDocumentProcessor->execute($request, $company); dd('test'); + $this->uploadIdentityDocumentProcessor->execute($request, $company); + $this->generateEmailVerificationAttemptProcessor->execute($user); return $this->response($this->authenticationProcessor->execute($request)); From e11cc64f89b296be2f9f7f71cce2e8919009567f Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:27:47 +0800 Subject: [PATCH 55/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 2 +- .../Documents/Processors/UploadIdentityDocumentProcessor.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index c0b9552a..5a166ae4 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -135,7 +135,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $Object = new EmploymentObject($companyModule, $user); $this->assignEmployeeProcessor->execute($Object); - dd('test'); + $this->uploadIdentityDocumentProcessor->execute($request, $company); $this->generateEmailVerificationAttemptProcessor->execute($user); diff --git a/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php b/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php index 6f8032b1..63d0eff2 100644 --- a/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php +++ b/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php @@ -55,6 +55,7 @@ class UploadIdentityDocumentProcessor $document = $this->createsDocument->execute($company, $object); $this->createsFiles->execute($document, $object); + dd('file created'); $this->updatesCompanyStatus->execute($company, ApprovalStatus::PENDING_VERIFICATION); } From 388751272151082d4a85abe2cc75148a5d5fab8a Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:29:35 +0800 Subject: [PATCH 56/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 4 ++-- .../Documents/Processors/UploadIdentityDocumentProcessor.php | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 5a166ae4..229691aa 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -117,7 +117,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $user = $this->createUserProcessor->execute($request, RoleTypes::USER, !App::environment(['production']) ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); /** @var Company $company */ - $company = $this->createCompanyProcessor->execute($request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), $request->input('type'), ApprovalStatus::PENDING_SUBMISSION); + $company = $this->createCompanyProcessor->execute($request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), $request->input('type'), ApprovalStatus::PENDING_VERIFICATION); $contactObject = new ContactObject($request->input('name'), $request->input('phone'), $request->input('contact_email'), $request->input('wechat_id')); @@ -139,7 +139,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->uploadIdentityDocumentProcessor->execute($request, $company); $this->generateEmailVerificationAttemptProcessor->execute($user); - +dd('created successfully'); return $this->response($this->authenticationProcessor->execute($request)); } } diff --git a/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php b/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php index 63d0eff2..ce5c645e 100644 --- a/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php +++ b/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php @@ -55,9 +55,7 @@ class UploadIdentityDocumentProcessor $document = $this->createsDocument->execute($company, $object); $this->createsFiles->execute($document, $object); - dd('file created'); - $this->updatesCompanyStatus->execute($company, ApprovalStatus::PENDING_VERIFICATION); } } \ No newline at end of file From 59730e21d2c859eaefc4c8f66730aa32108f7591 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:32:35 +0800 Subject: [PATCH 57/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 229691aa..ae0c753e 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -137,9 +137,9 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->assignEmployeeProcessor->execute($Object); $this->uploadIdentityDocumentProcessor->execute($request, $company); - + dd('created successfully'); $this->generateEmailVerificationAttemptProcessor->execute($user); -dd('created successfully'); + return $this->response($this->authenticationProcessor->execute($request)); } } From 0a89451889d328b9836500ca6af6b97b9853fb85 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:33:34 +0800 Subject: [PATCH 58/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index ae0c753e..28ca665b 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -137,9 +137,9 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->assignEmployeeProcessor->execute($Object); $this->uploadIdentityDocumentProcessor->execute($request, $company); - dd('created successfully'); - $this->generateEmailVerificationAttemptProcessor->execute($user); +// $this->generateEmailVerificationAttemptProcessor->execute($user); +dd('created successfully'); return $this->response($this->authenticationProcessor->execute($request)); } } From 8363b8ca1015e621ff783e49831f7981ac4131a9 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:54:30 +0800 Subject: [PATCH 59/61] debug registration --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 4 ++-- .../Documents/Processors/UploadIdentityDocumentProcessor.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 28ca665b..d9153756 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -117,7 +117,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $user = $this->createUserProcessor->execute($request, RoleTypes::USER, !App::environment(['production']) ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION); /** @var Company $company */ - $company = $this->createCompanyProcessor->execute($request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), $request->input('type'), ApprovalStatus::PENDING_VERIFICATION); + $company = $this->createCompanyProcessor->execute($request->input('type') === CompanyType::COMPANY_BUSINESS ? $request->input('company_name') : $request->input('name'), $request->input('type'), ApprovalStatus::PENDING_SUBMISSION); $contactObject = new ContactObject($request->input('name'), $request->input('phone'), $request->input('contact_email'), $request->input('wechat_id')); @@ -139,7 +139,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->uploadIdentityDocumentProcessor->execute($request, $company); // $this->generateEmailVerificationAttemptProcessor->execute($user); -dd('created successfully'); +dd('success'); return $this->response($this->authenticationProcessor->execute($request)); } } diff --git a/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php b/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php index ce5c645e..6f8032b1 100644 --- a/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php +++ b/app/Classes/Modules/Documents/Processors/UploadIdentityDocumentProcessor.php @@ -56,6 +56,7 @@ class UploadIdentityDocumentProcessor $this->createsFiles->execute($document, $object); + $this->updatesCompanyStatus->execute($company, ApprovalStatus::PENDING_VERIFICATION); } } \ No newline at end of file From 5083ee83ada311ed381a2210521fe6893ba66f92 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 15:55:15 +0800 Subject: [PATCH 60/61] disable email verification temp --- .../Modules/Accounts/ControllersLogic/CreateCustomerLogic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index d9153756..9cb48b0f 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -139,7 +139,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->uploadIdentityDocumentProcessor->execute($request, $company); // $this->generateEmailVerificationAttemptProcessor->execute($user); -dd('success'); + return $this->response($this->authenticationProcessor->execute($request)); } } From 7d47ac14d0e598bc4f2ded619015a1e8bb25438d Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 1 Sep 2021 17:15:06 +0800 Subject: [PATCH 61/61] fix reschedule containers etd bug --- .../FetchContainersStatusUpdateFromVTPortalProcessor.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php index 18599d95..a50bbfdf 100644 --- a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php +++ b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php @@ -107,11 +107,14 @@ class FetchContainersStatusUpdateFromVTPortalProcessor if($delayDate){ $delayDate = Carbon::parse($delayDate); $transport = $container->transports()->first(); - if(!$transport->schedules()->where('eta', '=', $delayDate)){ + $schedule = $transport->schedules()->where('eta', '=', $delayDate)->first(); + $etd = $delayDate->subDays(5); + if(!$schedule){ + $etd = $schedule->etd; $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); } - $this->createsSchedule->execute($transport, new ScheduleObject($delayDate->subDays(5), $delayDate, ApprovalStatus::APPROVED)); + $this->createsSchedule->execute($transport, new ScheduleObject($etd, $delayDate, ApprovalStatus::APPROVED)); } if($containerStatus === 'Unstuffing'){