diff --git a/app/Classes/Jobs/CurlContainerListJob.php b/app/Classes/Jobs/CurlContainerListJob.php
index abc93c1a..e65a1a18 100644
--- a/app/Classes/Jobs/CurlContainerListJob.php
+++ b/app/Classes/Jobs/CurlContainerListJob.php
@@ -45,7 +45,7 @@ class CurlContainerListJob implements ShouldQueue
$last_two_month = Carbon::now()->subMonth(2)->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":"VCustomercontainer","view":"grid1","request":{"PageIndex":' . $this->page . ',"PageSize":10,"PageOffset":0,"SortExpression":"CreatedOn DESC","GroupExpression":"","Filter":["LoadedTime:<=%js%\"' . $last_two_month . '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}}')]);
+ $res = $client->post('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', [\GuzzleHttp\RequestOptions::JSON => json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":' . $this->page . ',"PageSize":10,"PageOffset":0,"SortExpression":"CreatedOn DESC","GroupExpression":"","Filter":["LoadedTime:<=%js%\"' . $last_two_month . '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());
@@ -63,7 +63,7 @@ class CurlContainerListJob implements ShouldQueue
{
// get latest cookies
$client = new \GuzzleHttp\Client(['cookies' => true]);
- $r = $client->request('GET', 'https://portalvt.azurewebsites.net');
+ $r = $client->request('GET', 'http://portal.vtnation.com.my');
$call_cookie = $client->getConfig('cookies');
$call_cookie = $call_cookie->toArray();
$latest_cookie = [];
@@ -79,7 +79,7 @@ class CurlContainerListJob implements ShouldQueue
'Cookie' => $latest_cookie,
];
$client = new \GuzzleHttp\Client(['headers' => $headers]);
- $res = $client->post('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', [\GuzzleHttp\RequestOptions::JSON => [
+ $res = $client->post('http://portal.vtnation.com.my/Services/DataControllerService.asmx/Login', [\GuzzleHttp\RequestOptions::JSON => [
"username" => "CIEF",
"password" => "0122120880",
"createPersistentCookie" => true,
diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateInvitedCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateInvitedCustomerLogic.php
new file mode 100644
index 00000000..ebd4587e
--- /dev/null
+++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateInvitedCustomerLogic.php
@@ -0,0 +1,105 @@
+ 'Created User',
+ 'message' => 'You have successfully created a new User'
+ ];
+ }
+
+ /** @var CreateUserProcessor */
+ private $createUserProcessor;
+
+ /** @var CreateContactProcessor */
+ private $createContactProcessor;
+
+ /** @var FetchesCompany */
+ private $fetchesCompany;
+
+ /** @var AssignEmployeeProcessor */
+ private $assignEmployeeProcessor;
+
+ /** @var AuthenticationProcessor */
+ private $authenticationProcessor;
+
+
+ /**
+ * CreateInvitedCustomerLogic constructor.
+ * @param CreateUserProcessor $createUserProcessor
+ * @param CreateContactProcessor $createContactProcessor
+ * @param FetchesCompany $fetchesCompany
+ * @param AssignEmployeeProcessor $assignEmployeeProcessor
+ * @param AuthenticationProcessor $authenticationProcessor
+ */
+ public function __construct(CreateUserProcessor $createUserProcessor, CreateContactProcessor $createContactProcessor, FetchesCompany $fetchesCompany, AssignEmployeeProcessor $assignEmployeeProcessor, AuthenticationProcessor $authenticationProcessor)
+ {
+ $this->createUserProcessor = $createUserProcessor;
+ $this->createContactProcessor = $createContactProcessor;
+ $this->fetchesCompany = $fetchesCompany;
+ $this->assignEmployeeProcessor = $assignEmployeeProcessor;
+ $this->authenticationProcessor = $authenticationProcessor;
+ }
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws \App\Classes\Exceptions\AccessForbiddenException
+ * @throws \App\Classes\Exceptions\AccessUnauthorisedException
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ * @throws \App\Classes\Exceptions\RequestValidationException
+ */
+ public function logic(Request $request): JsonResponse
+ {
+ /** @var Company $company */
+ $company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]);
+
+ /** @var CompanyModule $companyModule */
+ $companyModule = $company->companyModules()->first();
+
+ if($companyModule->employees()->exists()){
+ throw new AccessForbiddenException('This company\'s account has been claimed by another user already!');
+ }
+
+ /** @var User $user */
+ $user = $this->createUserProcessor->execute($request, RoleTypes::USER, !App::environment(['production']) ? ApprovalStatus::APPROVED : ApprovalStatus::PENDING_VERIFICATION);
+
+ $contactObject = new ContactObject($request->input('name'), $request->input('phone'), $request->input('contact_email'), $request->input('wechat_id'));
+
+ $this->createContactProcessor->execute($contactObject, $company);
+
+ $Object = new EmploymentObject($companyModule, $user);
+
+ $this->assignEmployeeProcessor->execute($Object);
+
+ return $this->response($this->authenticationProcessor->execute($request));
+ }
+}
diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php
index 0d4b1860..24495752 100644
--- a/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php
+++ b/app/Classes/Modules/Orders/Processors/CreateOrderRolesProcessor.php
@@ -79,6 +79,7 @@ class CreateOrderRolesProcessor
$roleObject = new OrderRoleObject($order, $destinationWarehouse, OrderRoleTypes::DESTINATION_WAREHOUSE);
$this->createsOrderRole->execute($roleObject);
+
$roleObject = new OrderRoleObject($order, $freightForwarder, OrderRoleTypes::LAST_MILE_DELIVERY_DRIVER);
$this->createsOrderRole->execute($roleObject);
diff --git a/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php b/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php
index 6d77abce..0a6ed2b9 100644
--- a/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php
+++ b/app/Classes/Modules/Orders/Services/FetchesDataFromVTPortal.php
@@ -68,7 +68,7 @@ class FetchesDataFromVTPortal
$latest_cookie = [];
$cookieRequest = new \GuzzleHttp\Client(['cookies' => true]);
- $cookieRequest->get('https://portalvt.azurewebsites.net');
+ $cookieRequest->get('http://portal.vtnation.com.my');
foreach ($cookieRequest->getConfig('cookies')->toArray() as $key => $row) {
$latest_cookie[] = $row['Name'] . '=' . $row['Value'];
}
@@ -77,7 +77,7 @@ class FetchesDataFromVTPortal
/** @var $loginRequest */
- $loginRequest = $this->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/Login', 'POST', [
+ $loginRequest = $this->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/Login', 'POST', [
"username" => "CIEF",
"password" => "0122120880",
"createPersistentCookie" => true,
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/AssignPackingListContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/AssignPackingListContainerLogic.php
new file mode 100644
index 00000000..33310711
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/AssignPackingListContainerLogic.php
@@ -0,0 +1,67 @@
+ 'Assign Packing List Container',
+ 'message' => 'You have successfully assign Packing List to Container'
+ ];
+ }
+
+ /** @var FetchesContainer */
+ private $fetchesContainer;
+
+ /** @var FetchesPackingList */
+ private $fetchesPackingList;
+
+ /**
+ * DeleteContainerControllersLogic constructor.
+ * @param FetchesContainer $fetchesContainer
+ * @param FetchesPackingList $fetchesPackingList
+ */
+ public function __construct(FetchesContainer $fetchesContainer, FetchesPackingList $fetchesPackingList)
+ {
+ $this->fetchesContainer = $fetchesContainer;
+ $this->fetchesPackingList = $fetchesPackingList;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ try {
+ $container = $this->fetchesContainer->execute(['id' => $request->route('id')]);
+ $packing_list = $request->input('packing_list_id');
+
+ foreach ($packing_list as $key => $row) {
+ $packing_list_item = $this->fetchesPackingList->execute(['id' => $row]);
+ $container->packingLists()->attach($packing_list_item);
+ }
+
+ return $this->resourceResponse(new ContainerResource($container));
+
+ } catch (\Exception $exception){
+ throw new ErrorException($exception->getMessage(), $exception->getCode());
+ }
+
+ }
+
+}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php
index 8969126c..c8c8548d 100644
--- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/FetchContainerLogic.php
@@ -53,7 +53,7 @@ class FetchContainerLogic extends AbstractControllerLogic
$this->canFetchContainer->passes();
- $query = $this->fetchesContainer->execute(['id' => $request->route('id')]);
+ $query = $this->fetchesContainer->execute(['id' => $request->route('id'), 'with_packing_lists' => true]);
return $this->resourceResponse(new ContainerResource($query));
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php
new file mode 100644
index 00000000..1df92ffa
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/InboundCustomClearedLogic.php
@@ -0,0 +1,66 @@
+ 'Retrieved Containers',
+ 'message' => 'You have successfully retrieved a list of Containers'
+ ];
+ }
+
+ /** @var CanListContainers */
+ private $canListContainers;
+
+ /** @var ListsContainers */
+ private $listsContainers;
+
+ private $fetchInboundCustomCleared;
+
+ /**
+ * ListContainersLogic constructor.
+ * @param CanListContainers $canListContainers
+ * @param ListsContainers $listsContainers
+ */
+ public function __construct(CanListContainers $canListContainers, ListsContainers $listsContainers, FetchInboundCustomClearedProcessor $fetchInboundCustomCleared)
+ {
+ $this->canListContainers = $canListContainers;
+ $this->listsContainers = $listsContainers;
+ $this->fetchInboundCustomCleared = $fetchInboundCustomCleared;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ //$this->canListOrders->passes();
+
+ //$query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true]));
+
+ $d = $this->fetchInboundCustomCleared->execute();
+
+ return response()->json($d);
+
+ }
+}
diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Packages/SwitchPackagePackingListLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/SwitchPackagePackingListLogic.php
new file mode 100644
index 00000000..cdbc7917
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/ControllersLogic/Packages/SwitchPackagePackingListLogic.php
@@ -0,0 +1,68 @@
+ 'Switched Package Packing List',
+ 'message' => 'You have successfully switched the Package Packing List'
+ ];
+ }
+
+ /** @var SwitchesPackagePackingList */
+ private $switchesPackagePackingList;
+
+ /** @var FetchesPackage */
+ private $fetchesPackage;
+
+ /** @var FetchesPackingList */
+ private $fetchesPackingList;
+
+ /**
+ * UpdatePackageLogic constructor.
+ * @param SwitchesPackagePackingList $switchesPackagePackingList
+ * @param FetchesPackage $fetchesPackage
+ * @param FetchesPackingList $fetchesPackingList
+ */
+ public function __construct(SwitchesPackagePackingList $switchesPackagePackingList, FetchesPackage $fetchesPackage, FetchesPackingList $fetchesPackingList)
+ {
+ $this->switchesPackagePackingList = $switchesPackagePackingList;
+ $this->fetchesPackage = $fetchesPackage;
+ $this->fetchesPackingList = $fetchesPackingList;
+ }
+
+
+ /**
+ * @param Request $request
+ * @return JsonResponse
+ * @throws ErrorException
+ */
+ public function logic(Request $request) : JsonResponse
+ {
+ $package = $this->fetchesPackage->execute(['id' => $request->route('id')]);
+
+ $packing_list = $this->fetchesPackingList->execute(['id' => $request->input('packing_list_id')]);
+
+ $query = $this->switchesPackagePackingList->execute($package, $packing_list);
+
+ return $this->resourceResponse(new PackageResource($query));
+ }
+
+}
diff --git a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php
index 0a0c0158..955d68d0 100644
--- a/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php
+++ b/app/Classes/Modules/PackingLists/Processors/FetchContainersStatusUpdateFromVTPortalProcessor.php
@@ -76,7 +76,7 @@ class FetchContainersStatusUpdateFromVTPortalProcessor
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":"CreatedOn asc","Filter":'.$filter.'}}'), '');
+ $containerDetailsRequest = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
$containerDetails = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailsRequest);
diff --git a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php
index fbab0c5b..3a9ebdea 100644
--- a/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php
+++ b/app/Classes/Modules/PackingLists/Processors/FetchDeliveryListFromVTPortalProcessor.php
@@ -62,7 +62,7 @@ class FetchDeliveryListFromVTPortalProcessor
try {
$filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]';
- $shippingPackingListsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
+ $shippingPackingListsRequest = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
$shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest);
diff --git a/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php
new file mode 100644
index 00000000..b4ea6395
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/Processors/FetchInboundCustomClearedProcessor.php
@@ -0,0 +1,105 @@
+fetchesDataFRomVTPortal = $fetchesDataFRomVTPortal;
+ $this->createsTransport = $createsTransport;
+ $this->createsSchedule = $createsSchedule;
+ $this->updatesContractObligations = $updatesContractObligations;
+ }
+
+
+ /**
+ * @return array
+ */
+ public function execute(){
+
+ $packingLists = PackingList::query()->with(['steps' => function ($query) {
+ $query->where('steps.status', '<>', 3);
+ }])->first();
+ dd($packingLists);
+ /*
+ $packingLists = PackingList::where('type', '=', PackingListType::SHIPPING_PACKING_LIST)
+ ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::SUSPENDED])->get();
+
+ foreach($packingLists as $packingList){
+ try {
+ $filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]';
+
+ $shippingPackingListsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
+
+ $shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest);
+
+ $shippingPackingList = $shippingPackingLists->Rows[0];
+
+ if(!$shippingPackingList[9] && !$shippingPackingList[10]) {
+ continue;
+ }
+
+ $packingList->status = ApprovalStatus::COMPLETED;
+ $packingList->save();
+
+ $deliveryDate = Carbon::parse($shippingPackingList[9] ? $shippingPackingList[9]:$shippingPackingList[10]);
+ $transportObject = new TransportObject(TransportType::LAND, null, null, $deliveryDate, $deliveryDate, ApprovalStatus::APPROVED);
+ $transport = $this->createsTransport->execute($transportObject, $packingList);
+ $this->createsSchedule->execute($transport, new ScheduleObject($deliveryDate, $deliveryDate, ApprovalStatus::APPROVED));
+
+ $deliveryStep = $packingList->steps()->where('reference', '=', 'LAST_MILE_DELIVERY')->first();
+ $signature = $packingList->owner->orderRoles()->where('role_id', '=', OrderRoleTypes::SUPERVISOR)->first()->appointee->entity_sigiture;
+ $this->updatesContractObligations->execute($signature, $deliveryStep->obligation_hash_id);
+ $deliveryStep->update(['status' => ApprovalStatus::COMPLETED]);
+
+ } catch (GuzzleException $exception) {
+ continue;
+ }
+
+ }*/
+
+
+ return [];
+
+ }
+
+
+}
diff --git a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php
index 4069a40d..23dc50ad 100644
--- a/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php
+++ b/app/Classes/Modules/PackingLists/Processors/FetchLoadedContainersFromVTPortalProcessor.php
@@ -137,14 +137,14 @@ class FetchLoadedContainersFromVTPortalProcessor
$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":"LoadedTime asc","Filter":'.$filter.'}}'), '');
+ $containersRequest = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VCustomercontainer","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"LoadedTime asc","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":"CreatedOn asc","Filter":'.$filter.'}}'), '');
+ $containerDetailRequest = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
$containerDetail = $this->fetchesDataFRomVTPortal->getResponseBody($containerDetailRequest);
diff --git a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php
index ecc9c9f0..00c3e112 100644
--- a/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php
+++ b/app/Classes/Modules/PackingLists/Processors/FetchPackingListFromVTPortalProcessor.php
@@ -57,7 +57,7 @@ class FetchPackingListFromVTPortalProcessor
$filter = '["PoNumber:=%js%\"'.$packingList->reference.'\"\u0000"]';
- $shippingPackingListsRequest = $this->fetchesDataFRomVTPortal->clientRequest('https://portalvt.azurewebsites.net/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
+ $shippingPackingListsRequest = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"VPodetailparcel","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"CreatedOn asc","Filter":'.$filter.'}}'), '');
$shippingPackingLists = $this->fetchesDataFRomVTPortal->getResponseBody($shippingPackingListsRequest);
diff --git a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php
index b9043479..d1eb8516 100644
--- a/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php
+++ b/app/Classes/Modules/PackingLists/Processors/FetchWarehouseReceiveListFromVTPortalProcessor.php
@@ -128,7 +128,7 @@ class FetchWarehouseReceiveListFromVTPortalProcessor
$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"]';
- $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":"ParcelDate asc","Filter":'.$filter.'}}'), '');
+ $warehouseListRequest = $this->fetchesDataFRomVTPortal->clientRequest('http://portal.vtnation.com.my/Services/DataControllerService.asmx/GetPage', 'POST', json_decode('{"controller":"WarehouseList","view":"grid1","request":{"PageIndex":-1,"PageSize":10000,"SortExpression":"ParcelDate asc","Filter":'.$filter.'}}'), '');
$response = $this->fetchesDataFRomVTPortal->getResponseBody($warehouseListRequest);
diff --git a/app/Classes/Modules/PackingLists/Services/Packages/SwitchesPackagePackingList.php b/app/Classes/Modules/PackingLists/Services/Packages/SwitchesPackagePackingList.php
new file mode 100644
index 00000000..9abedc0b
--- /dev/null
+++ b/app/Classes/Modules/PackingLists/Services/Packages/SwitchesPackagePackingList.php
@@ -0,0 +1,25 @@
+packing_list_id = $packing_list->id;
+
+ return $this->handler($model);
+
+ }
+}
diff --git a/app/Http/Controllers/Accounts/CreateInvitedCustomerController.php b/app/Http/Controllers/Accounts/CreateInvitedCustomerController.php
new file mode 100644
index 00000000..dce70e1e
--- /dev/null
+++ b/app/Http/Controllers/Accounts/CreateInvitedCustomerController.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/PackingLists/Containers/AssignPackingListContainerController.php b/app/Http/Controllers/PackingLists/Containers/AssignPackingListContainerController.php
new file mode 100644
index 00000000..7cda1111
--- /dev/null
+++ b/app/Http/Controllers/PackingLists/Containers/AssignPackingListContainerController.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+
+}
diff --git a/app/Http/Controllers/PackingLists/Containers/InboundCustomClearedController.php b/app/Http/Controllers/PackingLists/Containers/InboundCustomClearedController.php
new file mode 100644
index 00000000..303ea5dc
--- /dev/null
+++ b/app/Http/Controllers/PackingLists/Containers/InboundCustomClearedController.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+
+}
diff --git a/app/Http/Controllers/PackingLists/Packages/SwitchPackagePackingListController.php b/app/Http/Controllers/PackingLists/Packages/SwitchPackagePackingListController.php
new file mode 100644
index 00000000..42c85cff
--- /dev/null
+++ b/app/Http/Controllers/PackingLists/Packages/SwitchPackagePackingListController.php
@@ -0,0 +1,20 @@
+execute($request);
+ }
+
+}
diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php
index 702319aa..cae286b9 100644
--- a/app/Http/Resources/CompanyResource.php
+++ b/app/Http/Resources/CompanyResource.php
@@ -11,6 +11,7 @@ use App\Models\CompanyModule;
use App\Models\Currency;
use App\Models\SegmentConstant;
use Illuminate\Http\Resources\Json\JsonResource;
+use Illuminate\Support\Facades\Crypt;
class CompanyResource extends JsonResource
{
@@ -25,6 +26,7 @@ class CompanyResource extends JsonResource
$companyModule = $this->companyModules()->where('type', '=', BusinessType::IMPORTER)->first();
return [
'id' => $this->id,
+ 'hash_id' => Crypt::encryptString($this->id),
'name' => $this->name,
'reference' => $this->reference,
'type' => (int) $this->type,
diff --git a/app/Http/Resources/ContainerResource.php b/app/Http/Resources/ContainerResource.php
index 774ada84..bc6337cc 100644
--- a/app/Http/Resources/ContainerResource.php
+++ b/app/Http/Resources/ContainerResource.php
@@ -2,6 +2,7 @@
namespace App\Http\Resources;
+use App\Classes\ValueObjects\Constants\ContainerTypes;
use Illuminate\Http\Resources\Json\JsonResource;
class ContainerResource extends JsonResource
@@ -17,7 +18,7 @@ class ContainerResource extends JsonResource
return [
'id' => $this->id,
'container_reference' => $this->reference,
- 'container_type' => $this->container_type,
+ 'container_specification' => ContainerTypes::CONTAINER_SPECIFICATION[$this->container_type],
'container_number' => $this->container_number,
'seal_reference' => $this->seal_reference,
'transport' => new TransportResource($this->transports()->first()),
diff --git a/app/Models/Exchange/Company.php b/app/Models/Exchange/Company.php
new file mode 100644
index 00000000..fc85080c
--- /dev/null
+++ b/app/Models/Exchange/Company.php
@@ -0,0 +1,36 @@
+belongsToMany(User::class, (new Employee())->getTable(), 'company_id','user_id');
+ }
+
+}
+
+
+
diff --git a/app/Models/Exchange/Employee.php b/app/Models/Exchange/Employee.php
new file mode 100644
index 00000000..b310f078
--- /dev/null
+++ b/app/Models/Exchange/Employee.php
@@ -0,0 +1,37 @@
+HasMany(Company::class, 'company_id', 'id');
+ }
+
+ /**
+ * @return \Illuminate\Database\Eloquent\Relations\HasOne
+ **/
+ public function user(): HasOne
+ {
+ return $this->hasOne(User::class, 'user_id', 'id');
+ }
+}
diff --git a/app/Models/Exchange/User.php b/app/Models/Exchange/User.php
new file mode 100644
index 00000000..cc102ba2
--- /dev/null
+++ b/app/Models/Exchange/User.php
@@ -0,0 +1,19 @@
+belongsToMany(Company::class, (new Employee())->getTable(), 'user_id', 'company_id');
+ }
+}
diff --git a/config/database.php b/config/database.php
index 4e8bc250..8b5c199f 100644
--- a/config/database.php
+++ b/config/database.php
@@ -82,7 +82,25 @@ return [
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
-
+ 'exchange_db' => [
+ 'driver' => 'mysql',
+ 'url' => env('DATABASE_URL'),
+ 'host' => env('DB_HOST', '127.0.0.1'),
+ 'port' => env('DB_PORT', '3306'),
+ 'database' => env('DB_DATABASE_EXCHANGE', 'forge'),
+ 'username' => env('DB_USERNAME', 'forge'),
+ 'password' => env('DB_PASSWORD', ''),
+ 'unix_socket' => env('DB_SOCKET_IZYIM', ''),
+ 'charset' => 'utf8mb4',
+ 'collation' => 'utf8mb4_unicode_ci',
+ 'prefix' => '',
+ 'prefix_indexes' => true,
+ 'strict' => true,
+ 'engine' => null,
+ 'options' => extension_loaded('pdo_mysql') ? array_filter([
+ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
+ ]) : [],
+ ],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
diff --git a/database/seeders/CompanyEmployeesTableSeeder.php b/database/seeders/CompanyEmployeesTableSeeder.php
new file mode 100644
index 00000000..40473ed1
--- /dev/null
+++ b/database/seeders/CompanyEmployeesTableSeeder.php
@@ -0,0 +1,76 @@
+assignEmployeeProcessor = $assignEmployeeProcessor;
+ }
+
+
+ /**
+ * Run the database seeds.
+ *
+ * @return void
+ * @throws \App\Classes\Exceptions\AccessForbiddenException
+ * @throws \App\Classes\Exceptions\MalformedRequestException
+ * @throws \App\Classes\Exceptions\RequestValidationException
+ */
+ public function run()
+ {
+ DB::beginTransaction();
+ foreach(ExchangeCompany::all() as $company) {
+
+ if($connection = CompanyConnection::where('invitee_reference', $company->reference)->first()){
+
+ $companyModule = $connection->invitee;
+
+ if($companyModule->employees()->exists()) {
+ continue;
+ }
+
+ $exchangeUser = $company->employees()->first();
+
+ if(User::where('email', '=', $exchangeUser->email)->count()){
+ continue;
+ }
+
+ $user = new User();
+ $user->name = $exchangeUser->name;
+ $user->email = $exchangeUser->email;
+ $user->password = $exchangeUser->password;
+ $user->type = $exchangeUser->type;
+ $user->status = $exchangeUser->status;
+
+ $user->save();
+
+ $Object = new EmploymentObject($companyModule, $user);
+
+ $this->assignEmployeeProcessor->execute($Object);
+ }
+
+ }
+ DB::commit();
+
+
+ }
+
+}
diff --git a/resources/assets/vue/components/accounts/forms/InviteRegistrationFormComponent.vue b/resources/assets/vue/components/accounts/forms/InviteRegistrationFormComponent.vue
new file mode 100644
index 00000000..9b8af5ea
--- /dev/null
+++ b/resources/assets/vue/components/accounts/forms/InviteRegistrationFormComponent.vue
@@ -0,0 +1,101 @@
+
+ Personal Information
ETA
{{item.transport ? item.transport.current_schedule.eta : 'n/a'}}
+Loaded CBM
+{{ (Math.ceil((item.packing_lists.reduce((total, obj) => total + obj.packages.reduce((total, obj) => obj.cbm + total, 0), 0)) * 1000) / 1000).toFixed(3) }}
+{{container.container_number}}
+Container Type: {{container.container_type}}
+(Total 77 Package in this container)
+{{ containerFilledPercentage }}%
+
+ Group my products with same destination
+You will get grouped package at once if possible
+