From 5e7cfd4da0bbcb83bde8922008d5f1300fe2a554 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sun, 31 Oct 2021 15:43:57 +0800 Subject: [PATCH] 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');