From 74ede9e3dd4a7a6d5b2200236acfb98e354997f1 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 15 Jan 2022 14:40:48 +0800 Subject: [PATCH 01/32] shipping updates --- .../WarehouseDetailsSectionComponent.vue | 54 +++++ .../sections/WarehouseSectionComponent.vue | 228 ++++++++++++++++++ .../templates/warehouseDetails.blade.php | 45 ++++ resources/views/pages/warehouse.blade.php | 25 ++ resources/views/partials/menu.blade.php | 11 + routes/web.php | 12 +- 6 files changed, 374 insertions(+), 1 deletion(-) create mode 100644 resources/assets/vue/components/companies/sections/WarehouseDetailsSectionComponent.vue create mode 100644 resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue create mode 100644 resources/views/pages/templates/warehouseDetails.blade.php create mode 100644 resources/views/pages/warehouse.blade.php diff --git a/resources/assets/vue/components/companies/sections/WarehouseDetailsSectionComponent.vue b/resources/assets/vue/components/companies/sections/WarehouseDetailsSectionComponent.vue new file mode 100644 index 00000000..7428e1b3 --- /dev/null +++ b/resources/assets/vue/components/companies/sections/WarehouseDetailsSectionComponent.vue @@ -0,0 +1,54 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue b/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue new file mode 100644 index 00000000..c5837cad --- /dev/null +++ b/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue @@ -0,0 +1,228 @@ + + \ No newline at end of file diff --git a/resources/views/pages/templates/warehouseDetails.blade.php b/resources/views/pages/templates/warehouseDetails.blade.php new file mode 100644 index 00000000..b0901179 --- /dev/null +++ b/resources/views/pages/templates/warehouseDetails.blade.php @@ -0,0 +1,45 @@ +@extends('layouts.base_portal') +@section('inner_content') +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
Parcel in Warehouse
+
+
+ + + +
+
+ +
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/pages/warehouse.blade.php b/resources/views/pages/warehouse.blade.php new file mode 100644 index 00000000..ce290140 --- /dev/null +++ b/resources/views/pages/warehouse.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.base_portal') +@section('inner_content') +
+
+
+
+
+
+
Warehouse List
+
+
+
+
+ + + +
+
+
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index c32eb3df..48f660ca 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -74,6 +74,17 @@
Containers
+
+
+ +
+
+
Warehouse
+
+
'.$i++.'. '.$marking.'
'; } }); -Route::get('/export/customer-latest-order-date/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export'); \ No newline at end of file +Route::get('/export/customer-latest-order-date/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export'); + +Route::get('/warehouse', function () { + return view('pages.warehouse'); +})->name('warehouse'); + +Route::get('/warehouse/show/{reference}', function ($reference) { + $connection = CompanyConnection::where('invitee_reference', '2417MEN')->first(); + $id = $connection->invitee->company->id; + return view('pages.templates.warehouseDetails', ['id' => $id]); +})->name('warehouse.show'); \ No newline at end of file From b6ed451b540ef162a3962f8a2f73a97bb3b6768e Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 15 Jan 2022 14:46:23 +0800 Subject: [PATCH 02/32] update route for warehouse details --- routes/web.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 79a115df..c0b04732 100644 --- a/routes/web.php +++ b/routes/web.php @@ -207,7 +207,7 @@ Route::get('/warehouse', function () { return view('pages.warehouse'); })->name('warehouse'); -Route::get('/warehouse/show/{reference}', function ($reference) { +Route::get('/warehouse/{reference}/show', function ($reference) { $connection = CompanyConnection::where('invitee_reference', '2417MEN')->first(); $id = $connection->invitee->company->id; return view('pages.templates.warehouseDetails', ['id' => $id]); From f8a985035ef494e821c136a4f66f53295087a8f8 Mon Sep 17 00:00:00 2001 From: glovetleong Date: Fri, 18 Feb 2022 21:57:25 +0800 Subject: [PATCH 03/32] notification --- app/Classes/General/Interfaces/Notifiable.php | 15 +++ .../NotificationObject.php | 101 ++++++++++++++++++ .../CreateNotificationProcessor.php | 27 +++++ .../Services/CreatesNotification.php | 30 ++++++ .../Constants/NotificationType.php | 11 ++ .../ValueObjects/Constants/Notifications.php | 8 +- app/Models/Notification.php | 18 ++++ app/Models/Order.php | 28 ++++- ...2_18_120837_create_notifications_table.php | 40 +++++++ 9 files changed, 272 insertions(+), 6 deletions(-) create mode 100644 app/Classes/General/Interfaces/Notifiable.php create mode 100644 app/Classes/Modules/Notifications/DataTransferObjects/NotificationObject.php create mode 100644 app/Classes/Modules/Notifications/Processors/CreateNotificationProcessor.php create mode 100644 app/Classes/Modules/Notifications/Services/CreatesNotification.php create mode 100644 app/Classes/ValueObjects/Constants/NotificationType.php create mode 100644 app/Models/Notification.php create mode 100644 database/migrations/2022_02_18_120837_create_notifications_table.php diff --git a/app/Classes/General/Interfaces/Notifiable.php b/app/Classes/General/Interfaces/Notifiable.php new file mode 100644 index 00000000..b97a08c7 --- /dev/null +++ b/app/Classes/General/Interfaces/Notifiable.php @@ -0,0 +1,15 @@ +title = $title; + $this->description = $description; + $this->subject = $subject; + $this->target = $target; + $this->causer = $causer; + $this->status = $status; + } + + /** + * @return int + */ + public function getTitle(): string + { + return $this->title; + } + + /** + * @return int + */ + public function getDescription(): string + { + return $this->description; + } + + /** + * @return Notifiable + */ + public function getSubject(): Notifiable + { + return $this->subject; + } + + /** + * @return Notifiable + */ + public function getTarget(): Notifiable + { + return $this->target; + } + + /** + * @return Notifiable + */ + public function getCauser(): Notifiable + { + return $this->causer; + } + + /** + * @return int + */ + public function getStatus(): int + { + return $this->status; + } + + +} diff --git a/app/Classes/Modules/Notifications/Processors/CreateNotificationProcessor.php b/app/Classes/Modules/Notifications/Processors/CreateNotificationProcessor.php new file mode 100644 index 00000000..d6b077f8 --- /dev/null +++ b/app/Classes/Modules/Notifications/Processors/CreateNotificationProcessor.php @@ -0,0 +1,27 @@ +createsNotification = $createsNotification; + } + + public function execute(NotificationObject $object) + { + $notification = $this->createsNotification->execute($object); + return $notification; + } +} diff --git a/app/Classes/Modules/Notifications/Services/CreatesNotification.php b/app/Classes/Modules/Notifications/Services/CreatesNotification.php new file mode 100644 index 00000000..4f5ca5fd --- /dev/null +++ b/app/Classes/Modules/Notifications/Services/CreatesNotification.php @@ -0,0 +1,30 @@ +title = $object->getTitle(); + $model->description = $object->getDescription(); + $model->status = $object->getStatus(); + $model->subject_type = get_class($object->getSubject()); + $model->subject_id = $object->getSubject()->id; + $model->target_type = get_class($object->getTarget()); + $model->target_id = $object->getTarget()->id; + $model->causer_type = get_class($object->getCauser()); + $model->causer_id = $object->getCauser()->id; + $model->save(); + + return $model; + } +} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/NotificationType.php b/app/Classes/ValueObjects/Constants/NotificationType.php new file mode 100644 index 00000000..0c9ec5a4 --- /dev/null +++ b/app/Classes/ValueObjects/Constants/NotificationType.php @@ -0,0 +1,11 @@ + 'Unknown Action', - 'message' => 'unknown message..' + public const NEW_ARRIVED_PARCEL = [ + 'title' => 'New Arrived Parcel', + 'message' => 'you have received new parcel for your order #-' ]; } \ No newline at end of file diff --git a/app/Models/Notification.php b/app/Models/Notification.php new file mode 100644 index 00000000..06bd6024 --- /dev/null +++ b/app/Models/Notification.php @@ -0,0 +1,18 @@ +BelongsTo(Package::class, 'package_id', 'id'); + } +} diff --git a/app/Models/Order.php b/app/Models/Order.php index 5aabfd44..24f344c2 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -6,6 +6,7 @@ use App\Classes\General\Interfaces\Addressable; use App\Classes\General\Interfaces\Contactable; use App\Classes\General\Interfaces\Packable; use App\Classes\General\Interfaces\Remarkable; +use App\Classes\General\Interfaces\Notifiable; use App\Classes\ValueObjects\Constants\PackingListType; use App\Classes\ValueObjects\Constants\RoleTypes; use App\Classes\ValueObjects\Constants\ApprovalStatus; @@ -16,7 +17,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; -class Order extends AbstractModel implements Addressable, Packable, Remarkable +class Order extends AbstractModel implements Addressable, Packable, Remarkable, Notifiable { use SoftDeletes; @@ -33,6 +34,31 @@ class Order extends AbstractModel implements Addressable, Packable, Remarkable return $this->belongsTo(CompanyModule::class, 'company_module_id', 'id'); } + /** + * @return MorphMany + */ + public function subject(): morphMany + { + return $this->morphMany(Notification::class, 'subject_type'); + } + + /** + * @return MorphMany + */ + public function target(): morphMany + { + return $this->morphMany(Notification::class, 'target'); + } + + /** + * @return MorphMany + */ + public function causer(): morphMany + { + return $this->morphMany(Notification::class, 'causer'); + } + + /** * @return MorphMany */ diff --git a/database/migrations/2022_02_18_120837_create_notifications_table.php b/database/migrations/2022_02_18_120837_create_notifications_table.php new file mode 100644 index 00000000..d14cdc89 --- /dev/null +++ b/database/migrations/2022_02_18_120837_create_notifications_table.php @@ -0,0 +1,40 @@ +id(); + $table->string('title'); + $table->text('description'); + $table->morphs('subject'); + $table->morphs('target'); + $table->morphs('causer'); + $table->integer('status')->default(ApprovalStatus::APPROVED); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('notifications'); + } +} From 9a061d2f37a31c548ec254fef8ca3c8164837b79 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 26 Feb 2022 10:40:45 +0800 Subject: [PATCH 04/32] Warehouse Profile settings - warehouse - view details-> warehouse details / warehouse profile page --- .../General/Eloquent/Filters/ClaimantId.php | 20 ++ .../sections/WarehouseSectionComponent.vue | 272 +++++------------- .../elements/WarehouseChargesComponent.vue | 11 +- resources/views/pages/settings.blade.php | 8 +- .../templates/warehouseDetails.blade.php | 60 ++-- routes/web.php | 6 +- 6 files changed, 139 insertions(+), 238 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/ClaimantId.php diff --git a/app/Classes/General/Eloquent/Filters/ClaimantId.php b/app/Classes/General/Eloquent/Filters/ClaimantId.php new file mode 100644 index 00000000..f0f6ee94 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/ClaimantId.php @@ -0,0 +1,20 @@ +where('claimant_id', $value); + } + +} \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue b/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue index c5837cad..4a4509a4 100644 --- a/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue +++ b/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue @@ -1,215 +1,63 @@ diff --git a/resources/views/pages/warehouse_list.blade.php b/resources/views/pages/warehouse_list.blade.php index 4c72ebe0..89db8f42 100644 --- a/resources/views/pages/warehouse_list.blade.php +++ b/resources/views/pages/warehouse_list.blade.php @@ -2,11 +2,38 @@ @section('inner_content')
- +
+
+
Arrived Parcel
+
+
+
+
+
+
+
On Hold Parcel
+
+
+
+
Marking
+
Quantity
+
CBM
+
Overweight CBM
+
Total CBM
+
status
+
Delivery Date
+
+
+ + + +
@endsection \ No newline at end of file diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index 8425123f..a7b51ea2 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -60,7 +60,7 @@ style=" fill:#000000;">
From 346243047472a2b30a5c8fd8515bc506ed43b670 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 26 Feb 2022 16:55:56 +0800 Subject: [PATCH 06/32] Delivery List, Pending Delivery List Customer Profile --- .../General/Eloquent/Filters/ClaimantId.php | 2 +- .../ListCompanyModulesLogic.php | 61 ++++++ .../Services/ListsCompanyModules.php | 33 ++++ .../ListCompanyModulesController.php | 20 ++ ...CustomerProfileDetailsSectionComponent.vue | 180 ++++++++++++++++++ .../sections/WarehouseSectionComponent.vue | 10 +- .../WarehousePackingListComponent.vue | 2 +- .../pages/customers/profile_details.blade.php | 4 + resources/views/pages/delivery_list.blade.php | 134 +++++++++++++ resources/views/pages/settings.blade.php | 2 +- .../templates/warehouseDetails.blade.php | 14 +- .../views/pages/warehouse_list.blade.php | 2 +- resources/views/partials/menu.blade.php | 11 ++ routes/company.php | 2 + routes/web.php | 10 + 15 files changed, 473 insertions(+), 14 deletions(-) create mode 100644 app/Classes/Modules/Companies/ControllersLogic/ListCompanyModulesLogic.php create mode 100644 app/Classes/Modules/Companies/Services/ListsCompanyModules.php create mode 100644 app/Http/Controllers/Companies/ListCompanyModulesController.php create mode 100644 resources/assets/vue/components/companies/sections/CustomerProfileDetailsSectionComponent.vue create mode 100644 resources/views/pages/customers/profile_details.blade.php create mode 100644 resources/views/pages/delivery_list.blade.php diff --git a/app/Classes/General/Eloquent/Filters/ClaimantId.php b/app/Classes/General/Eloquent/Filters/ClaimantId.php index f0f6ee94..7d473825 100644 --- a/app/Classes/General/Eloquent/Filters/ClaimantId.php +++ b/app/Classes/General/Eloquent/Filters/ClaimantId.php @@ -4,7 +4,7 @@ namespace App\Classes\General\Eloquent\Filters; use Illuminate\Database\Eloquent\Builder; -class CompanyId implements Filter +class ClaimantId implements Filter { /** diff --git a/app/Classes/Modules/Companies/ControllersLogic/ListCompanyModulesLogic.php b/app/Classes/Modules/Companies/ControllersLogic/ListCompanyModulesLogic.php new file mode 100644 index 00000000..6d7bbc26 --- /dev/null +++ b/app/Classes/Modules/Companies/ControllersLogic/ListCompanyModulesLogic.php @@ -0,0 +1,61 @@ + 'Retrieved Company Moduels', + 'message' => 'You have successfully retrieved a list of Companies' + ]; + } + + /** @var CanListCompanies */ + private $canListCompanies; + + /** @var ListsCompanyModules */ + private $listsCompanyModules; + + /** + * ListCompaniesControllersLogic constructor. + * @param CanListCompanies $canListCompanies + * @param ListsCompanyModules $listsCompanyModules + */ + public function __construct(CanListCompanies $canListCompanies, ListsCompanyModules $listsCompanyModules) + { + $this->canListCompanies = $canListCompanies; + $this->listsCompanyModules = $listsCompanyModules; + } + + + /** + * @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 + { + $this->canListCompanies->passes(); + + $query = $this->listsCompanyModules->execute($this->listsCompanyModules->deserializeFilters($request->input('filters'))); + return $this->collectionResponse(CompanyModuleResource::collection($query)); + + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/Services/ListsCompanyModules.php b/app/Classes/Modules/Companies/Services/ListsCompanyModules.php new file mode 100644 index 00000000..906578c1 --- /dev/null +++ b/app/Classes/Modules/Companies/Services/ListsCompanyModules.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Companies/ListCompanyModulesController.php b/app/Http/Controllers/Companies/ListCompanyModulesController.php new file mode 100644 index 00000000..68bca75e --- /dev/null +++ b/app/Http/Controllers/Companies/ListCompanyModulesController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/CustomerProfileDetailsSectionComponent.vue b/resources/assets/vue/components/companies/sections/CustomerProfileDetailsSectionComponent.vue new file mode 100644 index 00000000..f61275e2 --- /dev/null +++ b/resources/assets/vue/components/companies/sections/CustomerProfileDetailsSectionComponent.vue @@ -0,0 +1,180 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue b/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue index 4a4509a4..bf7f8363 100644 --- a/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue +++ b/resources/assets/vue/components/companies/sections/WarehouseSectionComponent.vue @@ -70,7 +70,7 @@
- + @@ -79,7 +79,7 @@
- + @@ -88,7 +88,7 @@
- + @@ -103,6 +103,10 @@ \ No newline at end of file diff --git a/resources/assets/vue/components/containers/elements/WarehousePackingListComponent.vue b/resources/assets/vue/components/containers/elements/WarehousePackingListComponent.vue index b841c289..a6ee7987 100644 --- a/resources/assets/vue/components/containers/elements/WarehousePackingListComponent.vue +++ b/resources/assets/vue/components/containers/elements/WarehousePackingListComponent.vue @@ -12,7 +12,7 @@
{{ (parseFloat(cbm) + parseFloat(overweight)).toFixed(3)}}
{{item.transport ? 'Delivery' : item.status === 5 ? 'On Hold' : 'Release'}}
-

{{item.transport ? item.transport.current_schedule.eta : 'n/a'}}

+

{{item.transport ? (item.transport.current_schedule ? item.transport.current_schedule.eta : 'n/a') : 'n/a'}}

diff --git a/resources/views/pages/customers/profile_details.blade.php b/resources/views/pages/customers/profile_details.blade.php new file mode 100644 index 00000000..10534ff7 --- /dev/null +++ b/resources/views/pages/customers/profile_details.blade.php @@ -0,0 +1,4 @@ +@extends('layouts.base_portal') +@section('inner_content') + +@endsection \ No newline at end of file diff --git a/resources/views/pages/delivery_list.blade.php b/resources/views/pages/delivery_list.blade.php new file mode 100644 index 00000000..fb04b6c2 --- /dev/null +++ b/resources/views/pages/delivery_list.blade.php @@ -0,0 +1,134 @@ +@extends('layouts.base_portal') +@section('inner_content') + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Pending Arrangement
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Pending Delivery
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
Delivered
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Marking
+
Quantity
+
CBM
+
Overweight CBM
+
Total CBM
+
status
+
Delivery Date
+
+ + + +
+
+
+
+
+
Marking
+
Quantity
+
CBM
+
Overweight CBM
+
Total CBM
+
status
+
Delivery Date
+
+ + + +
+
+
+
+
+
Marking
+
Quantity
+
CBM
+
Overweight CBM
+
Total CBM
+
status
+
Delivery Date
+
+ + + +
+
+
+
+
+
+@endsection \ No newline at end of file diff --git a/resources/views/pages/settings.blade.php b/resources/views/pages/settings.blade.php index 60180595..51718eae 100644 --- a/resources/views/pages/settings.blade.php +++ b/resources/views/pages/settings.blade.php @@ -426,7 +426,7 @@
- + diff --git a/resources/views/pages/templates/warehouseDetails.blade.php b/resources/views/pages/templates/warehouseDetails.blade.php index c45855ea..092dd826 100644 --- a/resources/views/pages/templates/warehouseDetails.blade.php +++ b/resources/views/pages/templates/warehouseDetails.blade.php @@ -9,24 +9,24 @@
Parcel in Warehouse
- +
- +
-
+ -
+
@endsection \ No newline at end of file diff --git a/resources/views/pages/warehouse_list.blade.php b/resources/views/pages/warehouse_list.blade.php index 89db8f42..4f7b7e47 100644 --- a/resources/views/pages/warehouse_list.blade.php +++ b/resources/views/pages/warehouse_list.blade.php @@ -29,7 +29,7 @@
Delivery Date
- + diff --git a/resources/views/partials/menu.blade.php b/resources/views/partials/menu.blade.php index a7b51ea2..4ec00248 100644 --- a/resources/views/partials/menu.blade.php +++ b/resources/views/partials/menu.blade.php @@ -63,6 +63,17 @@
Parcels
+
+
+ +
+ +
'company', 'as' => 'company.', 'namespace' => 'Compani Route::put('/{document_id}/approval/{status}', 'ApproveIdentificationDocumentController@approve')->where('status', 'approve|reject')->name('approval'); }); + Route::get('/module/list', 'ListCompanyModulesController@list')->name('module.list'); + }); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 22385ffc..8b3634fc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -80,6 +80,10 @@ Route::get('/warehouse-list', function () { return view('pages.warehouse_list'); })->name('warehouse.list'); +Route::get('/delivery-list', function () { + return view('pages.delivery_list'); +})->name('delivery.list'); + Route::get('/unclaimed-packinglist', function () { return view('pages.unclaimed_packinglist'); })->name('unclaimed-packinglist.list'); @@ -99,6 +103,12 @@ Route::get('/customer/{marking}', function ($marking) { return view('pages.customers.profile', ['id' => $id]); })->name('customer.profile'); +Route::get('/customer/{marking}/details', function ($marking) { + $connection = CompanyConnection::where('invitee_reference', $marking)->first(); + $id = $connection->invitee->company->id; + return view('pages.customers.profile_details', ['id' => $id]); +})->name('customer.profile.details'); + Route::get('/orders/refresh', function(){ FetchWarehouseReceiveListFromVTPortalJob::withChain([ From d9a3f42e87b40b246e4b42e9c5eab27b72ac7b04 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 5 Mar 2022 16:38:17 +0800 Subject: [PATCH 07/32] Update copyright year using php to get current year --- resources/views/partials/footer.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php index e7020345..af85b650 100644 --- a/resources/views/partials/footer.blade.php +++ b/resources/views/partials/footer.blade.php @@ -3,7 +3,7 @@
- Copyright © 2021 CIEF IZYIM. All rights reserved. + Copyright ©{{ date('Y'); }} CIEF IZYIM. All rights reserved.
From fd8f8d6cb400091c5f942f4cf957561af9babdcf Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 5 Mar 2022 16:47:19 +0800 Subject: [PATCH 08/32] Update copyright year using php to get current year --- resources/views/partials/footer.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php index af85b650..459488fb 100644 --- a/resources/views/partials/footer.blade.php +++ b/resources/views/partials/footer.blade.php @@ -3,7 +3,7 @@
- Copyright ©{{ date('Y'); }} CIEF IZYIM. All rights reserved. + Copyright © {{ date('Y'); }} CIEF IZYIM. All rights reserved.
From ab12494ba5f7b2257b924e9ab0263178170e7e14 Mon Sep 17 00:00:00 2001 From: glovetleong Date: Sun, 6 Mar 2022 14:44:49 +0800 Subject: [PATCH 09/32] pdf generate --- .../CreateShippingInvoiceTransactionLogic.php | 71 ++++++++++++++----- .../Services/CreatesTransactionDetail.php | 4 +- .../ValueObjects/Constants/DocumentType.php | 4 ++ app/Http/Resources/CountryResource.php | 24 +++++++ app/Http/Resources/PackingListResource.php | 4 +- app/Http/Resources/TransactionResource.php | 2 +- app/Models/Order.php | 8 +-- app/Models/Transaction.php | 2 +- .../pages/pdfs/shipping_invoice.blade.php | 19 +++++ 9 files changed, 111 insertions(+), 27 deletions(-) create mode 100644 app/Http/Resources/CountryResource.php create mode 100644 resources/views/pages/pdfs/shipping_invoice.blade.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php index b6edcc5f..e4729533 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php @@ -8,29 +8,37 @@ use App\Classes\Modules\PackingLists\Services\FetchesPackingList; use App\Classes\Modules\SegmentConstants\Services\FetchesSegmentConstant; use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; use App\Classes\Modules\Transactions\Services\CreatesTransaction; +use App\Classes\Modules\Transactions\Services\CreatesTransactionDetail; +use App\Classes\Modules\Documents\Services\CreatesDocument; +use App\Classes\Modules\Documents\Services\CreatesFiles; use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject; +use App\Classes\Modules\Transactions\DataTransferObjects\TransactionDetailObject; +use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; + use App\Classes\ValueObjects\Constants\OrderRoleTypes; use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\DocumentType; // use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; // use App\Classes\Modules\Transactions\Services\FetchesTransaction; // use App\Classes\Modules\Transactions\Services\UpdatesTransactionStatus; -// use App\Classes\Modules\Documents\Services\CreatesDocument; -// use App\Classes\Modules\Documents\Services\CreatesFiles; -// use App\Classes\ValueObjects\Constants\DocumentType; + // use App\Models\Document; // use App\Models\Transaction; // use Barryvdh\DomPDF\PDF; // use Carbon\Carbon; + + + use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; // use Meneses\LaravelLaravelMpdf\Facades\LaravelLaravelMpdf; -// use Meneses\LaravelMpdf\Facades\LaravelMpdf; +use Meneses\LaravelMpdf\Facades\LaravelMpdf; class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic { @@ -58,8 +66,16 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic /** @var CreatesTransaction */ private $createsTransaction; + /** @var CreatesTransactionDetail */ + private $createsTransactionDetail; + + /** @var CreatesDocument */ + private $createsDocument; + + /** @var CreatesFiles */ + private $createsFile; + // /** @var FetchesTransaction */ - // private $fetchesTransaction; // /** @var UpdatesTransactionStatus */ // private $updatesTransactionStatus; // /** @var CreatesDocument */ @@ -68,23 +84,16 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic // private $createsFile; // /** @var PDF */ // private $pdf; - - /** - * CreateSupplierTransactionLogic constructor. - * @param FetchesPackingList $fetchesPackingList - * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber - * @param CreatesTransaction $createsTransaction - * @param FetchesTransaction $fetchesTransaction - * @param UpdatesTransactionStatus $updatesTransactionStatus - * @param PDF $pdf - */ + public function __construct( FetchesPackingList $fetchesPackingList, FetchesSegmentConstant $fetchesSegmentConstant, GeneratesTransactionBillNumber $generatesTransactionBillNumber, - CreatesTransaction $createsTransaction + CreatesTransaction $createsTransaction, + CreatesTransactionDetail $createsTransactionDetail, + CreatesDocument $createsDocument, + CreatesFiles $createsFile - // UpdatesTransactionStatus $updatesTransactionStatus, // CreatesDocument $createsDocument, // CreatesFiles $createsFile, // PDF $pdf @@ -95,6 +104,9 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic $this->fetchesSegmentConstant = $fetchesSegmentConstant; $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; $this->createsTransaction = $createsTransaction; + $this->createsTransactionDetail = $createsTransactionDetail; + $this->createsDocument = $createsDocument; + $this->createsFile = $createsFile; // $this->updatesTransactionStatus = $updatesTransactionStatus; // $this->createsDocument = $createsDocument; @@ -185,8 +197,31 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic ApprovalStatus::PENDING_SUBMISSION ); - $transactions = $this->createsTransaction->execute($packing_list, $object); + $invoice_transaction = $this->createsTransaction->execute($packing_list, $object); + $object_detail = new TransactionDetailObject( + $invoice_transaction->bill_no, + $invoice_transaction->bill_no, + 1, + $invoice_transaction->amount, + $invoice_transaction->amount + ); + $transaction_detail = $this->createsTransactionDetail->execute($invoice_transaction, $object_detail); + + $transaction_invoice_pdf = LaravelMpdf::loadView('pages.pdfs.shipping_invoice', ['invoice_transaction' => $invoice_transaction]); + + $document_object = new DocumentObject( + DocumentType::SHIPPING_INVOICE, + [chunk_split('data:application/pdf;base64,'.base64_encode($transaction_invoice_pdf->output()))], + '', + ApprovalStatus::COMPLETED, + 'shipping_invoice' + ); + /** @var Document $document */ + $document = $this->createsDocument->execute($invoice_transaction, $document_object); + $this->createsFile->execute($document, $document_object); + + dd('yess'); return $this->response([]); } } diff --git a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php index 0e852ddf..bdb0f387 100644 --- a/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php +++ b/app/Classes/Modules/Transactions/Services/CreatesTransactionDetail.php @@ -18,8 +18,8 @@ class CreatesTransactionDetail extends AbstractUpdateRelationshipRecord */ public function execute(Transaction $transaction, TransactionDetailObject $object) { $model = new TransactionDetail(); - $model->product_code = $object->getCode(); - $model->product_name = $object->getName(); + $model->reference = $object->getReference(); + $model->name = $object->getName(); $model->quantity = $object->getQuantity(); $model->price = $object->getPrice(); $model->amount = $object->getAmount(); diff --git a/app/Classes/ValueObjects/Constants/DocumentType.php b/app/Classes/ValueObjects/Constants/DocumentType.php index 2b053163..75db231a 100644 --- a/app/Classes/ValueObjects/Constants/DocumentType.php +++ b/app/Classes/ValueObjects/Constants/DocumentType.php @@ -21,4 +21,8 @@ final class DocumentType { public const DELIVER_ORDER = 'DELIVER_ORDER'; public const INVOICE = 'INVOICE'; public const SUPPLIER_DELIVER_ORDER = 'SUPPLIER_DELIVER_ORDER'; + + + public const SHIPPING_INVOICE = 'SHIPPING_INVOICE'; + } diff --git a/app/Http/Resources/CountryResource.php b/app/Http/Resources/CountryResource.php new file mode 100644 index 00000000..f15c41f8 --- /dev/null +++ b/app/Http/Resources/CountryResource.php @@ -0,0 +1,24 @@ + $this->id, + 'name' => $this->name, + 'short_code' => $this->short_code, + 'phone_code' => $this->phone_code, + ]; + } +} diff --git a/app/Http/Resources/PackingListResource.php b/app/Http/Resources/PackingListResource.php index 82065b18..5256e3de 100644 --- a/app/Http/Resources/PackingListResource.php +++ b/app/Http/Resources/PackingListResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\TransactionType; use App\Classes\ValueObjects\Constants\RoleTypes; use App\Models\Order; use App\Models\PackingList; @@ -32,7 +33,8 @@ class PackingListResource extends JsonResource 'packages' => PackageResource::collection($packages), $this->mergeWhen($this->owner instanceof Order, [ 'order' => New OrderResource($this->owner) - ]) + ]), + 'shippng_transaction' => new TransactionResource($this->transactions()->where('type', TransactionType::SHIPPING_INVOICE)->first()), ]; } } diff --git a/app/Http/Resources/TransactionResource.php b/app/Http/Resources/TransactionResource.php index ef652fd7..05c35038 100644 --- a/app/Http/Resources/TransactionResource.php +++ b/app/Http/Resources/TransactionResource.php @@ -18,7 +18,7 @@ class TransactionResource extends JsonResource return [ 'id' => $this->id, - 'booking' => new BookingResource($this->booking), + // 'booking' => new BookingResource($this->booking), 'type' => (int) $this->type, 'bill_no' => $this->bill_no, 'amount' => (double) $this->amount, diff --git a/app/Models/Order.php b/app/Models/Order.php index 24f344c2..955e6a4c 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -179,8 +179,8 @@ class Order extends AbstractModel implements Addressable, Packable, Remarkable, /** * @return morphMany */ - public function transactions(): morphMany - { - return $this->morphMany(Transaction::class, 'owner'); - } + // public function transactions(): morphMany + // { + // return $this->morphMany(Transaction::class, 'owner'); + // } } diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 232964d9..9ca9c24f 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; - +use Illuminate\Database\Eloquent\Relations\MorphTo; class Transaction extends AbstractModel implements Documentable { diff --git a/resources/views/pages/pdfs/shipping_invoice.blade.php b/resources/views/pages/pdfs/shipping_invoice.blade.php new file mode 100644 index 00000000..cfd491eb --- /dev/null +++ b/resources/views/pages/pdfs/shipping_invoice.blade.php @@ -0,0 +1,19 @@ +@extends('layouts.base_pdf') +@section('inner_content') + + + + + + + + + + + + + + + +
Bill NoPacking ListTotal Cbm
{{ $invoice_transaction->bill_no }}{{ $invoice_transaction->owner()->first()->reference }}{{ $invoice_transaction->original_amount }}
+@endsection From 3b86a50bed1834273690e8302754715e470f58e9 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sun, 6 Mar 2022 21:12:09 +0800 Subject: [PATCH 10/32] update shipping-invoice --- .../CreateShippingInvoiceTransactionLogic.php | 2 +- .../ValueObjects/Constants/Notifications.php | 4 + .../elements/PackingListComponent.vue | 42 ++++- .../pages/pdfs/shipping_invoice.blade.php | 144 ++++++++++++++++-- 4 files changed, 176 insertions(+), 16 deletions(-) diff --git a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php index e4729533..6e6c5882 100644 --- a/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php +++ b/app/Classes/Modules/Transactions/ControllersLogic/CreateShippingInvoiceTransactionLogic.php @@ -221,7 +221,7 @@ class CreateShippingInvoiceTransactionLogic extends AbstractControllerLogic $document = $this->createsDocument->execute($invoice_transaction, $document_object); $this->createsFile->execute($document, $document_object); - dd('yess'); + // dd('yess'); return $this->response([]); } } diff --git a/app/Classes/ValueObjects/Constants/Notifications.php b/app/Classes/ValueObjects/Constants/Notifications.php index c407d61c..421f1841 100644 --- a/app/Classes/ValueObjects/Constants/Notifications.php +++ b/app/Classes/ValueObjects/Constants/Notifications.php @@ -9,4 +9,8 @@ class Notifications 'message' => 'you have received new parcel for your order #-' ]; + public const UNDEFINED = [ + 'title' => 'UNDEFINED TITLE', + 'message' => 'undefined message' + ]; } \ No newline at end of file diff --git a/resources/assets/vue/components/containers/elements/PackingListComponent.vue b/resources/assets/vue/components/containers/elements/PackingListComponent.vue index 078fd100..b5fdc4ab 100644 --- a/resources/assets/vue/components/containers/elements/PackingListComponent.vue +++ b/resources/assets/vue/components/containers/elements/PackingListComponent.vue @@ -26,17 +26,45 @@

{{item.transport ? item.transport.current_schedule.eta : 'n/a'}}

-
-
Release
-
Hold
+
+
+
+
Release
+
Hold
+
+
Unclaimed
+
+
+
+
+
+
Generate Invoice
+
+
+
+ + + +
+ +
+
-
Unclaimed
\ No newline at end of file diff --git a/routes/company.php b/routes/company.php index 4e53532e..cbfed64f 100644 --- a/routes/company.php +++ b/routes/company.php @@ -34,4 +34,5 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani Route::get('/module/list', 'ListCompanyModulesController@list')->name('module.list'); -}); \ No newline at end of file + Route::post('module/{id}/remark/create', 'CreateCompanyModulesRemarkController@create')->name('module.remark.create'); +}); From 36236144ce202a0fde14ed81ef4421a2eaa265b2 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 9 Mar 2022 20:06:31 +0800 Subject: [PATCH 17/32] update downloadQrPdfController --- app/Http/Controllers/Orders/DownloadOrderQrPdfController.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php b/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php index b87012ec..3218be52 100644 --- a/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php +++ b/app/Http/Controllers/Orders/DownloadOrderQrPdfController.php @@ -24,9 +24,9 @@ class DownloadOrderQrPdfController $warehousePrefix = ''; $deliveryPrefix = ''; $customerMarking = ''; + $remark = $warehouse->remarks()->first()->content; if($warehouse->reference === WarehouseReferences::VT_GUANG_ZHOU || $warehouse->reference === WarehouseReferences::VT_YIWU) { - $remark = '周一 至 周六 , 早上八点到下午六点'; $customerMarking = $order->companyModule->connections()->first()->invitee_reference.'/'; if(strtolower($deliveryAddress->state->name) === 'sabah' || strtolower($deliveryAddress->state->name) === 'labuan') { $deliveryPrefix = 'SB/'; @@ -38,12 +38,10 @@ class DownloadOrderQrPdfController } if($warehouse->reference === WarehouseReferences::YD_YIWU){ - $remark = '周一 至 周六 , 早上九点到下午六点'; $warehousePrefix = 'YW/'; } if($warehouse->reference === WarehouseReferences::YD_GUANG_ZHOU){ - $remark = '周日 至 周五 , 早上八点到下午六点'; $warehousePrefix = 'YD/'; if(strtolower($deliveryAddress->state->name) === 'sabah' || strtolower($deliveryAddress->state->name) === 'labuan') { From ced07a293e236a49d8e476af92df3ede40eb2cf7 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Thu, 10 Mar 2022 19:39:47 +0800 Subject: [PATCH 18/32] update the createRemarkLogic, so all modules are able to use it create a RemarkFormComponent update order page to use this API clean up old remark API --- .../CreateCompanyRemarkLogic.php | 62 ------------------- .../CreateOrderRemarkLogic.php | 60 ------------------ .../Containers/CreateContainerRemarkLogic.php | 4 +- .../ControllersLogic/CreateRemarkLogic.php | 44 ++++++------- .../CreateCompanyModulesRemarkController.php | 20 ------ .../Orders/CreateOrderRemarkController.php | 14 ----- .../forms/DeleteRemarkFormComponent.vue} | 4 +- .../forms/RemarkFormComponent.vue} | 8 ++- .../orders/forms/OrderRemarkFormComponent.vue | 49 --------------- .../sections/OrderProfileSectionComponent.vue | 35 +++-------- .../elements/WarehouseChargesComponent.vue | 13 +++- routes/company.php | 2 - routes/order.php | 2 - routes/remark.php | 2 +- 14 files changed, 49 insertions(+), 270 deletions(-) delete mode 100644 app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php delete mode 100644 app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php delete mode 100644 app/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php delete mode 100644 app/Http/Controllers/Orders/CreateOrderRemarkController.php rename resources/assets/vue/components/{orders/forms/DeleteOrderRemarkFormComponent.vue => general/forms/DeleteRemarkFormComponent.vue} (94%) rename resources/assets/vue/components/{settings/forms/WarehouseRemarkFormComponent.vue => general/forms/RemarkFormComponent.vue} (91%) delete mode 100644 resources/assets/vue/components/orders/forms/OrderRemarkFormComponent.vue diff --git a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php deleted file mode 100644 index d7fbda65..00000000 --- a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php +++ /dev/null @@ -1,62 +0,0 @@ - 'Created Company Module Remark', - 'message' => 'You have successfully created a new Company Module Remark' - ]; - } - - - /** @var FetchesCompanyModule */ - private $fetchesCompanyModule; - - /** @var CreateRemarkProcessor */ - private $createRemarkProcessor; - - /** - * CreateCompanyRemarkLogic constructor. - * @param FetchesCompany $fetchesCompany - * @param CreateRemarkProcessor $createRemarkProcessor - */ - public function __construct(FetchesCompanyModule $fetchesCompanyModule, CreateRemarkProcessor $createRemarkProcessor) - { - $this->fetchesCompanyModule = $fetchesCompanyModule; - $this->createRemarkProcessor = $createRemarkProcessor; - } - - /** - * @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 - { - $companyModule = $this->fetchesCompanyModule->execute(['id' => $request->route('id')]); - - $object = new RemarkObject($request->input('content'), auth()->user()->id); - - $this->createRemarkProcessor->execute($companyModule, $object); - - return $this->resourceResponse(new CompanyModuleResource($companyModule)); - } - -} diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php deleted file mode 100644 index e134bcc7..00000000 --- a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php +++ /dev/null @@ -1,60 +0,0 @@ - 'Created Order', - 'message' => 'You have successfully created a new Order' - ]; - } - - /** @var FetchesOrder */ - private $fetchesOrder; - - /** @var CreateRemarkProcessor */ - private $createRemarkProcessor; - - /** - * CreateOrderRemarkLogic constructor. - * @param FetchesOrder $fetchesOrder - * @param CreateRemarkProcessor $createRemarkProcessor - */ - public function __construct(FetchesOrder $fetchesOrder, CreateRemarkProcessor $createRemarkProcessor) - { - $this->fetchesOrder = $fetchesOrder; - $this->createRemarkProcessor = $createRemarkProcessor; - } - - /** - * @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 - { - $order = $this->fetchesOrder->execute(['id' => $request->route('id')]); - - $object = new RemarkObject($request->input('content'), auth()->user()->id); - - $this->createRemarkProcessor->execute($order, $object); - - return $this->resourceResponse(new OrderResource($order)); - - } -} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php index bb4b2a06..f35b828e 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php @@ -20,8 +20,8 @@ class CreateContainerRemarkLogic extends AbstractControllerLogic */ protected function notification():array { return [ - 'title' => 'Created Container', - 'message' => 'You have successfully created a new Container' + 'title' => 'Created Container Remark', + 'message' => 'You have successfully created a new Container Remark' ]; } diff --git a/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php index a5bf50b0..46d822c5 100644 --- a/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php +++ b/app/Classes/Modules/Remarks/ControllersLogic/CreateRemarkLogic.php @@ -4,18 +4,16 @@ namespace App\Classes\Modules\Remarks\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; -use App\Classes\Modules\Remarks\Services\CreatesRemark; -use App\Classes\Modules\Remarks\Standards\Rules\CanCreateRemark; use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject; -use App\Classes\Modules\Accounts\Services\FetchesUser; -use App\Http\Resources\RemarkResource; -use ErrorException; +use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Str; +use App\Classes\Exceptions\MalformedRequestException; +use App\Http\Resources\RemarkResource; class CreateRemarkLogic extends AbstractControllerLogic { - /** * @return array */ @@ -26,25 +24,16 @@ class CreateRemarkLogic extends AbstractControllerLogic ]; } - /** @var CanCreateRemark */ - private $canCreateRemark; - - /** @var CreatesRemark */ - private $createsRemark; - - /** @var FetchesUser */ - private $fetchesUser; + /** @var CreateRemarkProcessor */ + private $createRemarkProcessor; /** * CreateRemarkLogic constructor. - * @param CanCreateRemark $canCreateRemark - * @param CreatesRemark $createsRemark + * @param CreateRemarkProcessor $createRemarkProcessor */ - public function __construct(CanCreateRemark $canCreateRemark, CreatesRemark $createsRemark, FetchesUser $fetchesUser) + public function __construct(CreateRemarkProcessor $createRemarkProcessor) { - $this->canCreateRemark = $canCreateRemark; - $this->createsRemark = $createsRemark; - $this->fetchesUser = $fetchesUser; + $this->createRemarkProcessor = $createRemarkProcessor; } /** @@ -56,15 +45,18 @@ class CreateRemarkLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { + $classs = '\\App\\Models\\' . Str::studly($request->input('model_type')); - $object = new RemarkObject($request->input('content'), $request->input('commenter_id')); + if (!class_exists($classs)) { + throw new MalformedRequestException('Unable to process this entity'); + } + + $remarkOwner = $classs::find($request->route('id')); - $this->canCreateRemark->passes($object); + $remarkObject = new RemarkObject($request->input('content'), auth()->user()->id); - $query = $this->createsRemark->execute($this->fetchesUser->execute(['id' => $request->input('commenter_id')]), $object); - - return $this->resourceResponse(new RemarkResource($query)); + $remmark = $this->createRemarkProcessor->execute($remarkOwner, $remarkObject); + return $this->resourceResponse(new RemarkResource($remmark)); } - } diff --git a/app/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php b/app/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php deleted file mode 100644 index 4cc894a5..00000000 --- a/app/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php +++ /dev/null @@ -1,20 +0,0 @@ -execute($request); - } -} diff --git a/app/Http/Controllers/Orders/CreateOrderRemarkController.php b/app/Http/Controllers/Orders/CreateOrderRemarkController.php deleted file mode 100644 index 3464566a..00000000 --- a/app/Http/Controllers/Orders/CreateOrderRemarkController.php +++ /dev/null @@ -1,14 +0,0 @@ -execute($request); - } -} \ No newline at end of file diff --git a/resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue b/resources/assets/vue/components/general/forms/DeleteRemarkFormComponent.vue similarity index 94% rename from resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue rename to resources/assets/vue/components/general/forms/DeleteRemarkFormComponent.vue index a23d077f..4e50d8c4 100644 --- a/resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue +++ b/resources/assets/vue/components/general/forms/DeleteRemarkFormComponent.vue @@ -5,9 +5,9 @@
-
+

Are you Sure?

-
Are you sure you want to delete this comment?
+
Are you sure you want to delete this remark?
diff --git a/resources/assets/vue/components/settings/forms/WarehouseRemarkFormComponent.vue b/resources/assets/vue/components/general/forms/RemarkFormComponent.vue similarity index 91% rename from resources/assets/vue/components/settings/forms/WarehouseRemarkFormComponent.vue rename to resources/assets/vue/components/general/forms/RemarkFormComponent.vue index 51c2ae31..8b67c246 100644 --- a/resources/assets/vue/components/settings/forms/WarehouseRemarkFormComponent.vue +++ b/resources/assets/vue/components/general/forms/RemarkFormComponent.vue @@ -37,18 +37,22 @@ diff --git a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue index 5fc0a5ff..7156d78c 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue @@ -35,39 +35,25 @@
Remark:
+ + +
-
-
Add a Remark
+
+
Add a Remark
-
-
{{order.remarks[0].content}}
- +
+
{{ order.remarks[0].content }}
+ - - + +
-
-
-
- -
-
-
-
- Cancel -
-
-
-
-
-
- -
@@ -465,7 +451,6 @@ section: 'orderProfileSection', isLoading: true, order: null, - isEditRemark: false, addComment: false, } }, diff --git a/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue b/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue index f2bff382..0498cd55 100644 --- a/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue +++ b/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue @@ -42,13 +42,20 @@
-
{{ data.remarks[0].content }}
+
+ {{ data.remarks[0].content }} + + +
Add
- + + + +
@@ -75,7 +82,7 @@ required: false }, section: { - default: '' + default: 'warhouseListSection' }, }, mixins: [modalFormHandler] diff --git a/routes/company.php b/routes/company.php index cbfed64f..abcf7201 100644 --- a/routes/company.php +++ b/routes/company.php @@ -33,6 +33,4 @@ Route::group(['prefix' => 'company', 'as' => 'company.', 'namespace' => 'Compani }); Route::get('/module/list', 'ListCompanyModulesController@list')->name('module.list'); - - Route::post('module/{id}/remark/create', 'CreateCompanyModulesRemarkController@create')->name('module.remark.create'); }); diff --git a/routes/order.php b/routes/order.php index 2071cae4..79a67bd8 100644 --- a/routes/order.php +++ b/routes/order.php @@ -18,6 +18,4 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f Route::put('/assign-remark/{id}', 'AssignOrderRemarkController@create')->name('assign.remark'); Route::get('/{id}/shipping-cost', 'ShippingCostController@calculate')->name('shipping.cost'); - - Route::post('/{id}/remark/create', 'CreateOrderRemarkController@create')->name('remark.create'); }); diff --git a/routes/remark.php b/routes/remark.php index 33756eee..91ae4676 100644 --- a/routes/remark.php +++ b/routes/remark.php @@ -5,7 +5,7 @@ use Illuminate\Support\Facades\Route; Route::group(['namespace' => 'Remarks', 'as' => 'remark.', 'prefix' => 'remark'], function () { Route::get('/{id}/show', 'FetchRemarkController@fetch')->name('show'); Route::get('/list', 'ListRemarksController@list')->name('list'); - Route::post('/create', 'CreateRemarkController@create')->name('create'); + Route::post('/{id}/create', 'CreateRemarkController@create')->name('create'); Route::put('/update/{id}', 'UpdateRemarkController@update')->name('update'); Route::delete('/delete/{id}', 'DeleteRemarkController@delete')->name('delete'); }); From 2fb12d3a7ca086fa138bc332b536fe6a99bc369f Mon Sep 17 00:00:00 2001 From: azumiru Date: Fri, 11 Mar 2022 20:54:49 +0800 Subject: [PATCH 19/32] container-export-pdf-ui add export button and call api --- .../vue/components/containers/elements/ContainerComponent.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/assets/vue/components/containers/elements/ContainerComponent.vue b/resources/assets/vue/components/containers/elements/ContainerComponent.vue index 8230862a..e60059a1 100644 --- a/resources/assets/vue/components/containers/elements/ContainerComponent.vue +++ b/resources/assets/vue/components/containers/elements/ContainerComponent.vue @@ -51,6 +51,9 @@

{{item.status === 3 ? 'Un-stuffed' : 'In Progress'}}

+ + +
From ac41229f8b95ee05a97e356604d1589be90699d2 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sat, 12 Mar 2022 17:20:32 +0800 Subject: [PATCH 20/32] notifiable --- app/Classes/General/Interfaces/Notifiable.php | 8 ++--- app/Models/AbstractModel.php | 30 ++++++++++++++++++- app/Models/Order.php | 25 ---------------- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/app/Classes/General/Interfaces/Notifiable.php b/app/Classes/General/Interfaces/Notifiable.php index b97a08c7..e9d8f22d 100644 --- a/app/Classes/General/Interfaces/Notifiable.php +++ b/app/Classes/General/Interfaces/Notifiable.php @@ -3,13 +3,13 @@ namespace App\Classes\General\Interfaces; -use Illuminate\Database\Eloquent\Relations\MorphMany; +use Illuminate\Database\Eloquent\Relations\MorphTo; interface Notifiable { - public function subject(): morphMany; + public function subject(): MorphTo; - public function target(): morphMany; + public function target(): MorphTo; - public function causer(): morphMany; + public function causer(): MorphTo; } \ No newline at end of file diff --git a/app/Models/AbstractModel.php b/app/Models/AbstractModel.php index 7a7c9c06..f459750f 100644 --- a/app/Models/AbstractModel.php +++ b/app/Models/AbstractModel.php @@ -3,11 +3,39 @@ namespace App\Models; +use App\Classes\General\Interfaces\Notifiable; use Illuminate\Database\Eloquent\Model; use Spatie\Activitylog\Traits\LogsActivity; +use Illuminate\Database\Eloquent\Relations\MorphTo; -class AbstractModel extends Model +class AbstractModel extends Model implements Notifiable { use LogsActivity; protected static $logFillable = true; + + /** + * @return MorphTo + */ + public function subject(): MorphTo + { + return $this->MorphTo('subject'); + } + + /** + * @return MorphTo + */ + public function target(): MorphTo + { + return $this->MorphTo('target'); + } + + /** + * @return MorphTo + */ + public function causer(): MorphTo + { + return $this->MorphTo('causer'); + } + + } \ No newline at end of file diff --git a/app/Models/Order.php b/app/Models/Order.php index 955e6a4c..5011fd36 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -34,31 +34,6 @@ class Order extends AbstractModel implements Addressable, Packable, Remarkable, return $this->belongsTo(CompanyModule::class, 'company_module_id', 'id'); } - /** - * @return MorphMany - */ - public function subject(): morphMany - { - return $this->morphMany(Notification::class, 'subject_type'); - } - - /** - * @return MorphMany - */ - public function target(): morphMany - { - return $this->morphMany(Notification::class, 'target'); - } - - /** - * @return MorphMany - */ - public function causer(): morphMany - { - return $this->morphMany(Notification::class, 'causer'); - } - - /** * @return MorphMany */ From 5d9e621920d60e0f15c88c957381c855bce1e1dc Mon Sep 17 00:00:00 2001 From: glovetleong Date: Sat, 12 Mar 2022 20:06:10 +0800 Subject: [PATCH 21/32] payment document approve --- .../ApprovePaymentTransactionLogic.php | 81 +++++++++++++++++ ...UploadPaymentVerificationDocumentLogic.php | 87 +++++++++++++++++++ .../ApprovePaymentTransactionController.php | 15 ++++ ...dPaymentVerificationDocumentController.php | 20 +++++ routes/transaction.php | 13 ++- 5 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/ApprovePaymentTransactionLogic.php create mode 100644 app/Classes/Modules/Transactions/ControllersLogic/UploadPaymentVerificationDocumentLogic.php create mode 100644 app/Http/Controllers/Transactions/ApprovePaymentTransactionController.php create mode 100644 app/Http/Controllers/Transactions/UploadPaymentVerificationDocumentController.php diff --git a/app/Classes/Modules/Transactions/ControllersLogic/ApprovePaymentTransactionLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/ApprovePaymentTransactionLogic.php new file mode 100644 index 00000000..5db49ddf --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/ApprovePaymentTransactionLogic.php @@ -0,0 +1,81 @@ +fetchesTransaction = $fetchesTransaction; + $this->updatesTransactionStatus = $updatesTransactionStatus; + $this->approvesDocument = $approvesDocument; + $this->rejectsDocument = $rejectsDocument; + } + + /** + * @return array + */ + protected function notification():array { + return [ + 'title' => 'Payment Status', + 'message' => 'You have successfully updated the payment status' + ]; + } + + /** @var FetchesTransaction */ + private $fetchesTransaction; + + /** @var UpdatesTransactionStatus */ + private $updatesTransactionStatus; + + /** @var ApprovesDocument */ + private $approvesDocument; + + /** @var RejectsDocument */ + private $rejectsDocument; + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request) : JsonResponse + { + + $status = $request->route('status'); + + $transaction = $this->fetchesTransaction->execute(['id' => $request->route('transaction_id')]); + + $status === 'approve' ? $this->approvesDocument->execute($transaction->documents()->first()) : $this->rejectsDocument->execute($transaction->documents()->first()); + + $this->updatesTransactionStatus->execute($transaction, $status === 'approve' ? ApprovalStatus::APPROVED : ApprovalStatus::REJECTED); + + // $this->createInvoiceTransactionProcessor->execute($transaction->booking); + return $this->response([]); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/ControllersLogic/UploadPaymentVerificationDocumentLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/UploadPaymentVerificationDocumentLogic.php new file mode 100644 index 00000000..3ea3b667 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/UploadPaymentVerificationDocumentLogic.php @@ -0,0 +1,87 @@ + 'Payment Verify Document', + 'message' => 'You have successfully submitted your payment verify document' + ]; + } + + /** @var FetchesTransaction */ + private $fetchesTransaction; + + /** @var CreatesDocument */ + private $createsDocument; + + /** @var CreatesFiles */ + private $createsFile; + + /** @var UpdatesTransactionStatus */ + private $updatesTransactionStatus; + + /** + * CreatePaymentVerificationDocumentLogic constructor. + * @param FetchesTransaction $fetchesTransaction + * @param CreatesDocument $createsDocument + * @param CreatesFiles $createsFile + * @param UpdatesTransactionStatus $updatesTransactionStatus + */ + public function __construct(FetchesTransaction $fetchesTransaction, CreatesDocument $createsDocument, CreatesFiles $createsFile, UpdatesTransactionStatus $updatesTransactionStatus) + { + $this->fetchesTransaction = $fetchesTransaction; + $this->createsDocument = $createsDocument; + $this->createsFile = $createsFile; + $this->updatesTransactionStatus = $updatesTransactionStatus; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\MalformedRequestException + */ + public function logic(Request $request) : JsonResponse + { + $transaction = $this->fetchesTransaction->execute(['id' => $request->route('transaction_id')]); + + $object = new DocumentObject( + DocumentType::CUSTOMER_PAYMENT_PROOF, + $request->input('files'), + '', + ApprovalStatus::PENDING_VERIFICATION, + 'payments' + ); + + /** @var Document $document */ + $document = $this->createsDocument->execute($transaction, $object); + + $this->createsFile->execute($document, $object); + + $this->updatesTransactionStatus->execute($transaction, ApprovalStatus::PENDING_VERIFICATION); + + return $this->response([]); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Transactions/ApprovePaymentTransactionController.php b/app/Http/Controllers/Transactions/ApprovePaymentTransactionController.php new file mode 100644 index 00000000..cbb00610 --- /dev/null +++ b/app/Http/Controllers/Transactions/ApprovePaymentTransactionController.php @@ -0,0 +1,15 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Transactions/UploadPaymentVerificationDocumentController.php b/app/Http/Controllers/Transactions/UploadPaymentVerificationDocumentController.php new file mode 100644 index 00000000..6c32a34d --- /dev/null +++ b/app/Http/Controllers/Transactions/UploadPaymentVerificationDocumentController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} \ No newline at end of file diff --git a/routes/transaction.php b/routes/transaction.php index 15504e97..c3e1b2f2 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -7,9 +7,20 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => Route::get('/list', 'ListTransactionsController@list')->name('list'); // Route::delete('/suspend/{id}', 'SuspendTransactionController@suspend')->name('suspend'); - route::post('/payment/create', 'CreatePaymentTransactionController@create')->name('payment.create'); + Route::post('/payment/create', 'CreatePaymentTransactionController@create')->name('payment.create'); + Route::post('/payment/upload-verification-document/{transaction_id}', 'UploadPaymentVerificationDocumentController@upload')->name('verification.create'); + Route::put('/payment/approve/{transaction_id}/{status}', 'ApprovePaymentTransactionController@approve')->where('status', 'approve|reject')->name('approval'); + + route::post('/shipping-invoice/create', 'CreateShippingInvoiceTransactionController@create')->name('supplier.create'); + // Route::group(['prefix' => '{id}/payment', 'as' => 'payment.'], function () { + // Route::post('quotation', 'FetchBookingPaymentQuotationController@fetch')->name('quotation'); + // Route::post('create', 'CreateBookingPaymentController@create')->name('create'); + // Route::post('{payment_id}/verification/create', 'CreatePaymentVerificationController@create')->name('verification.create'); + // Route::put('/{payment_id}/approval/{status}', 'ApprovePaymentVerificationController@approve')->where('status', 'approve|reject')->name('approval'); + // }); + // route::post('{id}/bill/verification', 'CreatePaymentProofDocumentController@verify')->name('bill.verification'); From a1a9ab76bb83f41bbe19521cc5a69412b3b1d83a Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sun, 13 Mar 2022 22:06:11 +0800 Subject: [PATCH 22/32] tidy up route and put reports route inside report.php --- routes/api.php | 5 +---- routes/report.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 routes/report.php diff --git a/routes/api.php b/routes/api.php index c8f886e1..d7d0cdcc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -54,10 +54,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'v1', 'as' => 'api.'], function require __DIR__ . '/announcement.php'; - Route::get('/report/customer/{marking}/{from?}/{to?}', 'Reports\MonthlyReportController@customerReport')->name('report.customer'); - Route::get('/report/sales/{from?}/{to?}', 'Reports\MonthlyReportController@salesReport')->name('report.sales'); - Route::get('/report/profit/{model}/{value}/{from?}/{to?}', 'Reports\MonthlyReportController@profitModelReport')->name('report.profit'); - Route::get('/report/service', 'Reports\MonthlyReportController@serviceReport')->name('report.service'); + require __DIR__ . '/report.php'; }); diff --git a/routes/report.php b/routes/report.php new file mode 100644 index 00000000..cd084cf6 --- /dev/null +++ b/routes/report.php @@ -0,0 +1,13 @@ + 'report', 'as' => 'report.', 'namespace' => 'Reports'], function () { + Route::get('/customer/{marking}/{from?}/{to?}', 'MonthlyReportController@customerReport')->name('customer'); + + Route::get('/sales/{from?}/{to?}', 'MonthlyReportController@salesReport')->name('sales'); + + Route::get('/profit/{model}/{value}/{from?}/{to?}', 'MonthlyReportController@profitModelReport')->name('profit'); + + Route::get('/service', 'MonthlyReportController@serviceReport')->name('service'); +}); From bea9507daeb26a69aa05dff36f461b61c2fa48e3 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 10:57:43 +0800 Subject: [PATCH 23/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index 4f316148..bda5b871 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -17,12 +17,12 @@ class PackingListDeliveryStatus implements Filter public static function apply(Builder $builder, $value) { return $value == 1 ? $builder->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { - $query->whereDoesntHave('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '>', Carbon::now()); + $query->whereHas('schedules', function (Builder $query) use ($value) { + $query->where('status', ApprovalStatus::APPROVED)->where('eta', '>', Carbon::now()); }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '<', Carbon::now()); + $query->where('status', ApprovalStatus::APPROVED)->where('eta', '=<', Carbon::now()); }); })); } From 0a69faeb3baaa8e243ce961399c3ce72593e899b Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 10:58:48 +0800 Subject: [PATCH 24/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index bda5b871..c5efa51a 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -18,11 +18,11 @@ class PackingListDeliveryStatus implements Filter { return $value == 1 ? $builder->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', ApprovalStatus::APPROVED)->where('eta', '>', Carbon::now()); + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '>', Carbon::now()); }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', ApprovalStatus::APPROVED)->where('eta', '=<', Carbon::now()); + $query->where('status', ApprovalStatus::EXPIRED)->where('eta', '=<', Carbon::now()); }); })); } From 8902a09337b3964429b6853880b091af54dbd81d Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 10:59:44 +0800 Subject: [PATCH 25/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index c5efa51a..5e811c97 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -22,7 +22,7 @@ class PackingListDeliveryStatus implements Filter }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', ApprovalStatus::EXPIRED)->where('eta', '=<', Carbon::now()); + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '=<', Carbon::now()); }); })); } From 56fb250e6ff8ee39206b508f448a950b17f3f654 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 11:14:14 +0800 Subject: [PATCH 26/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index 5e811c97..9445e578 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -17,8 +17,8 @@ class PackingListDeliveryStatus implements Filter public static function apply(Builder $builder, $value) { return $value == 1 ? $builder->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { - $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '>', Carbon::now()); + $query->whereDoesntHave('schedules', function (Builder $query) use ($value) { + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '=<', Carbon::now()); }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { From 91feb5b8fab08a334eb0cc53391cc12295be3a02 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 11:19:45 +0800 Subject: [PATCH 27/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index 9445e578..9c0f92a3 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -18,7 +18,7 @@ class PackingListDeliveryStatus implements Filter { return $value == 1 ? $builder->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereDoesntHave('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '=<', Carbon::now()); + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '>', Carbon::now()); }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { From 5fb7ddb0ec00b900f88f1a51044c3cecefe9a8dd Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 11:20:16 +0800 Subject: [PATCH 28/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index 9c0f92a3..4f316148 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -22,7 +22,7 @@ class PackingListDeliveryStatus implements Filter }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '=<', Carbon::now()); + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '<', Carbon::now()); }); })); } From eb6b2943af9a1c87e321729bcf40ef9a3fa60d83 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 11:21:20 +0800 Subject: [PATCH 29/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index 4f316148..3f4b454c 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -18,11 +18,11 @@ class PackingListDeliveryStatus implements Filter { return $value == 1 ? $builder->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereDoesntHave('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '>', Carbon::now()); + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '<=', Carbon::now()); }); }) : $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereHas('schedules', function (Builder $query) use ($value) { - $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '<', Carbon::now()); + $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '<=', Carbon::now()); }); })); } From 6389fc6600c9cfafa129662351241028cc5fe1cf Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 11:24:33 +0800 Subject: [PATCH 30/32] fix delivery list filter --- resources/views/pages/delivery_list.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/pages/delivery_list.blade.php b/resources/views/pages/delivery_list.blade.php index ff4a407e..284da34e 100644 --- a/resources/views/pages/delivery_list.blade.php +++ b/resources/views/pages/delivery_list.blade.php @@ -85,7 +85,7 @@
Delivery Date
Action
- + @@ -103,7 +103,7 @@
status
Delivery Date
- + @@ -121,7 +121,7 @@
status
Delivery Date
- + From f2007b25e44fdfacfc09ea0fb776b18cdfa921c2 Mon Sep 17 00:00:00 2001 From: omair saleh Date: Mon, 14 Mar 2022 11:32:22 +0800 Subject: [PATCH 31/32] fix delivery list filter --- .../General/Eloquent/Filters/PackingListDeliveryStatus.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php index 3f4b454c..3cc41510 100644 --- a/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php +++ b/app/Classes/General/Eloquent/Filters/PackingListDeliveryStatus.php @@ -16,7 +16,9 @@ class PackingListDeliveryStatus implements Filter */ public static function apply(Builder $builder, $value) { - return $value == 1 ? $builder->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { + return $value == 1 ? $builder->whereHas('containers', function ($query){ + $query->where('containers.status', ApprovalStatus::COMPLETED); + })->whereDoesntHave('transports') : ($value == 2 ? $builder->whereHas('transports', function (Builder $query) use ($value) { $query->whereDoesntHave('schedules', function (Builder $query) use ($value) { $query->where('status', '!=', ApprovalStatus::EXPIRED)->where('eta', '<=', Carbon::now()); }); From 7ec109eb3ec1b4cb69ba4dc89384dcc1f60370eb Mon Sep 17 00:00:00 2001 From: glovetleong Date: Mon, 14 Mar 2022 13:42:48 +0800 Subject: [PATCH 32/32] soft delete user --- app/Models/User.php | 4 ++- ...4_133555_add_deleted_at_to_users_table.php | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2022_03_14_133555_add_deleted_at_to_users_table.php diff --git a/app/Models/User.php b/app/Models/User.php index dccda6d2..daabe09d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; use Spatie\Permission\Traits\HasRoles; +use Illuminate\Database\Eloquent\SoftDeletes; use Tymon\JWTAuth\Contracts\JWTSubject; use Illuminate\Notifications\Notifiable; @@ -24,8 +25,9 @@ class User extends AbstractModel implements AuthorizableContract, CanResetPasswordContract { - use HasRoles, Notifiable, Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail; + use HasRoles, Notifiable, Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail, SoftDeletes; + protected $dates = ['deleted_at']; /** * Get the identifier that will be stored in the subject claim of the JWT. diff --git a/database/migrations/2022_03_14_133555_add_deleted_at_to_users_table.php b/database/migrations/2022_03_14_133555_add_deleted_at_to_users_table.php new file mode 100644 index 00000000..13fa1389 --- /dev/null +++ b/database/migrations/2022_03_14_133555_add_deleted_at_to_users_table.php @@ -0,0 +1,32 @@ +softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}