From 22aac2df0415ee81eebc0e6895cd4501bee6486a Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Wed, 13 Nov 2024 10:54:17 +0800 Subject: [PATCH] Laravel Vapor - YD API integration code rewrite to fix eta/etd --- ...chContainersUpdatesYdPortalV3Processor.php | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/Classes/Modules/PackingLists/Processors/V3/FetchContainersUpdatesYdPortalV3Processor.php b/app/Classes/Modules/PackingLists/Processors/V3/FetchContainersUpdatesYdPortalV3Processor.php index 44a5ab8c..10f21454 100644 --- a/app/Classes/Modules/PackingLists/Processors/V3/FetchContainersUpdatesYdPortalV3Processor.php +++ b/app/Classes/Modules/PackingLists/Processors/V3/FetchContainersUpdatesYdPortalV3Processor.php @@ -141,7 +141,7 @@ class FetchContainersUpdatesYdPortalV3Processor } if($delayETADate){ - Log::info('YDContainerUpdates delayDate ' . $delayETADate); + Log::info('YDContainerUpdates delayETADate ' . $delayETADate); $transport = $container->transports()->first(); Log::info('YDContainerUpdates transport ' . json_encode($transport)); if(!$transport->schedules()->whereDate('eta', '>=', $delayETADate)->first()) { //If no record @@ -162,7 +162,28 @@ class FetchContainersUpdatesYdPortalV3Processor } } else{ - Log::info('YDContainerUpdates NO DELAY'); + Log::info('YDContainerUpdates NO DELAY (ETA)'); + } + } + else if($delayETDDate){ + //Runs when delayETDDate is available but NOT delayETADate + Log::info('YDContainerUpdates delayETDDate ' . $delayETDDate); + $transport = $container->transports()->first(); + Log::info('YDContainerUpdates transport ' . json_encode($transport)); + if(!$transport->schedules()->whereDate('etd', '>=', $delayETDDate)->first()) { //If no record + $eta = $delayETDDate->copy()->addDays(5); + $transport->schedules()->update(['status' => ApprovalStatus::EXPIRED]); + $this->createsSchedule->execute($transport, new ScheduleObject($delayETDDate, $eta, ApprovalStatus::APPROVED)); + foreach ($container->packingLists as $packingList){ + if(!($packingList->owner instanceof Order)) continue; + $user = $packingList->owner->companyModule->employees()->first(); + if(app()->environment(['production'])) { + $user->notify(new ShipmentRescheduleEmail($user, $packingList)); + } + } + } + else{ + Log::info('YDContainerUpdates NO DELAY (ETD)'); } }