From c69c04357692a7002d947571bcb92379afd244fd Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 3 Apr 2022 19:10:06 +0800 Subject: [PATCH] fix the user ui, create delivery order, delivery customer dashboard --- .../General/Eloquent/Filters/TypeIn.php | 20 + .../ControllersLogic/CreateCustomerLogic.php | 10 +- .../Services/AuthenticationRedirect.php | 6 +- .../Services/GeneratesAuthenticationToken.php | 4 +- .../ControllersLogic/CreateAddressLogic.php | 3 +- .../ControllersLogic/UpdateAddressLogic.php | 4 +- .../DataTransferObjects/AddressObject.php | 27 +- .../Addresses/Services/CleansOldAddress.php | 4 +- .../Addresses/Services/CreatesAddress.php | 1 + .../CreateDeliveryCustomerLogic.php | 4 +- .../CreateDeliveryOrderLogic.php | 178 +++++++++ .../ControllersLogic/ListOrdersLogic.php | 57 +++ .../Services/ExportsDeliveryOrders.php | 109 ++++++ .../ControllersLogic/ListOrdersLogic.php | 3 +- .../Processors/CreateOrderProcessor.php | 2 +- .../RequestChangeOrderAddressProcessor.php | 3 +- .../ValueObjects/Constants/AddressType.php | 2 + .../ValueObjects/Constants/OrderType.php | 2 + .../ValueObjects/Constants/PackageType.php | 2 + .../CreateDeliveryOrderController.php | 20 + .../ExportDeliveryOrdersToExcelController.php | 33 ++ .../Delivery/ListOrdersController.php | 22 ++ app/Http/Resources/CompanyResource.php | 6 +- app/Http/Resources/DeliveryOrderResource.php | 33 ++ .../Resources/DeliveryPackingListResource.php | 36 ++ app/Models/Addon.php | 36 ++ app/Models/Order.php | 8 + app/Models/PackingList.php | 8 + .../2022_03_14_133555_create_addons_table.php | 37 ++ database/seeders/CompaniesTableSeeder.php | 15 +- .../seeders/LastMileDeliveryTableSeeder.php | 123 ++++++ .../seeders/ModernWarehouseTableSeeder.php | 3 +- resources/assets/images/lineclear.png | Bin 0 -> 8339 bytes resources/assets/vue/app.js | 4 + .../accounts/elements/LogoutComponent.vue | 4 +- .../accounts/forms/LoginFormComponent.vue | 5 +- .../forms/NewRegistrationFormComponent.vue | 3 +- .../elements/SelectAddressComponent.vue | 8 +- .../addresses/forms/AddressFormComponent.vue | 8 +- .../AddressProfileSectionComponent.vue | 19 + ...eliveryCustomerProfileSectionComponent.vue | 111 ++++++ .../CreateDeliveryOrderFormComponent.vue | 238 ------------ ...CreateDeliveryPackinglistFormComponent.vue | 244 ------------ .../forms/ValidationWrapperComponent.vue | 4 +- .../forms/DeliveryOrderFormComponent.vue | 366 ++++++++++++++++++ .../DeliveryOrdersTableSectionComponent.vue | 176 +++++++++ .../ProfitModelReportSectionComponent.vue | 2 +- .../forms/SegmentServiceFormComponent.vue | 4 +- .../settings/forms/ServiceFormComponent.vue | 2 +- .../validation/addressFormValidation.js | 4 +- .../assets/vue/general/mixins/formHandler.js | 1 + resources/assets/vue/general/mixins/guards.js | 2 +- .../assets/vue/vuex/modules/authentication.js | 1 + resources/views/layouts/base_portal.blade.php | 2 +- .../views/pages/accounts/signup.blade.php | 4 +- .../views/pages/delivery/customers.blade.php | 13 +- resources/views/partials/header.blade.php | 4 +- resources/views/partials/menu.blade.php | 8 +- routes/delivery.php | 5 +- routes/web.php | 21 +- 60 files changed, 1528 insertions(+), 556 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/TypeIn.php create mode 100644 app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryOrderLogic.php create mode 100644 app/Classes/Modules/Delivery/ControllersLogic/ListOrdersLogic.php create mode 100644 app/Classes/Modules/Exports/Services/ExportsDeliveryOrders.php create mode 100644 app/Http/Controllers/Delivery/CreateDeliveryOrderController.php create mode 100644 app/Http/Controllers/Delivery/ExportDeliveryOrdersToExcelController.php create mode 100644 app/Http/Controllers/Delivery/ListOrdersController.php create mode 100644 app/Http/Resources/DeliveryOrderResource.php create mode 100644 app/Http/Resources/DeliveryPackingListResource.php create mode 100644 app/Models/Addon.php create mode 100644 database/migrations/2022_03_14_133555_create_addons_table.php create mode 100644 database/seeders/LastMileDeliveryTableSeeder.php create mode 100644 resources/assets/images/lineclear.png create mode 100644 resources/assets/vue/components/addresses/sections/AddressProfileSectionComponent.vue create mode 100644 resources/assets/vue/components/companies/sections/DeliveryCustomerProfileSectionComponent.vue delete mode 100644 resources/assets/vue/components/containers/forms/CreateDeliveryOrderFormComponent.vue delete mode 100644 resources/assets/vue/components/containers/forms/CreateDeliveryPackinglistFormComponent.vue create mode 100644 resources/assets/vue/components/orders/forms/DeliveryOrderFormComponent.vue create mode 100644 resources/assets/vue/components/orders/sections/DeliveryOrdersTableSectionComponent.vue diff --git a/app/Classes/General/Eloquent/Filters/TypeIn.php b/app/Classes/General/Eloquent/Filters/TypeIn.php new file mode 100644 index 00000000..3a064f7a --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/TypeIn.php @@ -0,0 +1,20 @@ +whereIn('type', $value); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php index 7762dffa..327a3666 100644 --- a/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateCustomerLogic.php @@ -15,6 +15,7 @@ use App\Classes\Modules\Companies\Processors\CreateCompanyModuleProcessor; use App\Classes\Modules\Companies\DataTransferObjects\EmploymentObject; use App\Classes\Modules\Companies\Services\ApprovesCompanyConnection; use App\Classes\Modules\Companies\Services\CreatesCompanyConnection; +use App\Classes\Modules\Companies\Services\FetchesCompanyModule; use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; use App\Classes\Modules\Documents\Processors\UploadIdentityDocumentProcessor; @@ -76,6 +77,9 @@ class CreateCustomerLogic extends AbstractControllerLogic /** @var GenerateEmailVerificationAttemptProcessor */ private $generateEmailVerificationAttemptProcessor; + /** @var FetchesCompanyModule */ + private $fetchesCompanyModule; + /** * CreateCustomerLogic constructor. * @param CreateUserProcessor $createUserProcessor @@ -88,8 +92,9 @@ class CreateCustomerLogic extends AbstractControllerLogic * @param UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor * @param AuthenticationProcessor $authenticationProcessor * @param GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor + * @param FetchesCompanyModule $fetchesCompanyModule */ - public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, AssignEmployeeProcessor $assignEmployeeProcessor, UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor) + public function __construct(CreateUserProcessor $createUserProcessor, CreateCompanyProcessor $createCompanyProcessor, CreateCompanyModuleProcessor $createCompanyModuleProcessor, CreateContactProcessor $createContactProcessor, CreatesCompanyConnection $createsCompanyConnection, ApprovesCompanyConnection $approvesCompanyConnection, AssignEmployeeProcessor $assignEmployeeProcessor, UploadIdentityDocumentProcessor $uploadIdentityDocumentProcessor, AuthenticationProcessor $authenticationProcessor, GenerateEmailVerificationAttemptProcessor $generateEmailVerificationAttemptProcessor, FetchesCompanyModule $fetchesCompanyModule) { $this->createUserProcessor = $createUserProcessor; $this->createCompanyProcessor = $createCompanyProcessor; @@ -101,6 +106,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $this->uploadIdentityDocumentProcessor = $uploadIdentityDocumentProcessor; $this->authenticationProcessor = $authenticationProcessor; $this->generateEmailVerificationAttemptProcessor = $generateEmailVerificationAttemptProcessor; + $this->fetchesCompanyModule = $fetchesCompanyModule; } /** @@ -128,7 +134,7 @@ class CreateCustomerLogic extends AbstractControllerLogic $inviter = $this->fetchesCompanyModule->execute(['reference'=>'CIEF']); - $connectionObject = new CompanyConnectionObject($companyModule, $inviter, 'CIEF', mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate()); + $connectionObject = new CompanyConnectionObject($companyModule, $inviter, mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(), 'CIEF'); $connection = $this->createsCompanyConnection->execute($connectionObject); diff --git a/app/Classes/Modules/Accounts/Services/AuthenticationRedirect.php b/app/Classes/Modules/Accounts/Services/AuthenticationRedirect.php index 1d08a191..4222aaf8 100644 --- a/app/Classes/Modules/Accounts/Services/AuthenticationRedirect.php +++ b/app/Classes/Modules/Accounts/Services/AuthenticationRedirect.php @@ -12,9 +12,11 @@ class AuthenticationRedirect public function url(User $user){ if($user->type === RoleTypes::USER){ - if ($user->companyModule()->first()->type === BusinessType::ONLINE_SELLER) { - return route('delivery.dashboard'); + + if (in_array($user->companyModule()->first()->type, [BusinessType::ONLINE_SELLER, BusinessType::LAST_MILE_DELIVERY_AGENT])) { + return route('last_mile_delivery.dashboard'); } + return route('dashboard'); } diff --git a/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php b/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php index b327e175..88645795 100644 --- a/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php +++ b/app/Classes/Modules/Accounts/Services/GeneratesAuthenticationToken.php @@ -68,7 +68,9 @@ class GeneratesAuthenticationToken { $companyModule = $user->companyModule()->first(); $claims = array_merge($claims, [ - 'company_id' => $companyModule->company_id + 'company_id' => $companyModule->company_id, + 'company_module_id' => $companyModule->id, + 'company_module_type' => $companyModule->type ]); } diff --git a/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php index 91f5c42e..f019bab3 100644 --- a/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php +++ b/app/Classes/Modules/Addresses/ControllersLogic/CreateAddressLogic.php @@ -14,6 +14,7 @@ use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject; use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Http\Resources\AddressResource; use App\Models\Address; use ErrorException; @@ -82,7 +83,7 @@ class CreateAddressLogic extends AbstractControllerLogic $district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]); - $object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code'), $request->input('reference')); + $object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code'), $request->input('type'), ApprovalStatus::APPROVED, $request->input('reference')); $this->canCreateAddress->passes($object); diff --git a/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php b/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php index 95b8bf64..94d960f6 100644 --- a/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php +++ b/app/Classes/Modules/Addresses/ControllersLogic/UpdateAddressLogic.php @@ -13,6 +13,8 @@ use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject; use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor; +use App\Classes\ValueObjects\Constants\AddressType; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Http\Resources\AddressResource; use App\Models\Address; use Illuminate\Http\JsonResponse; @@ -79,7 +81,7 @@ class UpdateAddressLogic extends AbstractControllerLogic { $district = $this->fetchesDistrict->execute(['id' => $request->input('district_id')]); - $object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code'), $request->input('reference')); + $object = new AddressObject($request->input('street_one'), $request->input('street_two'), $district->country_id, $district->state_id, $district->id, $request->input('post_code'), AddressType::DELIVERY, ApprovalStatus::APPROVED, $request->input('reference')); $this->canUpdateAddress->passes($object); diff --git a/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php b/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php index b4453c3a..f1d79e53 100644 --- a/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php +++ b/app/Classes/Modules/Addresses/DataTransferObjects/AddressObject.php @@ -26,6 +26,12 @@ class AddressObject implements DataTransferObject /** @var int */ private $postCode; + /** @var int */ + private $type; + + /** @var int */ + private $status; + /** @var string|null */ private $reference; @@ -37,9 +43,11 @@ class AddressObject implements DataTransferObject * @param int $stateId * @param int $districtId * @param int $postCode + * @param int $type + * @param int $status * @param null|string $reference */ - public function __construct(string $streetOne, ?string $streetTwo, int $countryId, int $stateId, int $districtId, int $postCode, ?string $reference = null, ?int $status = ApprovalStatus::APPROVED) + public function __construct(string $streetOne, ?string $streetTwo, int $countryId, int $stateId, int $districtId, int $postCode, int $type, int $status, ?string $reference = null) { $this->streetOne = $streetOne; $this->streetTwo = $streetTwo; @@ -47,8 +55,9 @@ class AddressObject implements DataTransferObject $this->stateId = $stateId; $this->districtId = $districtId; $this->postCode = $postCode; - $this->reference = $reference; + $this->type = $type; $this->status = $status; + $this->reference = $reference; } /** @@ -100,11 +109,11 @@ class AddressObject implements DataTransferObject } /** - * @return null|string + * @return int */ - public function getReference(): ?string + public function getType(): int { - return $this->reference; + return $this->type; } /** @@ -115,5 +124,13 @@ class AddressObject implements DataTransferObject return $this->status; } + /** + * @return null|string + */ + public function getReference(): ?string + { + return $this->reference; + } + } \ No newline at end of file diff --git a/app/Classes/Modules/Addresses/Services/CleansOldAddress.php b/app/Classes/Modules/Addresses/Services/CleansOldAddress.php index 90fad41c..59463ad9 100644 --- a/app/Classes/Modules/Addresses/Services/CleansOldAddress.php +++ b/app/Classes/Modules/Addresses/Services/CleansOldAddress.php @@ -10,6 +10,8 @@ namespace App\Classes\Modules\Addresses\Services; use App\Classes\Modules\Addresses\DataTransferObjects\AddressObject; +use App\Classes\ValueObjects\Constants\AddressType; +use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Models\District; use App\Models\OldAddress; @@ -31,7 +33,7 @@ class CleansOldAddress 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'); + 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, AddressType::DELIVERY, ApprovalStatus::APPROVED, 'Delivery Address'); } diff --git a/app/Classes/Modules/Addresses/Services/CreatesAddress.php b/app/Classes/Modules/Addresses/Services/CreatesAddress.php index b9f2716c..522b5d82 100644 --- a/app/Classes/Modules/Addresses/Services/CreatesAddress.php +++ b/app/Classes/Modules/Addresses/Services/CreatesAddress.php @@ -29,6 +29,7 @@ class CreatesAddress extends AbstractUpdateRelationshipRecord $model->district_id = $object->getDistrictId(); $model->postcode = $object->getPostCode(); $model->status = $object->getStatus(); + $model->type = $object->getType(); return $this->handler($addressable->addresses(), $model); diff --git a/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryCustomerLogic.php b/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryCustomerLogic.php index c7368439..521d88c5 100644 --- a/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryCustomerLogic.php +++ b/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryCustomerLogic.php @@ -132,9 +132,9 @@ class CreateDeliveryCustomerLogic extends AbstractControllerLogic /** @var CompanyModule $companyModule */ $companyModule = $this->createCompanyModuleProcessor->execute($company, BusinessType::ONLINE_SELLER); - $inviter = $this->fetchesCompanyModule->execute(['reference'=>'EXP']); + $inviter = $this->fetchesCompanyModule->execute(['reference'=>'LMD']); - $connectionObject = new CompanyConnectionObject($companyModule, $inviter, 'EXP', mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate()); + $connectionObject = new CompanyConnectionObject($companyModule, $inviter, mt_rand(1000, 9999).(new GeneratesInitials())->name($company->name)->length(3)->generate(), 'LMD'); $connection = $this->createsCompanyConnection->execute($connectionObject); diff --git a/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryOrderLogic.php b/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryOrderLogic.php new file mode 100644 index 00000000..0c5af797 --- /dev/null +++ b/app/Classes/Modules/Delivery/ControllersLogic/CreateDeliveryOrderLogic.php @@ -0,0 +1,178 @@ + 'Created Order', + 'message' => 'You have successfully created a new Order' + ]; + } + + /** @var FetchesCompany */ + private $fetchesCompany; + + /** @var fetchesAddress */ + private $fetchesAddress; + + /** @var CanCreateOrder */ + private $canCreateOrder; + + /** @var CreatesOrder */ + private $createsOrder; + + /** @var CreatesAddress */ + private $createAddress; + + /** @var CreateContactProcessor */ + private $createContactProcessor; + + /** @var CreateRemarkProcessor */ + private $createRemarkProcessor; + + /** @var GeneratesOrderNumber */ + private $generatesOrderNumber; + + /** @var CreatesPackingList */ + private $createsPackingList; + + /** @var CreatesPackage */ + private $createsPackage; + + + /** + * CreateDeliveryOrderLogic constructor. + * @param FetchesCompany $fetchesCompany + * @param FetchesAddress $fetchesAddress + * @param CanCreateOrder $canCreateOrder + * @param CreatesOrder $createsOrder + * @param CreatesAddress $createAddress + * @param CreateContactProcessor $createContactProcessor + * @param CreateRemarkProcessor $createRemarkProcessor + * @param GeneratesOrderNumber $generatesOrderNumber + * @param CreatesPackingList $createsPackingList + * @param CreatesPackage $createPackage + */ + public function __construct(FetchesCompany $fetchesCompany, FetchesAddress $fetchesAddress, CanCreateOrder $canCreateOrder, CreatesOrder $createsOrder, CreatesAddress $createAddress, CreateContactProcessor $createContactProcessor, CreateRemarkProcessor $createRemarkProcessor, GeneratesOrderNumber $generatesOrderNumber, CreatesPackingList $createsPackingList, CreatesPackage $createsPackage) + { + $this->fetchesCompany = $fetchesCompany; + $this->fetchesAddress = $fetchesAddress; + $this->canCreateOrder = $canCreateOrder; + $this->createsOrder = $createsOrder; + $this->createAddress = $createAddress; + $this->createContactProcessor = $createContactProcessor; + $this->createRemarkProcessor = $createRemarkProcessor; + $this->generatesOrderNumber = $generatesOrderNumber; + $this->createsPackingList = $createsPackingList; + $this->createsPackage = $createsPackage; + } + + /** + * @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 + { + $company = $this->fetchesCompany->execute(['id' => $request->input('company_id')]); + + $senderAddress = $this->fetchesAddress->execute(['id' => $request->input('sender_address_id')]); + $deliveryAddress = $this->fetchesAddress->execute(['id' => $request->input('delivery_address_id')]); + + /** @var CompanyModule $companyModule */ + $companyModule = $company->companyModules()->where('type', BusinessType::ONLINE_SELLER)->first(); + + $orderObject = new OrderObject($this->generatesOrderNumber->execute(), OrderType::LAST_MILE_DELIVERY, ApprovalStatus::APPROVED); + + $this->canCreateOrder->passes($orderObject); + + /** @var Order $order */ + $order = $this->createsOrder->execute($companyModule, $orderObject); + + $senderAddressObject = new AddressObject($senderAddress->street_one, $senderAddress->street_two, $senderAddress->country_id, $senderAddress->state_id, $senderAddress->district_id, $senderAddress->postcode, $senderAddress->type, ApprovalStatus::APPROVED, $senderAddress->reference); + $deliveryAddressObject = new AddressObject($deliveryAddress->street_one, $deliveryAddress->street_two, $deliveryAddress->country_id, $deliveryAddress->state_id, $deliveryAddress->district_id, $deliveryAddress->postcode, $deliveryAddress->type, ApprovalStatus::APPROVED, $senderAddress->reference); + + /** @var Address $orderSenderAddress */ + $orderSenderAddress = $this->createAddress->execute($order, $senderAddressObject); + /** @var Address $orderDeliveryAddress */ + $orderDeliveryAddress = $this->createAddress->execute($order, $deliveryAddressObject); + + $senderContact = $senderAddress->contacts()->first(); + $deliveryContact = $deliveryAddress->contacts()->first(); + + $contactObject = new ContactObject($senderContact->reference, $senderContact->phone, '',''); + $this->createContactProcessor->execute($contactObject, $orderSenderAddress); + + $contactObject = new ContactObject($deliveryContact->reference, $deliveryContact->phone, '',''); + $this->createContactProcessor->execute($contactObject, $orderDeliveryAddress); + + $senderRemark = $senderAddress->remarks()->first(); + $deliveryRemark = $deliveryAddress->remarks()->first(); + + if ($senderRemark){ + $remarkObject = new RemarkObject($senderRemark->content, Auth()->user()->id); + + if($remarkObject->getContent()){ + $this->createRemarkProcessor->execute($orderSenderAddress, $remarkObject); + } + } + + if ($deliveryRemark){ + $remarkObject = new RemarkObject($deliveryRemark->content, Auth()->user()->id); + + if($remarkObject->getContent()){ + $this->createRemarkProcessor->execute($orderDeliveryAddress, $remarkObject); + } + } + + $packingListObject = new PackingListObject($order->reference, $companyModule->id, PackingListType::DELIVERY_PACKING_LIST, ApprovalStatus::PENDING_VERIFICATION); + + /** @var PackingList $packingList */ + $packingList = $this->createsPackingList->execute($packingListObject, $order); + + $packageObject = new PackageObject($request->input('packing_list.type'), $request->input('packing_list.description'), (float) 1, (float) 1, (float) 1, $request->input('packing_list.weight'), (float) $request->input('packing_list.quantity'), ApprovalStatus::APPROVED); + $this->createsPackage->execute($packageObject, $packingList); + + return $this->resourceResponse(new DeliveryOrderResource($order)); + + } +} diff --git a/app/Classes/Modules/Delivery/ControllersLogic/ListOrdersLogic.php b/app/Classes/Modules/Delivery/ControllersLogic/ListOrdersLogic.php new file mode 100644 index 00000000..ae51f1b2 --- /dev/null +++ b/app/Classes/Modules/Delivery/ControllersLogic/ListOrdersLogic.php @@ -0,0 +1,57 @@ + 'Retrieved Orders', + 'message' => 'You have successfully retrieved a list of Orders' + ]; + } + + /** @var CanListOrders */ + private $canListOrders; + + /** @var ListsOrders */ + private $listsOrders; + + /** + * ListOrdersLogic constructor. + * @param CanListOrders $canListOrders + * @param ListsOrders $listsOrders + */ + public function __construct(CanListOrders $canListOrders, ListsOrders $listsOrders) + { + $this->canListOrders = $canListOrders; + $this->listsOrders = $listsOrders; + } + + public function logic(Request $request) : JsonResponse + { + $this->canListOrders->passes(); + + $query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true, 'type_in' => [OrderType::LAST_MILE_DELIVERY]])); + + return $this->collectionResponse(DeliveryOrderResource::collection($query)); + + } + + + +} diff --git a/app/Classes/Modules/Exports/Services/ExportsDeliveryOrders.php b/app/Classes/Modules/Exports/Services/ExportsDeliveryOrders.php new file mode 100644 index 00000000..03525eeb --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsDeliveryOrders.php @@ -0,0 +1,109 @@ +request = $request; + } + + public function headings(): array + { + return [ + 'Types_Of_Services', + 'Service_Type', + 'Sender_Name', + 'Sender_Company_Name', + 'Sender_Building_Unit', + 'Sender_Address', + 'Sender_Address_2', + 'Sender_Postal_Code', + 'Sender_Phone_Number', + 'Delivery_Name', + 'Delivery Company Name', + 'Delivery_Building_Unit', + 'Delivery_Address', + 'Delivery_Address_2', + 'Delivery_Postal_Code', + 'Delivery_Phone_Number', + 'Shipment_Type', + 'Mode', + 'Pickup_Address_Type', + 'Reference_Number', + 'Quantity', + 'Weight', + 'Length', + 'Width', + 'Height', + 'COD_Amount', + 'DO_Numbers' + ]; + } + + /** + * @return \Illuminate\Support\Collection|mixed + */ + public function query() + { + return Order::where('type', OrderType::LAST_MILE_DELIVERY); + } + + /** + * @param Order $order + * + * @return array + */ + public function map($order): array + { + $senderAddress = $order->addresses()->where('type', AddressType::PICK_UP)->first(); + $deliveryAddress = $order->addresses()->where('type', AddressType::DELIVERY)->first(); + $package = $order->packingLists()->first()->packages()->first(); + return [ + 'Standard Delivery', + 'ST00000003', + $senderAddress->contacts()->first()->reference, + '', + '*', + $senderAddress->street_one.', '.$senderAddress->street_two.' '.$senderAddress->district->name.' '.$senderAddress->postcode.' '.$senderAddress->state->name.' '.$senderAddress->country->name, + '', + $senderAddress->postcode, + $senderAddress->contacts()->first()->phone, + $deliveryAddress->contacts()->first()->reference, + '', + '*', + $deliveryAddress->street_one.', '.$deliveryAddress->street_two.' '.$deliveryAddress->district->name.' '.$deliveryAddress->postcode.' '.$deliveryAddress->state->name.' '.$deliveryAddress->country->name, + '', + $deliveryAddress->postcode, + $deliveryAddress->contacts()->first()->phone, + $package->type === PackageType::CARTON ? 'Package' : ($package->type === PackageType::PALLET ? 'Pallet' : 'Documents'), + 'Lodge In / Walk In', + 'Sender', + $order->reference, + $package->quantity, + $package->weight, + 1, + 1, + 1, + '', + '' + ]; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php index da0eb033..3096de9d 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/ListOrdersLogic.php @@ -6,6 +6,7 @@ namespace App\Classes\Modules\Orders\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Orders\Services\ListsOrders; use App\Classes\Modules\Orders\Standards\Rules\CanListOrders; +use App\Classes\ValueObjects\Constants\OrderType; use App\Http\Resources\OrderResource; use ErrorException; use Illuminate\Http\JsonResponse; @@ -44,7 +45,7 @@ class ListOrdersLogic extends AbstractControllerLogic { $this->canListOrders->passes(); - $query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true])); + $query = $this->listsOrders->execute(array_merge($this->listsOrders->deserializeFilters($request->input('filters')), ['with_parcels' => true, 'type_in' => [OrderType::SHARED_CONTAINER, OrderType::DEDICATED_CONTAINER]])); return $this->collectionResponse(OrderResource::collection($query)); diff --git a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php index 5a7c22eb..c427a20f 100644 --- a/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php +++ b/app/Classes/Modules/Orders/Processors/CreateOrderProcessor.php @@ -84,7 +84,7 @@ class CreateOrderProcessor /** @var Order $order */ $order = $this->createsOrder->execute($importer, $orderObject); - $addressObject = new AddressObject($address->street_one, $address->street_two, $address->country_id, $address->state_id, $address->district_id, $address->postcode,$address->reference); + $addressObject = new AddressObject($address->street_one, $address->street_two, $address->country_id, $address->state_id, $address->district_id, $address->postcode, $address->type, ApprovalStatus::APPROVED, $address->reference); /** @var Address $order_address */ $order_address = $this->createAddress->execute($order, $addressObject); diff --git a/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php b/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php index 81b31026..514aafca 100644 --- a/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php +++ b/app/Classes/Modules/Orders/Processors/RequestChangeOrderAddressProcessor.php @@ -8,6 +8,7 @@ use App\Classes\Modules\Addresses\Services\CreatesAddress; 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\AddressType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject; @@ -76,7 +77,7 @@ 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); + $addressObject = new AddressObject($address->street_one, $address->street_two, $address->country_id, $address->state_id, $address->district_id, $address->postcode, AddressType::DELIVERY, ApprovalStatus::PENDING_VERIFICATION, $address->reference); $order_address = $this->createsAddress->execute($order, $addressObject); $contact = $address->contacts()->first(); diff --git a/app/Classes/ValueObjects/Constants/AddressType.php b/app/Classes/ValueObjects/Constants/AddressType.php index 4fdc3a29..614b9774 100644 --- a/app/Classes/ValueObjects/Constants/AddressType.php +++ b/app/Classes/ValueObjects/Constants/AddressType.php @@ -8,4 +8,6 @@ final class AddressType { public const DELIVERY = 2; + public const PICK_UP = 3; + } diff --git a/app/Classes/ValueObjects/Constants/OrderType.php b/app/Classes/ValueObjects/Constants/OrderType.php index ca203697..6558edd1 100644 --- a/app/Classes/ValueObjects/Constants/OrderType.php +++ b/app/Classes/ValueObjects/Constants/OrderType.php @@ -8,4 +8,6 @@ final class OrderType { public const DEDICATED_CONTAINER = 1; + public const LAST_MILE_DELIVERY = 2; + } diff --git a/app/Classes/ValueObjects/Constants/PackageType.php b/app/Classes/ValueObjects/Constants/PackageType.php index c38ad962..7865473a 100644 --- a/app/Classes/ValueObjects/Constants/PackageType.php +++ b/app/Classes/ValueObjects/Constants/PackageType.php @@ -10,4 +10,6 @@ final class PackageType { public const OVER_WEIGHT = 2; + public const DOCUMENT = 3; + } diff --git a/app/Http/Controllers/Delivery/CreateDeliveryOrderController.php b/app/Http/Controllers/Delivery/CreateDeliveryOrderController.php new file mode 100644 index 00000000..c6ab0ba2 --- /dev/null +++ b/app/Http/Controllers/Delivery/CreateDeliveryOrderController.php @@ -0,0 +1,20 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Delivery/ExportDeliveryOrdersToExcelController.php b/app/Http/Controllers/Delivery/ExportDeliveryOrdersToExcelController.php new file mode 100644 index 00000000..9121fe00 --- /dev/null +++ b/app/Http/Controllers/Delivery/ExportDeliveryOrdersToExcelController.php @@ -0,0 +1,33 @@ +headers->set('Authorization', 'Bearer '.$token); + } + + public function lineClear(Request $request){ + $exportsTransactions = new ExportsDeliveryOrders($request); + $response = $exportsTransactions->download('line-clear-export.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Delivery/ListOrdersController.php b/app/Http/Controllers/Delivery/ListOrdersController.php new file mode 100644 index 00000000..6106eb7e --- /dev/null +++ b/app/Http/Controllers/Delivery/ListOrdersController.php @@ -0,0 +1,22 @@ +execute($request); + } +} diff --git a/app/Http/Resources/CompanyResource.php b/app/Http/Resources/CompanyResource.php index 38459a35..8e27ab73 100644 --- a/app/Http/Resources/CompanyResource.php +++ b/app/Http/Resources/CompanyResource.php @@ -18,7 +18,7 @@ class CompanyResource extends JsonResource */ public function toArray($request) { - $companyModule = $this->companyModules()->where('type', '=', BusinessType::IMPORTER)->first(); + $companyModule = $this->companyModules()->first(); return [ 'id' => $this->id, 'hash_id' => Crypt::encryptString($this->id), @@ -30,8 +30,8 @@ class CompanyResource extends JsonResource 'contact' => new ContactResource ($this->when($this->has('contacts'), $this->contacts->first())), 'employee' => new UserResource($companyModule->employees()->first()), 'company_module' => new CompanyModuleResource($companyModule), - 'last_order' => new OrderResource($companyModule ? $companyModule->orders()->orderBy('id', 'DESC')->first(): null), - 'order_count' => $this->orders()->count(), + 'last_order' => $companyModule->type === 7 ? new DeliveryOrderResource($companyModule->orders()->orderBy('id', 'DESC')->first()) : new OrderResource($companyModule->orders()->orderBy('id', 'DESC')->first()), + 'order_count' => $companyModule->orders()->count(), 'identification' => new DocumentResource($this->documents->whereIn('document_type', DocumentType::IDENTIFICATION_DOCUMENTS)->whereIn('status', [ApprovalStatus::PENDING_VERIFICATION, ApprovalStatus::APPROVED])->first()), 'created_at' => $this->created_at->format('d-m-Y') diff --git a/app/Http/Resources/DeliveryOrderResource.php b/app/Http/Resources/DeliveryOrderResource.php new file mode 100644 index 00000000..cc81bfad --- /dev/null +++ b/app/Http/Resources/DeliveryOrderResource.php @@ -0,0 +1,33 @@ + $this->id, + 'reference' => $this->reference, + 'type' => (int) $this->type, + 'status' => (int) $this->status, + 'company_module' => new CompanyModuleResource($this->companyModule), + 'sender_address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->where('type', AddressType::PICK_UP)->first()), + 'delivery_address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->where('type', AddressType::DELIVERY)->first()), + 'packingList' => new DeliveryPackingListResource($this->packingLists()->first()), + 'remarks' => RemarkResource::collection($this->remarks), + 'created_at' => $this->created_at->format('d-m-Y') + ]; + + } +} diff --git a/app/Http/Resources/DeliveryPackingListResource.php b/app/Http/Resources/DeliveryPackingListResource.php new file mode 100644 index 00000000..16e71caf --- /dev/null +++ b/app/Http/Resources/DeliveryPackingListResource.php @@ -0,0 +1,36 @@ +packages()->first(); + + return [ + 'id' => $this->id, + 'claimant_id' => $this->claimant_id, + 'reference' => $this->reference, + 'status' => $this->status, + 'transport' => new TransportResource($this->transports()->first()), + 'type' => $package->type, + 'description' => $package->description, + 'weight' => (float) $package->weight, + 'quantity' => (float) $package->quantity, + ]; + } +} diff --git a/app/Models/Addon.php b/app/Models/Addon.php new file mode 100644 index 00000000..68118643 --- /dev/null +++ b/app/Models/Addon.php @@ -0,0 +1,36 @@ +morphTo(); + } +} diff --git a/app/Models/Order.php b/app/Models/Order.php index 5011fd36..352f46fb 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -58,6 +58,14 @@ class Order extends AbstractModel implements Addressable, Packable, Remarkable, return $this->morphMany(PackingList::class, 'owner'); } + /** + * @return MorphMany + */ + public function addons(): morphMany + { + return $this->morphMany(Addon::class, 'owner'); + } + /** * @return MorphMany */ diff --git a/app/Models/PackingList.php b/app/Models/PackingList.php index a6fd95e5..1ca19f1d 100644 --- a/app/Models/PackingList.php +++ b/app/Models/PackingList.php @@ -36,6 +36,14 @@ class PackingList extends AbstractModel implements Transportable, Steppable, Pac return $this->morphTo(); } + /** + * @return MorphMany + */ + public function addons(): morphMany + { + return $this->morphMany(Addon::class, 'owner'); + } + public function containers(): BelongsToMany { return $this->BelongsToMany(Container::class, ContainerPackingList::class); diff --git a/database/migrations/2022_03_14_133555_create_addons_table.php b/database/migrations/2022_03_14_133555_create_addons_table.php new file mode 100644 index 00000000..4b58535c --- /dev/null +++ b/database/migrations/2022_03_14_133555_create_addons_table.php @@ -0,0 +1,37 @@ +id(); + $table->morphs('owner'); + $table->string('reference',200); + $table->integer('type')->default(0); + $table->integer('quantity')->default(1); + $table->integer('status')->default(0); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('order_addons'); + } +} diff --git a/database/seeders/CompaniesTableSeeder.php b/database/seeders/CompaniesTableSeeder.php index da6c1061..bcabe9a0 100644 --- a/database/seeders/CompaniesTableSeeder.php +++ b/database/seeders/CompaniesTableSeeder.php @@ -16,6 +16,7 @@ use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus; use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; use App\Classes\Modules\Contacts\Services\CreatesContact; +use App\Classes\ValueObjects\Constants\AddressType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\CompanyType; use App\Classes\ValueObjects\Constants\BusinessType; @@ -112,7 +113,7 @@ class CompaniesTableSeeder extends Seeder /** @var CompanyModule $companyModule */ $companyModule = $this->createCompanyModuleProcessor->execute($company, BusinessType::FREIGHT_FORWARDER); - $address = new AddressObject('Malaysian Global Innovation & Creativity Center Level 1 CWS', 'Block 3730,Persiaran APEC', 1, 15, 402, 63000); + $address = new AddressObject('Malaysian Global Innovation & Creativity Center Level 1 CWS', 'Block 3730,Persiaran APEC', 1, 15, 402, 63000, AddressType::BILLING, ApprovalStatus::APPROVED); $this->createsAddress->execute($companyModule, $address); $contact = new ContactObject('Office Number', '0182909252', '', ''); @@ -131,22 +132,22 @@ class CompaniesTableSeeder extends Seeder if ($name === 'Guangzhou'){ $companyModule->update(['name' => $name, 'reference' => 'GZ-V01']); - $address = new AddressObject('白云区,大朗南路 白云湖大道自编13号 7号仓库', '高德地图导航:广州市世通行', 2, 35, 633, 510450); + $address = new AddressObject('白云区,大朗南路 白云湖大道自编13号 7号仓库', '高德地图导航:广州市世通行', 2, 35, 633, 510450, AddressType::DELIVERY, ApprovalStatus::APPROVED); $contact = new ContactObject('杨维民', '13600055019', '', ''); } elseif ($name === 'Yiwu') { $companyModule->update(['name' => $name, 'reference' => 'YW-V01']); - $address = new AddressObject('义乌市诚信大道义乌港A区2楼194号', '', 2, 27, 532, 322000); + $address = new AddressObject('义乌市诚信大道义乌港A区2楼194号', '', 2, 27, 532, 322000, AddressType::DELIVERY, ApprovalStatus::APPROVED); $contact = new ContactObject('小曾', '13575982901', '', ''); } elseif ($name === 'Klang') { $companyModule->update(['name' => $name, 'reference' => 'KL-V01']); - $address = new AddressObject('LOT 1357 A, JALAN TANJUNG SHAWAL', 'KAMPUNG SUNGAI PINANG', 1, 15, 412, 41400); + $address = new AddressObject('LOT 1357 A, JALAN TANJUNG SHAWAL', 'KAMPUNG SUNGAI PINANG', 1, 15, 412, 41400, AddressType::DELIVERY, ApprovalStatus::APPROVED); $contact = new ContactObject('Mr. Yang', '0162237680', '', ''); } elseif ($name === 'Sabah') { $companyModule->update(['name' => $name, 'reference' => 'SB-V01']); - $address = new AddressObject('Warehouse A & B, No. 2, Lorong Kacang Tanah 1', 'Jalan Kolombong, Kolombong', 1, 13, 316, 88450); + $address = new AddressObject('Warehouse A & B, No. 2, Lorong Kacang Tanah 1', 'Jalan Kolombong, Kolombong', 1, 13, 316, 88450, AddressType::DELIVERY, ApprovalStatus::APPROVED); } elseif ($name === 'Sarawak') { $companyModule->update(['name' => $name, 'reference' => 'SRW-V01']); - $address = new AddressObject('OPPOSITE HT POLE 51, LT 664 JALAN SUNGAI SALIM', '', 1, 14, 381, 96000); + $address = new AddressObject('OPPOSITE HT POLE 51, LT 664 JALAN SUNGAI SALIM', '', 1, 14, 381, 96000, AddressType::DELIVERY, ApprovalStatus::APPROVED); } @@ -161,7 +162,7 @@ class CompaniesTableSeeder extends Seeder /** @var CompanyModule $companyModule */ $companyModule = $this->createCompanyModuleProcessor->execute($company, $businessType); - $address = new AddressObject('2, Jalan TSB 6, Taman Industri Sungai Buloh', '', 1, 15, 419, 47000); + $address = new AddressObject('2, Jalan TSB 6, Taman Industri Sungai Buloh', '', 1, 15, 419, 47000, AddressType::BILLING, ApprovalStatus::APPROVED); $this->createsAddress->execute($companyModule, $address); $contact = new ContactObject('Office Number', '036148 8108', '', ''); diff --git a/database/seeders/LastMileDeliveryTableSeeder.php b/database/seeders/LastMileDeliveryTableSeeder.php new file mode 100644 index 00000000..e56a1ea8 --- /dev/null +++ b/database/seeders/LastMileDeliveryTableSeeder.php @@ -0,0 +1,123 @@ +createCompanyProcessor = $createCompanyProcessor; + $this->updatesCompanyStatus = $updatesCompanyStatus; + $this->createCompanyModuleProcessor = $createCompanyModuleProcessor; + $this->createContactProcessor = $createContactProcessor; + $this->createsCompanyConnection = $createsCompanyConnection; + $this->approvesCompanyConnection = $approvesCompanyConnection; + $this->createAddressFromOldAddressProcessor = $createAddressFromOldAddressProcessor; + $this->createsAddress = $createsAddress; + $this->createsCompany = $createsCompany; + $this->createsContact = $createsContact; + } + + + /** + * Run the database seeds. + * + * @return void + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function run() + { + + $companies = [ + new CompanyObject('Last Mile Delivery', 'LMD', CompanyType::COMPANY_BUSINESS, ApprovalStatus::APPROVED), + ]; + + + foreach ($companies as $companyObject) { + + /** @var Company $company */ + $company = $this->createsCompany->execute($companyObject); + + /** @var CompanyModule $companyModule */ + $companyModule = $this->createCompanyModuleProcessor->execute($company, BusinessType::LAST_MILE_DELIVERY_AGENT); + + $address = new AddressObject('Malaysian Global Innovation & Creativity Center Level 1 CWS', 'Block 3730,Persiaran APEC', 1, 15, 402, 63000, AddressType::BILLING, ApprovalStatus::APPROVED); + $this->createsAddress->execute($companyModule, $address); + + $contact = new ContactObject('Office Number', '0182909252', '', ''); + $this->createsContact->execute($companyModule, $contact); + + continue; + + } + } +} diff --git a/database/seeders/ModernWarehouseTableSeeder.php b/database/seeders/ModernWarehouseTableSeeder.php index 7f76fd2e..2d97241d 100644 --- a/database/seeders/ModernWarehouseTableSeeder.php +++ b/database/seeders/ModernWarehouseTableSeeder.php @@ -17,6 +17,7 @@ use App\Classes\Modules\Companies\Services\UpdatesCompanyStatus; use App\Classes\Modules\Contacts\DataTransferObjects\ContactObject; use App\Classes\Modules\Contacts\Processors\CreateContactProcessor; use App\Classes\Modules\Contacts\Services\CreatesContact; +use App\Classes\ValueObjects\Constants\AddressType; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\CompanyType; use App\Classes\ValueObjects\Constants\BusinessType; @@ -106,7 +107,7 @@ class ModernWarehouseTableSeeder extends Seeder $companyModule = $this->createCompanyModuleProcessor->execute($company, BusinessType::WAREHOUSE); $companyModule->update(['name' => 'Yiwu', 'reference' => 'YW-V02']); - $address = new AddressObject('义乌市 后宅街道 起航路233号百汇科创园园区里面', '(进口处进来第一个路口左转至出口处右手边国际物流仓库)', 2, 27, 532, 322000); + $address = new AddressObject('义乌市 后宅街道 起航路233号百汇科创园园区里面', '(进口处进来第一个路口左转至出口处右手边国际物流仓库)', 2, 27, 532, 322000, AddressType::BILLING, ApprovalStatus::APPROVED); $contact = new ContactObject('韩成名', '18058489899 / 18058929899', '', ''); $this->createsAddress->execute($companyModule, $address); diff --git a/resources/assets/images/lineclear.png b/resources/assets/images/lineclear.png new file mode 100644 index 0000000000000000000000000000000000000000..3a71fc9fd07893ae07163923ecf3d695badf924e GIT binary patch literal 8339 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 RfB!u!Bc&i&AYthBzW~*qhwcCX literal 0 HcmV?d00001 diff --git a/resources/assets/vue/app.js b/resources/assets/vue/app.js index b81feb10..5195d9c8 100644 --- a/resources/assets/vue/app.js +++ b/resources/assets/vue/app.js @@ -14,6 +14,10 @@ import vuelidate from 'vuelidate'; /** Input Mask **/ import VueTheMask from 'vue-the-mask'; +import VueEasytable from "vue-easytable"; // import library + +Vue.use(VueEasytable); + /** Mixins */ import request from './general/mixins/request'; diff --git a/resources/assets/vue/components/accounts/elements/LogoutComponent.vue b/resources/assets/vue/components/accounts/elements/LogoutComponent.vue index a3d65272..1236d117 100644 --- a/resources/assets/vue/components/accounts/elements/LogoutComponent.vue +++ b/resources/assets/vue/components/accounts/elements/LogoutComponent.vue @@ -67,11 +67,11 @@ this.submit(this.route('api.account.authentication.logout'), 'get', this.section, false, false) }, successHandler(){ - this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: this.route('login')}); + this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: [7, 8].includes(this.$store.getters.getCompanyModuleType) ? this.route('last_mile_delivery.login') : this.route('login') }); this.$store.dispatch('updateIfCreateNewOrder',''); }, errorHandler(){ - this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: this.route('login')}); + this.$store.dispatch('userAuthentication', {access_token: '', redirect_url: [7, 8].includes(this.$store.getters.getCompanyModuleType) ? this.route('last_mile_delivery.login') : this.route('login') }); } } } diff --git a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue index a88815cf..8db903db 100644 --- a/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/LoginFormComponent.vue @@ -25,7 +25,7 @@
-
Sign In
+
Sign In
@@ -55,7 +55,8 @@ parameters: { email: this.email, password: '' - } + }, + currentUrl: window.location.href, }; }, methods: { diff --git a/resources/assets/vue/components/accounts/forms/NewRegistrationFormComponent.vue b/resources/assets/vue/components/accounts/forms/NewRegistrationFormComponent.vue index abca50db..60e20b01 100644 --- a/resources/assets/vue/components/accounts/forms/NewRegistrationFormComponent.vue +++ b/resources/assets/vue/components/accounts/forms/NewRegistrationFormComponent.vue @@ -55,7 +55,7 @@
-
- + - + @@ -51,7 +51,11 @@ props: { value: { required: false + }, + 'section': { + type: String, } + }, data(){ return { diff --git a/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue b/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue index 0b6edc6b..5aaf56d0 100644 --- a/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue +++ b/resources/assets/vue/components/addresses/forms/AddressFormComponent.vue @@ -29,7 +29,7 @@
- + @@ -93,6 +93,10 @@ id: { type: Number, required: true + }, + type: { + type: Number, + default: 2 } }, data() { @@ -104,6 +108,7 @@ street_two: '', district_id: '', post_code: '', + type: this.type, remark: '', phone: '', person_in_charge: '', @@ -118,6 +123,7 @@ this.parameters.street_two = this.data.street_two; this.parameters.district_id = this.data.district.id; this.parameters.post_code = this.data.post_code; + this.parameters.type = this.data.type; this.parameters.phone = this.data.contact ? this.data.contact.phone : ''; this.parameters.person_in_charge = this.data.contact ? this.data.contact.reference : ''; this.parameters.remark = this.data.remark ? this.data.remark.content : ''; diff --git a/resources/assets/vue/components/addresses/sections/AddressProfileSectionComponent.vue b/resources/assets/vue/components/addresses/sections/AddressProfileSectionComponent.vue new file mode 100644 index 00000000..2466a05d --- /dev/null +++ b/resources/assets/vue/components/addresses/sections/AddressProfileSectionComponent.vue @@ -0,0 +1,19 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/DeliveryCustomerProfileSectionComponent.vue b/resources/assets/vue/components/companies/sections/DeliveryCustomerProfileSectionComponent.vue new file mode 100644 index 00000000..520cf795 --- /dev/null +++ b/resources/assets/vue/components/companies/sections/DeliveryCustomerProfileSectionComponent.vue @@ -0,0 +1,111 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/containers/forms/CreateDeliveryOrderFormComponent.vue b/resources/assets/vue/components/containers/forms/CreateDeliveryOrderFormComponent.vue deleted file mode 100644 index 068f7404..00000000 --- a/resources/assets/vue/components/containers/forms/CreateDeliveryOrderFormComponent.vue +++ /dev/null @@ -1,238 +0,0 @@ - - \ No newline at end of file diff --git a/resources/assets/vue/components/containers/forms/CreateDeliveryPackinglistFormComponent.vue b/resources/assets/vue/components/containers/forms/CreateDeliveryPackinglistFormComponent.vue deleted file mode 100644 index 79aecce6..00000000 --- a/resources/assets/vue/components/containers/forms/CreateDeliveryPackinglistFormComponent.vue +++ /dev/null @@ -1,244 +0,0 @@ - - \ No newline at end of file diff --git a/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue b/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue index d30fdbaf..285c19ff 100644 --- a/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue +++ b/resources/assets/vue/components/general/forms/ValidationWrapperComponent.vue @@ -2,7 +2,7 @@
-
+
@@ -21,7 +21,7 @@ validator: { required: true }, - selecatable: { + selectable: { type: Boolean, default: false } diff --git a/resources/assets/vue/components/orders/forms/DeliveryOrderFormComponent.vue b/resources/assets/vue/components/orders/forms/DeliveryOrderFormComponent.vue new file mode 100644 index 00000000..99d9778f --- /dev/null +++ b/resources/assets/vue/components/orders/forms/DeliveryOrderFormComponent.vue @@ -0,0 +1,366 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/orders/sections/DeliveryOrdersTableSectionComponent.vue b/resources/assets/vue/components/orders/sections/DeliveryOrdersTableSectionComponent.vue new file mode 100644 index 00000000..5cef518d --- /dev/null +++ b/resources/assets/vue/components/orders/sections/DeliveryOrdersTableSectionComponent.vue @@ -0,0 +1,176 @@ + + diff --git a/resources/assets/vue/components/reports/sections/ProfitModelReportSectionComponent.vue b/resources/assets/vue/components/reports/sections/ProfitModelReportSectionComponent.vue index f7405ba3..bf2a8dc2 100644 --- a/resources/assets/vue/components/reports/sections/ProfitModelReportSectionComponent.vue +++ b/resources/assets/vue/components/reports/sections/ProfitModelReportSectionComponent.vue @@ -26,7 +26,7 @@
- + diff --git a/resources/assets/vue/components/settings/forms/SegmentServiceFormComponent.vue b/resources/assets/vue/components/settings/forms/SegmentServiceFormComponent.vue index 5405ae6e..a3ece6fa 100644 --- a/resources/assets/vue/components/settings/forms/SegmentServiceFormComponent.vue +++ b/resources/assets/vue/components/settings/forms/SegmentServiceFormComponent.vue @@ -43,7 +43,7 @@
- + @@ -115,7 +115,7 @@
- +
diff --git a/resources/assets/vue/components/settings/forms/ServiceFormComponent.vue b/resources/assets/vue/components/settings/forms/ServiceFormComponent.vue index eac2a388..5ea960dd 100644 --- a/resources/assets/vue/components/settings/forms/ServiceFormComponent.vue +++ b/resources/assets/vue/components/settings/forms/ServiceFormComponent.vue @@ -103,7 +103,7 @@
- + diff --git a/resources/assets/vue/general/mixins/addresses/validation/addressFormValidation.js b/resources/assets/vue/general/mixins/addresses/validation/addressFormValidation.js index 98d57e59..19734539 100644 --- a/resources/assets/vue/general/mixins/addresses/validation/addressFormValidation.js +++ b/resources/assets/vue/general/mixins/addresses/validation/addressFormValidation.js @@ -9,8 +9,8 @@ export default { district_id: { required }, post_code: { required }, remark: {}, - phone: {numeric}, - person_in_charge: {}, + phone: {required, numeric}, + person_in_charge: { required }, } }, mixins: [addressFormHandler] diff --git a/resources/assets/vue/general/mixins/formHandler.js b/resources/assets/vue/general/mixins/formHandler.js index 0ffe3c71..ed1d39a6 100644 --- a/resources/assets/vue/general/mixins/formHandler.js +++ b/resources/assets/vue/general/mixins/formHandler.js @@ -17,6 +17,7 @@ export default { isLoading: false, error: '', money: {decimal: '.',thousands: ',', precision: 2}, + weight: {decimal: '.',thousands: ',', precision: 1}, productPrice: {decimal: '.',thousands: ',', precision: 3}, exchangeRate: {decimal: '.', thousands: '', precision: 5}, percentage: {decimal: '.', thousands: '', precision: 2, suffix: '%'}, diff --git a/resources/assets/vue/general/mixins/guards.js b/resources/assets/vue/general/mixins/guards.js index cd61d755..14265d6c 100644 --- a/resources/assets/vue/general/mixins/guards.js +++ b/resources/assets/vue/general/mixins/guards.js @@ -5,7 +5,7 @@ export default { (this.$store.getters.isAuthenticated && !this.isProtectedRoute()&& this.isWithTokenRoute()) ? window.location.href = this.route('dashboard') : ''; }, isProtectedRoute(){ - const unprotectedRoutes = [this.route('login'), this.route('account.email.verification'), this.route('company.claim'), this.route('signup')]; + const unprotectedRoutes = [this.route('login'), this.route('account.email.verification'), this.route('company.claim'), this.route('last_mile_delivery.login')]; if(window.location.href.indexOf(this.route('company.claim')) === 0) { return false; } diff --git a/resources/assets/vue/vuex/modules/authentication.js b/resources/assets/vue/vuex/modules/authentication.js index 462cbd37..bd12ef34 100644 --- a/resources/assets/vue/vuex/modules/authentication.js +++ b/resources/assets/vue/vuex/modules/authentication.js @@ -17,6 +17,7 @@ export default { getUserEmail: (state, getters) => getters.getDecodedAccessToken.user.email, getCompanyId: (state, getters) => getters.getDecodedAccessToken.user.company_id, getCompanyModuleId: (state, getters) => getters.getDecodedAccessToken.user.company_module_id, + getCompanyModuleType: (state, getters) => getters.getDecodedAccessToken.user.company_module_type, getOrder: (state, getters) => getters.getDecodedAccessToken.user.order, getDecodedAccessToken(state) { diff --git a/resources/views/layouts/base_portal.blade.php b/resources/views/layouts/base_portal.blade.php index a86334db..11f35e01 100644 --- a/resources/views/layouts/base_portal.blade.php +++ b/resources/views/layouts/base_portal.blade.php @@ -14,7 +14,7 @@
@include('partials.menu')
-
+
@include('partials.header')
diff --git a/resources/views/pages/accounts/signup.blade.php b/resources/views/pages/accounts/signup.blade.php index a8f49cf8..0e7c8b67 100644 --- a/resources/views/pages/accounts/signup.blade.php +++ b/resources/views/pages/accounts/signup.blade.php @@ -12,12 +12,12 @@
-

Spend less time managing your logistics and more time optimizing your operations.

+

Spend less time managing your delivery and more time optimizing your operations.

-

You know how to run your operations, let us help you streamline your logistic supply chain management.

+

You know how to run your operations, let us help you streamline your delivery management.

diff --git a/resources/views/pages/delivery/customers.blade.php b/resources/views/pages/delivery/customers.blade.php index 1cf41bb6..6deabe2f 100644 --- a/resources/views/pages/delivery/customers.blade.php +++ b/resources/views/pages/delivery/customers.blade.php @@ -1,16 +1,5 @@
-
-
-
-
-
Create Order
-
-
- -
-
- -

orders list

+
\ No newline at end of file diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php index 685d3f27..b7623510 100644 --- a/resources/views/partials/header.blade.php +++ b/resources/views/partials/header.blade.php @@ -4,8 +4,8 @@
diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index cd578001..9d932c84 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -2,8 +2,8 @@
@@ -27,7 +27,7 @@ style=" fill:#000000;">
@@ -155,7 +155,7 @@
-
+
diff --git a/routes/delivery.php b/routes/delivery.php index 7370f146..da4732e3 100644 --- a/routes/delivery.php +++ b/routes/delivery.php @@ -3,5 +3,8 @@ use Illuminate\Support\Facades\Route; Route::group(['prefix' => 'delivery', 'namespace' => 'Delivery', 'as' => 'delivery.'], function () { - Route::post('/delivery/registration', 'CreateDeliveryCustomerController@create')->name('account.registration.register'); + Route::post('/signup', 'CreateDeliveryCustomerController@create')->name('account.registration.register'); + Route::post('/order/create', 'CreateDeliveryOrderController@create')->name('order.create'); + Route::get('/orders/list', 'ListOrdersController@list')->name('order.list'); + }); diff --git a/routes/web.php b/routes/web.php index 8a727a21..273eda25 100644 --- a/routes/web.php +++ b/routes/web.php @@ -31,13 +31,22 @@ Route::get('', function () { return view('pages.accounts.login'); })->name('login'); -Route::get('/delivery', function () { - return view('pages.accounts.signup'); -})->name('signup'); -Route::get('/delivery/dashboard', function () { - return view('pages.delivery.dashboard'); -})->name('delivery.dashboard'); +Route::group(['prefix' => 'last_mile_delivery', 'as' => 'last_mile_delivery.'], function () { + Route::get('/', function () { + return view('pages.accounts.signup'); + })->name('login'); + + Route::get('/dashboard', function () { + return view('pages.delivery.dashboard'); + })->name('dashboard'); + + Route::get('/orders/export', 'Delivery\ExportDeliveryOrdersToExcelController@lineClear')->name('order.export'); + + +}); + + Route::group(['prefix' => 'swagger'], function () { Route::get('/', function () {