Vt sync update

This commit is contained in:
glovetleong
2021-12-13 21:23:04 +08:00
parent 992e5b0008
commit 926cb61ca3
4 changed files with 256 additions and 9 deletions
@@ -6,6 +6,7 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress;
use App\Classes\Modules\Orders\Standards\Rules\CanApproveChangeOrderAddress;
use App\Classes\Modules\Orders\Services\UpdatesOrdersAddress;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
use Illuminate\Http\Request;
@@ -26,11 +27,12 @@ class ApproveChangeOrderAddressProcessor
* @param FetchesAddress $fetchesAddress
* @param UpdatesOrdersAddress $updatesOrdersAddress
*/
public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesAddress $fetchesAddress, UpdatesOrdersAddress $updatesOrdersAddress)
public function __construct(CanApproveChangeOrderAddress $canApproveChangeOrderAddress, FetchesAddress $fetchesAddress, UpdatesOrdersAddress $updatesOrdersAddress, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor)
{
$this->canApproveChangeOrderAddress = $canApproveChangeOrderAddress;
$this->fetchesAddress = $fetchesAddress;
$this->updatesOrdersAddress = $updatesOrdersAddress;
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
}
@@ -43,7 +45,6 @@ class ApproveChangeOrderAddressProcessor
*/
public function execute(Request $request)
{
$status = (int) $request->route('status');
$this->canApproveChangeOrderAddress->passes();
@@ -54,7 +55,9 @@ class ApproveChangeOrderAddressProcessor
$address->owner->addresses()->update(['status' => ApprovalStatus::EXPIRED]);
}
$this->updatesOrdersAddress->execute($address, $status);
$address = $this->updatesOrdersAddress->execute($address, $status);
$vt_do_update = $this->updateDoFromVTPortalProcessor->execute($address);
return $address;
}
@@ -9,6 +9,10 @@ use App\Classes\Modules\Addresses\Services\FetchesAddress;
use App\Classes\Modules\Addresses\Services\DeletesAddress;
use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject;
use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject;
use App\Classes\Modules\Contacts\Processors\CreateContactProcessor;
use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor;
use Illuminate\Http\Request;
@@ -29,6 +33,12 @@ class RequestChangeOrderAddressProcessor
/** @var DeletesAddress */
private $deletesAddress;
/** @var CreateContactProcessor */
private $createContactProcessor;
/** @var CreateRemarkProcessor */
private $createRemarkProcessor;
/**
* ChangeOrderAddressProcessor constructor.
* @param FetchesOrder $fetchesOrder
@@ -36,7 +46,7 @@ class RequestChangeOrderAddressProcessor
* @param FetchesAddress $fetchesAddress
* @param DeletesAddress $deletesAddress
*/
public function __construct(CanChangeOrderAddress $canChangeOrderAddress, FetchesOrder $fetchesOrder, CreatesAddress $createsAddress, FetchesAddress $fetchesAddress, DeletesAddress $deletesAddress)
public function __construct(CanChangeOrderAddress $canChangeOrderAddress, FetchesOrder $fetchesOrder, CreatesAddress $createsAddress, FetchesAddress $fetchesAddress, DeletesAddress $deletesAddress, CreateContactProcessor $createContactProcessor, CreateRemarkProcessor $createRemarkProcessor)
{
$this->canChangeOrderAddress = $canChangeOrderAddress;
@@ -44,12 +54,13 @@ class RequestChangeOrderAddressProcessor
$this->createsAddress = $createsAddress;
$this->fetchesAddress = $fetchesAddress;
$this->deletesAddress = $deletesAddress;
$this->createContactProcessor = $createContactProcessor;
$this->createRemarkProcessor = $createRemarkProcessor;
}
public function execute(Request $request)
{
$this->canChangeOrderAddress->passes();
$order = $this->fetchesOrder->execute(['id' => $request->get('order_id')]);
@@ -59,7 +70,30 @@ class RequestChangeOrderAddressProcessor
$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, ApprovalStatus::PENDING_VERIFICATION);
$this->createsAddress->execute($order, $addressObject);
$order_address = $this->createsAddress->execute($order, $addressObject);
$contact = $address->contacts()->first();
$contactObject = new ContactObject(
$contact->reference,
$contact->phone,
'',
''
);
if($contactObject->getPhone()){
$order_remark = $this->createContactProcessor->execute($contactObject, $order_address);
}
$remark = $address->remarks()->first();
$remarkObject = new RemarkObject(
$remark->content,
Auth()->user()->id
);
if($remarkObject->getContent()){
$this->createRemarkProcessor->execute($order_address, $remarkObject);
}
return $order;
}
@@ -0,0 +1,202 @@
<?php
namespace App\Classes\Modules\Orders\Processors;
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 */
private $fetchesDataFRomVTPortal;
/** @var FetchesAddress */
private $fetchesAddress;
/**
* FetchDeliveryListFromVTPortalProcessor constructor.
* @param FetchesDataFromVTPortal $fetchesDataFRomVTPortal
* @param CreatesTransport $createsTransport
* @param CreatesSchedule $createsSchedule
* @param UpdatesContractObligation $updatesContractObligations
*/
public function __construct(FetchesDataFromVTPortal $fetchesDataFRomVTPortal, FetchesAddress $fetchesAddress)
{
$this->fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal;
$this->fetchesAddress = $fetchesAddress;
}
/**
* @return array
*/
public function execute($address) {
try {
$order = $address->owner()->orderBy('id', 'desc')->first();
$packing_list = $order->packingLists()->orderBy('id', 'desc')->first();
if ($packing_list) {
$contact = $address->contacts()->first();
$remark = $address->remarks()->first();
$status = 'Release';
if ($packing_list->status == ApprovalStatus::PENDING_VERIFICATION) {
$status = 'Release';
}
else if($packing_list->status == ApprovalStatus::SUSPENDED) {
$status = 'On Hold';
}
$vt_do = $this->fetchesDataFRomVTPortal->clientRequest(
'http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage',
'POST',
json_decode('{
"controller": "Do",
"view": "grid1",
"request": {
"PageIndex": -2,
"PageSize": 10,
"PageOffset": 0,
"SortExpression": "",
"GroupExpression": "",
"Filter": [
"FullMarking:$contains$%js%\"' . $order->reference . '\"\u0000"
],
"ContextKey": "view2",
"FilterIsExternal": true,
"LookupContextFieldName": null,
"LookupContextController": null,
"LookupContextView": null,
"LookupContext": null,
"Inserting": false,
"LastCommandName": null,
"DoesNotRequireData": false,
"LastView": "grid1",
"Tag": null,
"RequiresFirstLetters": false,
"ViewType": "Grid",
"SupportsCaching": true,
"SystemFilter": null,
"RequiresRowCount": true,
"QuickFindHint": null,
"RequiresPivot": false,
"PivotDefinitions": null,
"RequiresMetaData": true
}
}'
), '');
$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',
json_decode('{
"controller": "Do",
"view": "editForm1",
"args": {
"CommandName": "Update",
"CommandArgument": "Save",
"Path": "ag2/a4",
"LastCommandName": "Edit",
"Values": [
{
"Name": "ShippingAddress",
"NewValue": "' . $address->street_one . ' ' . $address->street_two . '",
"Modified": true,
"ReadOnly": false,
"Error": null
},
{
"Name": "Attn",
"NewValue": "' . $contact->reference . '",
"Modified": true,
"ReadOnly": false,
"Error": null
},
{
"Name": "Tel",
"NewValue": "' . $contact->phone . '",
"Modified": true,
"ReadOnly": false,
"Error": null
},
{
"Name": "Status",
"NewValue": "' . $status . '",
"Modified": true,
"ReadOnly": false,
"Error": null
},
{
"Name": "Doremarks",
"NewValue": "' . $remark->content . '",
"Modified": true,
"ReadOnly": false,
"Error": null
},
{
"Name": "ModifiedBy",
"OldValue": "CIEF",
"NewValue": "CIEF",
"Modified": false,
"ReadOnly": false,
"Error": null
},
{
"Name": "DoID",
"OldValue": 1471,
"NewValue": ' . $row[0] . ',
"Modified": false,
"ReadOnly": true,
"Error": null
}
],
"ContextKey": "do",
"Controller": "Do",
"View": "editForm1",
"LastView": "grid1",
"Tag": null,
"Filter": [
"DoID:=%js%' . $row[0] . '",
"ContainerID:=%js%' . $row[1] . '"
],
"SortExpression": "",
"GroupExpression": "",
"SelectedValues": []
}
}'), '');
}
}
}
} catch (\Exception $exception){
Log::error($exception);
}
return [];
}
}
@@ -9,6 +9,7 @@ use App\Classes\Modules\PackingLists\Services\FetchesPackingList;
use App\Classes\Modules\PackingLists\Services\UpdatesPackingListStatus;
use App\Classes\Modules\PackingLists\Standards\Rules\CanUpdatePackingList;
use App\Classes\Modules\PackingLists\DataTransferObjects\PackingListObject;
use App\Classes\Modules\Orders\Processors\UpdateDoFromVTPortalProcessor;
use App\Http\Resources\PackingListResource;
use ErrorException;
use Illuminate\Http\JsonResponse;
@@ -34,15 +35,19 @@ class UpdatePackingListStatusLogic extends AbstractControllerLogic
/** @var UpdatesPackingListStatus */
private $updatesPackingListStatus;
/** @var UpdateDoFromVTPortalProcessor */
private $updateDoFromVTPortalProcessor;
/**
* UpdatePackingListStatusLogic constructor.
* @param FetchesPackingList $fetchesPackingList
* @param UpdatesPackingListStatus $updatesPackingListStatus
*/
public function __construct(FetchesPackingList $fetchesPackingList, UpdatesPackingListStatus $updatesPackingListStatus)
public function __construct(FetchesPackingList $fetchesPackingList, UpdatesPackingListStatus $updatesPackingListStatus, UpdateDoFromVTPortalProcessor $updateDoFromVTPortalProcessor)
{
$this->fetchesPackingList = $fetchesPackingList;
$this->updatesPackingListStatus = $updatesPackingListStatus;
$this->updateDoFromVTPortalProcessor = $updateDoFromVTPortalProcessor;
}
/**
@@ -54,9 +59,12 @@ class UpdatePackingListStatusLogic extends AbstractControllerLogic
{
$packingList = $this->fetchesPackingList->execute(['id' => $request->route('id')]);
$query = $this->updatesPackingListStatus->execute($packingList, $request->route('status'));
$packing_list = $this->updatesPackingListStatus->execute($packingList, $request->route('status'));
$address = $packing_list->owner()->first()->addresses()->first();
return $this->resourceResponse(new PackingListResource($query));
$vt_do_update = $this->updateDoFromVTPortalProcessor->execute($address);
return $this->resourceResponse(new PackingListResource($packing_list));
}
}