From 8f0d1e6fdfd4d0f0fbcd954c280338eb6fbbe8c7 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Wed, 30 Mar 2022 00:19:22 +0800 Subject: [PATCH] fix do update bug --- .../UpdateDoFromVTPortalProcessor.php | 30 +++---------- .../UpdateDoFromYDPortalProcessor.php | 43 +++++++++---------- .../UpdatePackingListStatusLogic.php | 11 ++--- 3 files changed, 33 insertions(+), 51 deletions(-) diff --git a/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php b/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php index 18f7b5f7..500964a5 100644 --- a/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php +++ b/app/Classes/Modules/Orders/Processors/UpdateDoFromVTPortalProcessor.php @@ -2,27 +2,12 @@ namespace App\Classes\Modules\Orders\Processors; -use App\Classes\Exceptions\InternalServerErrorException; use App\Classes\Modules\Orders\Services\FetchesDataFromVTPortal; use App\Classes\Modules\Addresses\Services\FetchesAddress; -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\Modules\Unity\Services\UpdatesContractObligation; 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 App\Models\PackingList; -use App\Models\Transport; -use Carbon\Carbon; use GuzzleHttp\Exception\GuzzleException; -use Illuminate\Support\Facades\Log; - -use Illuminate\Http\Request; - class UpdateDoFromVTPortalProcessor { /** @var FetchesDataFromVTPortal */ @@ -43,19 +28,18 @@ class UpdateDoFromVTPortalProcessor } /** - * @param $address + * @param PackingList $packing_list * @return array * @throws GuzzleException */ - public function execute($address) { + public function execute(PackingList $packing_list) { if(!app()->environment(['production'])){ return []; } try { - $order = $address->owner()->orderBy('id', 'desc')->first(); - $packing_list = $order->packingLists()->orderBy('id', 'desc')->first(); + $address= $packing_list->owner->addresses()->where('status', ApprovalStatus::APPROVED)->first(); if ($packing_list) { $contact = $address->contacts()->first(); @@ -67,16 +51,17 @@ class UpdateDoFromVTPortalProcessor $status = 'On Hold'; - if (in_array($packing_list->status, [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { + if (in_array($packing_list->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { $status = 'Release'; } -dd($packing_list->status); + $vt_do = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"Do","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"Filter": ["FullMarking:$contains$%js%\"' . $order->reference . '\"\u0000"]}}'), ''); $vt_do = $this->fetchesDataFRomVTPortal->getResponseBody($vt_do); if ($vt_do) { foreach ($vt_do->Rows as $key => $row) { + $vt_do_update = $this->fetchesDataFRomVTPortal->clientRequest( 'http://portal.vtnation.com.my/Services/DataControllerService.asmx/Execute', 'POST', @@ -141,8 +126,7 @@ dd($packing_list->status); } } catch (\Exception $exception){ - dd($exception); - return []; + throw new InternalServerErrorException('failed to approve address due to an error related to YD portal'); } } diff --git a/app/Classes/Modules/Orders/Processors/UpdateDoFromYDPortalProcessor.php b/app/Classes/Modules/Orders/Processors/UpdateDoFromYDPortalProcessor.php index 1404f149..9e9e6fe6 100644 --- a/app/Classes/Modules/Orders/Processors/UpdateDoFromYDPortalProcessor.php +++ b/app/Classes/Modules/Orders/Processors/UpdateDoFromYDPortalProcessor.php @@ -8,6 +8,7 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\PackingListType; +use App\Models\PackingList; use Illuminate\Support\Facades\Log; class UpdateDoFromYDPortalProcessor @@ -30,36 +31,34 @@ class UpdateDoFromYDPortalProcessor } /** - * @param $address + * @param PackingList $packingList * @return void * @throws InternalServerErrorException */ - public function execute($address) { + public function execute(PackingList $packingList) { + if(!app()->environment(['production'])){ + return; + } + try { - $order = $address->owner()->orderBy('id', 'desc')->first(); - $packing_lists = $order->packingLists() - ->where('type', PackingListType::SHIPPING_PACKING_LIST) - ->where('status', '!=', ApprovalStatus::SUSPENDED) - ->orderBy('id', 'desc')->get(); + $address = $packingList->owner->addresses()->where('status', ApprovalStatus::APPROVED)->first(); + if (!in_array($packingList->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { + return; + } - foreach ($packing_lists as $key => $row) { - if ($row->status === ApprovalStatus::SUSPENDED) { - continue; - } + $contact = $address->contacts()->first(); + $remark = $address->remarks()->first(); - $contact = $address->contacts()->first(); - $remark = $address->remarks()->first(); + $phone = $contact ? $contact->phone : null; + $reference = $contact ? $contact->reference : null; + $remark = $remark ? $remark->content : 'URGENT!!! PLEASE CALL BEFORE ONE DAY DELIVERY.'; - $phone = $contact ? $contact->phone : null; - $reference = $contact ? $contact->reference : null; - $remark = $remark ? $remark->content : 'URGENT!!! PLEASE CALL BEFORE ONE DAY DELIVERY.'; - - $this->fetchesDataFRomYDPortal->clientRequest( - 'http://www.yd-wl.com/api/UpdateOrderAddress.ashx', - 'POST', + $this->fetchesDataFRomYDPortal->clientRequest( + 'http://www.yd-wl.com/api/UpdateOrderAddress.ashx', + 'POST', [ - 'expressno' => $row->reference, + 'expressno' => $packingList->reference, 'customers_name' => $reference, 'cellphone' => $phone, 'postcode' => $address->postcode, @@ -68,8 +67,6 @@ class UpdateDoFromYDPortalProcessor ]); - } - } catch (\Exception $exception){ throw new InternalServerErrorException('failed to approve address due to an error related to YD portal'); } diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php index 19b70a55..306866aa 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/UpdatePackingListStatusLogic.php @@ -14,6 +14,7 @@ use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Http\Resources\PackingListResource; +use App\Models\PackingList; use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -70,16 +71,16 @@ class UpdatePackingListStatusLogic extends AbstractControllerLogic { $packingList = $this->fetchesPackingList->execute(['id' => $request->route('id')]); - $packing_list = $this->updatesPackingListStatus->execute($packingList, $request->route('status')); - $address = $packing_list->owner()->first()->addresses()->where('status', ApprovalStatus::APPROVED)->first(); + /** @var PackingList $packingList */ + $packingList = $this->updatesPackingListStatus->execute($packingList, $request->route('status')); // $appointee = $address->owner->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_FREIGHT_FORWARDER)->first()->appointee->id; - $this->updateDoFromVTPortalProcessor->execute($address); - $this->updateDoFromYDPortalProcessor->execute($address); + $this->updateDoFromVTPortalProcessor->execute($packingList); + $this->updateDoFromYDPortalProcessor->execute($packingList); - return $this->resourceResponse(new PackingListResource($packing_list)); + return $this->resourceResponse(new PackingListResource($packingList)); } }