From a846028919037114173d4f9afe57bc201a5d17f4 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Mon, 25 Oct 2021 22:49:42 +0800 Subject: [PATCH 1/3] wip --- .../CreateOrderRemarkLogic.php | 67 +++++++++++++++++++ .../Containers/CreateContainerRemarkLogic.php | 1 + .../Orders/CreateOrderRemarkController.php | 14 ++++ app/Models/Order.php | 11 ++- routes/web.php | 10 +++ 5 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php create mode 100644 app/Http/Controllers/Orders/CreateOrderRemarkController.php diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php new file mode 100644 index 00000000..97c91a96 --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php @@ -0,0 +1,67 @@ + 'Created Order', + 'message' => 'You have successfully created a new Order' + ]; + } + + /** @var CreatesRemark */ + private $createsRemark; + + /** + * CreateContainerRemarkLogic constructor. + * @param CreatesRemark $createsRemark + */ + public function __construct(CreatesRemark $createsRemark) + { + $this->createsRemark = $createsRemark; + } + /** + * @param Request $request + * @return JsonResponse + */ + public function logic(Request $request) : JsonResponse + { + // get the order + // $order = Order::findOrFail($request->input('order_id')); + + // $object = new RemarkObject( + // $request->input('content'), + // // commenter_id is hardcoded + // 1 + // ); + + // $this->createsRemark->passes($object); + + // $remark = $this->createsRemark->execute($order, $object); + // return $remark; + + // $query = $this->createsRemark->execute($order, $object); + return $this->response(['nihao']); + + // return $query; + + // return $this->resourceResponse(new RemarkResource($query)); + + + + + } +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php index 8186a034..847704ea 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php @@ -46,6 +46,7 @@ class CreateContainerRemarkLogic extends AbstractControllerLogic { // get the container + $container = Container::findOrFail($request->input('container_id')); $object = new RemarkObject($request->input('content'), 1); diff --git a/app/Http/Controllers/Orders/CreateOrderRemarkController.php b/app/Http/Controllers/Orders/CreateOrderRemarkController.php new file mode 100644 index 00000000..12cfbf8a --- /dev/null +++ b/app/Http/Controllers/Orders/CreateOrderRemarkController.php @@ -0,0 +1,14 @@ +execute($request); + } +} \ No newline at end of file diff --git a/app/Models/Order.php b/app/Models/Order.php index 9d3099a5..999c04cf 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -5,6 +5,7 @@ namespace App\Models; 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\ValueObjects\Constants\RoleTypes; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Scopes\CustomerOrdersScope; @@ -14,7 +15,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 +class Order extends AbstractModel implements Addressable, Packable, Remarkable { use SoftDeletes; @@ -88,4 +89,12 @@ class Order extends AbstractModel implements Addressable, Packable { return $this->addresses()->where('status','=',ApprovalStatus::APPROVED); } + + /** + * @return MorphMany + */ + public function remarks(): morphMany + { + return $this->morphMany(Remark::class, 'owner'); + } } diff --git a/routes/web.php b/routes/web.php index 6c3097e4..9f5b61a3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -150,3 +150,13 @@ Route::get('/debug', function (){ dd($issues); }); + +// http://localhost/cief/shipping-portal/public/order/remark/create +Route::post('/order/remark/create', 'orders\CreateOrderRemarkController@create')->name('orderRemarks.create'); +Route::get('/order/remark/update', 'remarks\UpdateRemarkController@update')->name('orderRemarks.update'); +// http://localhost/cief/shipping-portal/public/order/remark/list +Route::get('/order/remark/list', 'remarks\ListRemarksController@list')->name('orderRemarks.list'); +// http://localhost/cief/shipping-portal/public/order/remark/4/show +Route::get('/order/remark/{id}/show', 'remarks\FetchRemarkController@fetch')->name('orderRemarks.fetch'); +// http://localhost/cief/shipping-portal/public/order/remark/4/delete +Route::get('/order/remark/{id}/delete', 'remarks\DeleteRemarkController@delete')->name('orderRemarks.delete'); From 5e7cfd4da0bbcb83bde8922008d5f1300fe2a554 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sun, 31 Oct 2021 15:43:57 +0800 Subject: [PATCH 2/3] tidy up the order remark backend api --- .../CreateOrderRemarkLogic.php | 51 ++++++++----------- .../Orders/CreateOrderRemarkController.php | 2 +- app/Http/Resources/OrderResource.php | 1 + app/Models/Order.php | 8 +++ routes/order.php | 2 + routes/web.php | 10 ---- 6 files changed, 34 insertions(+), 40 deletions(-) diff --git a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php index 97c91a96..e134bcc7 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/CreateOrderRemarkLogic.php @@ -3,10 +3,10 @@ namespace App\Classes\Modules\Orders\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; +use App\Classes\Modules\Orders\Services\FetchesOrder; use App\Classes\Modules\Remarks\DataTransferObjects\RemarkObject; -use App\Classes\Modules\Remarks\Services\CreatesRemark; -use App\Models\Order; -use App\Models\Remark; +use App\Classes\Modules\Remarks\Processors\CreateRemarkProcessor; +use App\Http\Resources\OrderResource; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -22,46 +22,39 @@ class CreateOrderRemarkLogic extends AbstractControllerLogic ]; } - /** @var CreatesRemark */ - private $createsRemark; + /** @var FetchesOrder */ + private $fetchesOrder; + + /** @var CreateRemarkProcessor */ + private $createRemarkProcessor; /** - * CreateContainerRemarkLogic constructor. - * @param CreatesRemark $createsRemark + * CreateOrderRemarkLogic constructor. + * @param FetchesOrder $fetchesOrder + * @param CreateRemarkProcessor $createRemarkProcessor */ - public function __construct(CreatesRemark $createsRemark) + public function __construct(FetchesOrder $fetchesOrder, CreateRemarkProcessor $createRemarkProcessor) { - $this->createsRemark = $createsRemark; + $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 { - // get the order - // $order = Order::findOrFail($request->input('order_id')); - - // $object = new RemarkObject( - // $request->input('content'), - // // commenter_id is hardcoded - // 1 - // ); - - // $this->createsRemark->passes($object); - - // $remark = $this->createsRemark->execute($order, $object); - // return $remark; - - // $query = $this->createsRemark->execute($order, $object); - return $this->response(['nihao']); - - // return $query; - - // return $this->resourceResponse(new RemarkResource($query)); + $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/Http/Controllers/Orders/CreateOrderRemarkController.php b/app/Http/Controllers/Orders/CreateOrderRemarkController.php index 12cfbf8a..3464566a 100644 --- a/app/Http/Controllers/Orders/CreateOrderRemarkController.php +++ b/app/Http/Controllers/Orders/CreateOrderRemarkController.php @@ -6,7 +6,7 @@ use App\Classes\Modules\Orders\ControllersLogic\CreateOrderRemarkLogic; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class OrderRemarksController +class CreateOrderRemarkController { public function create(Request $request, CreateOrderRemarkLogic $logic): JsonResponse{ return $logic->execute($request); diff --git a/app/Http/Resources/OrderResource.php b/app/Http/Resources/OrderResource.php index 06e31b6f..0c30bb62 100644 --- a/app/Http/Resources/OrderResource.php +++ b/app/Http/Resources/OrderResource.php @@ -46,6 +46,7 @@ class OrderResource extends JsonResource 'received_packages' => PackageResource::collection($this->parcels()->warehouseReceiveList()->get()), ]; }), + 'remarks' => RemarkResource::collection($this->remarks), 'created_at' => $this->created_at->format('d-m-Y') ]; diff --git a/app/Models/Order.php b/app/Models/Order.php index 3d7bdcab..3923d913 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -148,4 +148,12 @@ class Order extends AbstractModel implements Addressable, Packable, Remarkable { return $this->morphMany(Transaction::class, 'owner'); } + + /** + * @return MorphMany + */ + public function remarks(): morphMany + { + return $this->morphMany(Remark::class, 'owner'); + } } diff --git a/routes/order.php b/routes/order.php index 2da8880f..ea7bc389 100644 --- a/routes/order.php +++ b/routes/order.php @@ -17,4 +17,6 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f // Route::post('/create', 'CreateOrderController@create')->name('create'); Route::get('/{id}/shipping-cost', 'ShippingCostController@calculate')->name('shipping.cost'); + + Route::post('/{id}/remark/create', 'CreateOrderRemarkController@create')->name('remark.create'); }); diff --git a/routes/web.php b/routes/web.php index 9f5b61a3..6c3097e4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -150,13 +150,3 @@ Route::get('/debug', function (){ dd($issues); }); - -// http://localhost/cief/shipping-portal/public/order/remark/create -Route::post('/order/remark/create', 'orders\CreateOrderRemarkController@create')->name('orderRemarks.create'); -Route::get('/order/remark/update', 'remarks\UpdateRemarkController@update')->name('orderRemarks.update'); -// http://localhost/cief/shipping-portal/public/order/remark/list -Route::get('/order/remark/list', 'remarks\ListRemarksController@list')->name('orderRemarks.list'); -// http://localhost/cief/shipping-portal/public/order/remark/4/show -Route::get('/order/remark/{id}/show', 'remarks\FetchRemarkController@fetch')->name('orderRemarks.fetch'); -// http://localhost/cief/shipping-portal/public/order/remark/4/delete -Route::get('/order/remark/{id}/delete', 'remarks\DeleteRemarkController@delete')->name('orderRemarks.delete'); From 6fcf952967d845093bbd9e74ab3c78699a276d38 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Tue, 2 Nov 2021 00:00:31 +0800 Subject: [PATCH 3/3] update order remark ui --- .../ControllersLogic/UpdateRemarkLogic.php | 2 +- .../orders/elements/OrderComponent.vue | 15 +++++- .../forms/DeleteOrderRemarkFormComponent.vue | 32 ++++++++++++ .../orders/forms/OrderRemarkFormComponent.vue | 49 +++++++++++++++++++ .../sections/OrderProfileSectionComponent.vue | 45 ++++++++++++++++- 5 files changed, 139 insertions(+), 4 deletions(-) create mode 100644 resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue create mode 100644 resources/assets/vue/components/orders/forms/OrderRemarkFormComponent.vue diff --git a/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php index e9c0738f..5b3af8f8 100644 --- a/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php +++ b/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php @@ -55,7 +55,7 @@ class UpdateRemarkLogic extends AbstractControllerLogic */ public function logic(Request $request) : JsonResponse { - $object = new RemarkObject($request->input('content'), $request->input('commenter_id')); + $object = new RemarkObject($request->input('content'), auth()->user()->id); $this->canUpdateRemark->passes($object); diff --git a/resources/assets/vue/components/orders/elements/OrderComponent.vue b/resources/assets/vue/components/orders/elements/OrderComponent.vue index 31cc56af..e1f1db48 100644 --- a/resources/assets/vue/components/orders/elements/OrderComponent.vue +++ b/resources/assets/vue/components/orders/elements/OrderComponent.vue @@ -16,8 +16,19 @@
- Order No. -
{{item.reference}}
+
+
+ Order No +
+
+
+
+
{{item.reference}}
+
+
+ +
+
diff --git a/resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue b/resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue new file mode 100644 index 00000000..a23d077f --- /dev/null +++ b/resources/assets/vue/components/orders/forms/DeleteOrderRemarkFormComponent.vue @@ -0,0 +1,32 @@ + + diff --git a/resources/assets/vue/components/orders/forms/OrderRemarkFormComponent.vue b/resources/assets/vue/components/orders/forms/OrderRemarkFormComponent.vue new file mode 100644 index 00000000..79273650 --- /dev/null +++ b/resources/assets/vue/components/orders/forms/OrderRemarkFormComponent.vue @@ -0,0 +1,49 @@ + + diff --git a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue index 5e4a5732..2ebb27ce 100644 --- a/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue +++ b/resources/assets/vue/components/orders/sections/OrderProfileSectionComponent.vue @@ -21,6 +21,47 @@

Order No. {{order.reference}}

+
+
+
+
+
Remark:
+
+
+
Add a Remark
+
+
+
{{order.remarks[0].content}}
+ + + + + + + + + +
+
+
+
+ +
+
+
+
+ Cancel +
+
+
+
+
+
+ +
+
+
+
Order Date: {{order.created_at}}
@@ -412,7 +453,9 @@ return { section: 'orderProfileSection', isLoading: true, - order: null + order: null, + isEditRemark: false, + addComment: false, } }, computed: {