diff --git a/app/Classes/Modules/Orders/ControllersLogic/AssignOrderRemarkLogic.php b/app/Classes/Modules/Orders/ControllersLogic/AssignOrderRemarkLogic.php new file mode 100644 index 00000000..e16886f6 --- /dev/null +++ b/app/Classes/Modules/Orders/ControllersLogic/AssignOrderRemarkLogic.php @@ -0,0 +1,67 @@ + 'Created Order Remark', + 'message' => 'You have successfully created a new Order Remark' + ]; + } + + /** @var CanCreateRemark */ + private $canCreateRemark; + + /** @var CreatesOrderRemark */ + private $createsOrderRemark; + + /** @var FetchesOrder */ + private $fetchesOrder; + + /** + * CreateRemarkLogic constructor. + * @param CanCreateRemark $canCreateRemark + * @param CreatesOrderRemark $createsOrderRemark + */ + public function __construct(CanCreateRemark $canCreateRemark, CreatesOrderRemark $createsOrderRemark, FetchesOrder $fetchesOrder) + { + $this->canCreateRemark = $canCreateRemark; + $this->createsOrderRemark = $createsOrderRemark; + $this->fetchesOrder = $fetchesOrder; + } + + /** + * @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 + { + $object = new RemarkObject( + $request->input('content'), + $request->route('id') + ); + + $this->canCreateRemark->passes($object); + $query = $this->createsOrderRemark->execute($this->fetchesOrder->execute(['id' => $request->route('id')]), $object); + return $this->resourceResponse( new RemarkResource($query)); + } +} diff --git a/app/Classes/Modules/Orders/Services/CreatesOrderRemark.php b/app/Classes/Modules/Orders/Services/CreatesOrderRemark.php new file mode 100644 index 00000000..50df32bc --- /dev/null +++ b/app/Classes/Modules/Orders/Services/CreatesOrderRemark.php @@ -0,0 +1,29 @@ +commenter_id = $object->getCommenterId(); + $model->content = $object->getContent(); + + return $this->handler($order->remarks(), $model); + + } +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/AssignPackingListRemarkLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/AssignPackingListRemarkLogic.php new file mode 100644 index 00000000..980bc5b9 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/AssignPackingListRemarkLogic.php @@ -0,0 +1,67 @@ + 'Created Packing List Remark', + 'message' => 'You have successfully created a new Packing List Remark' + ]; + } + + /** @var CanCreateRemark */ + private $canCreateRemark; + + /** @var CreatesPackingListRemark */ + private $createsPackingListRemark; + + /** @var FetchesPackingList */ + private $fetchesPackingList; + + /** + * CreateRemarkLogic constructor. + * @param CanCreateRemark $canCreateRemark + * @param CreatesPackingListRemark $createsPackingListRemark + */ + public function __construct(CanCreateRemark $canCreateRemark, CreatesPackingListRemark $createsPackingListRemark, FetchesPackingList $fetchesPackingList) + { + $this->canCreateRemark = $canCreateRemark; + $this->createsPackingListRemark = $createsPackingListRemark; + $this->fetchesPackingList = $fetchesPackingList; + } + + /** + * @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 + { + $object = new RemarkObject( + $request->input('content'), + $request->route('id') + ); + + $this->canCreateRemark->passes($object); + $query = $this->createsPackingListRemark->execute($this->fetchesPackingList->execute(['id' => $request->route('id')]), $object); + return $this->resourceResponse( new RemarkResource($query)); + } +} diff --git a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/AssignContainerRemarkLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/AssignContainerRemarkLogic.php new file mode 100644 index 00000000..24e59b83 --- /dev/null +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/AssignContainerRemarkLogic.php @@ -0,0 +1,68 @@ + 'Created Order Remark', + 'message' => 'You have successfully created a new Order Remark' + ]; + } + + /** @var CanCreateRemark */ + private $canCreateRemark; + + /** @var CreatesContainerRemark */ + private $createsContainerRemark; + + /** @var FetchesContainer */ + private $fetchesContainer; + + /** + * CreateRemarkLogic constructor. + * @param CanCreateRemark $canCreateRemark + * @param CreatesContainerRemark $createsContainerRemark + */ + public function __construct(CanCreateRemark $canCreateRemark, CreatesContainerRemark $createsContainerRemark, FetchesContainer $fetchesContainer) + { + $this->canCreateRemark = $canCreateRemark; + $this->createsContainerRemark = $createsContainerRemark; + $this->fetchesContainer = $fetchesContainer; + } + + /** + * @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 + { + $object = new RemarkObject( + $request->input('content'), + $request->route('id') + ); + + $this->canCreateRemark->passes($object); + $query = $this->createsContainerRemark->execute($this->fetchesContainer->execute(['id' => $request->route('id')]), $object); + return $this->resourceResponse( new RemarkResource($query)); + } +} diff --git a/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainerRemark.php b/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainerRemark.php new file mode 100644 index 00000000..75a069b7 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/Containers/CreatesContainerRemark.php @@ -0,0 +1,29 @@ +commenter_id = $object->getCommenterId(); + $model->content = $object->getContent(); + + return $this->handler($container->remarks(), $model); + + } +} diff --git a/app/Classes/Modules/PackingLists/Services/CreatesPackingListRemark.php b/app/Classes/Modules/PackingLists/Services/CreatesPackingListRemark.php new file mode 100644 index 00000000..30f30358 --- /dev/null +++ b/app/Classes/Modules/PackingLists/Services/CreatesPackingListRemark.php @@ -0,0 +1,29 @@ +commenter_id = $object->getCommenterId(); + $model->content = $object->getContent(); + + return $this->handler($packingList->remarks(), $model); + + } +} diff --git a/app/Http/Controllers/Orders/AssignOrderRemarkController.php b/app/Http/Controllers/Orders/AssignOrderRemarkController.php new file mode 100644 index 00000000..09de096f --- /dev/null +++ b/app/Http/Controllers/Orders/AssignOrderRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/AssignPackingListRemarkController.php b/app/Http/Controllers/PackingLists/AssignPackingListRemarkController.php new file mode 100644 index 00000000..bcd6531c --- /dev/null +++ b/app/Http/Controllers/PackingLists/AssignPackingListRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Http/Controllers/PackingLists/Containers/AssignContainerRemarkController.php b/app/Http/Controllers/PackingLists/Containers/AssignContainerRemarkController.php new file mode 100644 index 00000000..d199aaf9 --- /dev/null +++ b/app/Http/Controllers/PackingLists/Containers/AssignContainerRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } + +} diff --git a/app/Models/Container.php b/app/Models/Container.php index 158d0845..978e1c31 100644 --- a/app/Models/Container.php +++ b/app/Models/Container.php @@ -56,4 +56,12 @@ class Container extends AbstractModel implements Transportable { return $this->morphMany(Transport::class, 'owner'); } + + /** + * @return MorphMany + */ + public function remarks(): morphMany + { + return $this->morphMany(Remark::class, 'owner'); + } } diff --git a/app/Models/Order.php b/app/Models/Order.php index 9d3099a5..0f8a5913 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -55,6 +55,14 @@ class Order extends AbstractModel implements Addressable, Packable return $this->morphMany(PackingList::class, 'owner'); } + /** + * @return MorphMany + */ + public function remarks(): morphMany + { + return $this->morphMany(Remark::class, 'owner'); + } + /** * @return HasManyThrough */ diff --git a/app/Models/PackingList.php b/app/Models/PackingList.php index 1bbfa6ac..baa973f5 100644 --- a/app/Models/PackingList.php +++ b/app/Models/PackingList.php @@ -56,4 +56,12 @@ class PackingList extends AbstractModel implements Transportable, Steppable return $this->morphMany(Transport::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 bcefa2ed..4d87846f 100644 --- a/routes/order.php +++ b/routes/order.php @@ -14,5 +14,5 @@ Route::group(['prefix' => 'order', 'as' => 'order.', 'namespace' => 'Orders'], f Route::post('/create-warehouse-packing-list', 'CreateWarehousePackingListController@create')->name('create.warehouse.packing_list'); Route::post('/create-shipping-packing-list', 'CreateShippingPackingListController@create')->name('create.shipping.packing_list'); - // Route::post('/create', 'CreateOrderController@create')->name('create'); + Route::put('/assign-remark/{id}', 'AssignOrderRemarkController@create')->name('assign.remark'); }); diff --git a/routes/packing_list.php b/routes/packing_list.php index cf5062cf..3b312fa3 100644 --- a/routes/packing_list.php +++ b/routes/packing_list.php @@ -14,7 +14,7 @@ Route::group(['namespace' => 'PackingLists', 'as' => 'packing_list.', 'prefix' = Route::put('/update-dispatch-date/{id}', 'UpdateDispatchDatePackingListController@update')->name('update_dispatch_date'); Route::put('/update-drop-date/{id}', 'UpdateDropDatePackingListController@update')->name('update_drop_date'); Route::put('/complete/{id}', 'CompletePackingListController@complete')->name('complete'); - + Route::put('/assign-remark/{id}', 'AssignPackingListRemarkController@create')->name('assign.remark'); Route::group(['namespace' => 'Containers', 'prefix' => 'container', 'as' => 'container.'], function () { Route::get('/{id}/show', 'FetchContainerController@fetch')->name('show'); @@ -28,6 +28,7 @@ Route::group(['namespace' => 'PackingLists', 'as' => 'packing_list.', 'prefix' = Route::put('/update-dispatch-date/{id}', 'UpdateDispatchDateContainerController@update')->name('update_dispatch_date'); Route::put('/update-drop-date/{id}', 'UpdateDropDateContainerController@update')->name('update_drop_date'); Route::put('/complete/{id}', 'CompleteContainerController@complete')->name('complete'); + Route::put('/assign-remark/{id}', 'AssignContainerRemarkController@create')->name('assign.remark'); }); Route::group(['namespace' => 'Packages', 'as' => 'package.', 'prefix' => 'package'], function () {