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/ControllersLogic/Containers/CreateContainerRemarkLogic.php b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php index 175575cf..bb4b2a06 100644 --- a/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php +++ b/app/Classes/Modules/PackingLists/ControllersLogic/Containers/CreateContainerRemarkLogic.php @@ -53,9 +53,9 @@ class CreateContainerRemarkLogic extends AbstractControllerLogic public function logic(Request $request) : JsonResponse { - $container = $this->fetchesContainer->execute(['id' => $request->input('container_id')]); + $container = $this->fetchesContainer->execute(['id' => $request->route('id')]); - $object = new RemarkObject($request->input('content'), 1); + $object = new RemarkObject($request->input('content'), auth()->user()->id); $this->createRemarkProcessor->execute($container, $object); 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/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php b/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php index ffd7a701..f120efab 100644 --- a/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php +++ b/app/Classes/Modules/Remarks/ControllersLogic/UpdateRemarkLogic.php @@ -57,7 +57,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/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/Http/Resources/ContainerResource.php b/app/Http/Resources/ContainerResource.php index b9daa54f..23cb7817 100644 --- a/app/Http/Resources/ContainerResource.php +++ b/app/Http/Resources/ContainerResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources; use App\Classes\ValueObjects\Constants\ContainerTypes; +use App\Models\Remark; use Illuminate\Http\Resources\Json\JsonResource; class ContainerResource extends JsonResource @@ -26,6 +27,7 @@ class ContainerResource extends JsonResource 'packing_lists' => PackingListResource::collection($this->whenLoaded('packingLists', function(){ return $this->packingLists()->whereHas('packages')->get(); })), + 'remarks' => RemarkResource::collection($this->remarks), 'status' => $this->status ]; } diff --git a/app/Http/Resources/RemarkResource.php b/app/Http/Resources/RemarkResource.php index d5f93d79..24081934 100644 --- a/app/Http/Resources/RemarkResource.php +++ b/app/Http/Resources/RemarkResource.php @@ -16,8 +16,11 @@ class RemarkResource extends JsonResource { return [ 'id' => $this->id, - 'commenter_id' => $this->commenter_id, + 'commenter' => new UserResource($this->commenter), + 'owner_id' => $this->owner_id, 'content' => $this->content, + 'created_at' => $this->created_at->format('d-m-Y H:i'), + 'long_ago' => $this->created_at->diffForHumans() ]; } } diff --git a/app/Models/Container.php b/app/Models/Container.php index 21f59843..61015f81 100644 --- a/app/Models/Container.php +++ b/app/Models/Container.php @@ -65,5 +65,4 @@ class Container extends AbstractModel implements Transportable, Remarkable { return $this->morphMany(Remark::class, 'owner'); } - } diff --git a/app/Models/Order.php b/app/Models/Order.php index 401da1db..995267ed 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 550d5f6f..fc775ba2 100644 --- a/app/Models/PackingList.php +++ b/app/Models/PackingList.php @@ -56,6 +56,14 @@ 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'); + } + /** * @return belongsToMany */ diff --git a/app/Models/Remark.php b/app/Models/Remark.php index 863c3001..f2de3a5c 100644 --- a/app/Models/Remark.php +++ b/app/Models/Remark.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Eloquent\Relations\BelongsTo; class Remark extends AbstractModel { @@ -15,4 +16,12 @@ class Remark extends AbstractModel { return $this->morphTo(); } + + /** + * @return BelongsTo + */ + public function commenter(): BelongsTo + { + return $this->BelongsTo(User::class, 'commenter_id', 'id'); + } } diff --git a/resources/assets/vue/components/containers/elements/ContainerCommentComponent.vue b/resources/assets/vue/components/containers/elements/ContainerCommentComponent.vue new file mode 100644 index 00000000..9cc32c2f --- /dev/null +++ b/resources/assets/vue/components/containers/elements/ContainerCommentComponent.vue @@ -0,0 +1,70 @@ + + diff --git a/resources/assets/vue/components/containers/elements/EditContainerFormComponent.vue b/resources/assets/vue/components/containers/elements/EditContainerFormComponent.vue deleted file mode 100644 index 25df6f59..00000000 --- a/resources/assets/vue/components/containers/elements/EditContainerFormComponent.vue +++ /dev/null @@ -1,59 +0,0 @@ - - \ No newline at end of file diff --git a/resources/assets/vue/components/containers/elements/ContainerArrivalFormComponent.vue b/resources/assets/vue/components/containers/forms/ContainerArrivalFormComponent.vue similarity index 100% rename from resources/assets/vue/components/containers/elements/ContainerArrivalFormComponent.vue rename to resources/assets/vue/components/containers/forms/ContainerArrivalFormComponent.vue diff --git a/resources/assets/vue/components/containers/forms/ContainerCommentFormComponent.vue b/resources/assets/vue/components/containers/forms/ContainerCommentFormComponent.vue new file mode 100644 index 00000000..a77807fa --- /dev/null +++ b/resources/assets/vue/components/containers/forms/ContainerCommentFormComponent.vue @@ -0,0 +1,49 @@ + + diff --git a/resources/assets/vue/components/containers/elements/ContainerDepatureFormComponent.vue b/resources/assets/vue/components/containers/forms/ContainerDepatureFormComponent.vue similarity index 100% rename from resources/assets/vue/components/containers/elements/ContainerDepatureFormComponent.vue rename to resources/assets/vue/components/containers/forms/ContainerDepatureFormComponent.vue diff --git a/resources/assets/vue/components/containers/elements/containerUnpackingFormContainer.vue b/resources/assets/vue/components/containers/forms/ContainerUnpackingFormContainer.vue similarity index 100% rename from resources/assets/vue/components/containers/elements/containerUnpackingFormContainer.vue rename to resources/assets/vue/components/containers/forms/ContainerUnpackingFormContainer.vue diff --git a/resources/assets/vue/components/containers/elements/CreateDeliveryPackinglistFormComponent.vue b/resources/assets/vue/components/containers/forms/CreateDeliveryPackinglistFormComponent.vue similarity index 100% rename from resources/assets/vue/components/containers/elements/CreateDeliveryPackinglistFormComponent.vue rename to resources/assets/vue/components/containers/forms/CreateDeliveryPackinglistFormComponent.vue diff --git a/resources/assets/vue/components/containers/forms/DeleteContainerCommentFormComponent.vue b/resources/assets/vue/components/containers/forms/DeleteContainerCommentFormComponent.vue new file mode 100644 index 00000000..3bd97a45 --- /dev/null +++ b/resources/assets/vue/components/containers/forms/DeleteContainerCommentFormComponent.vue @@ -0,0 +1,32 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/containers/forms/EditContainerCommentFormComponent.vue b/resources/assets/vue/components/containers/forms/EditContainerCommentFormComponent.vue new file mode 100644 index 00000000..6101f736 --- /dev/null +++ b/resources/assets/vue/components/containers/forms/EditContainerCommentFormComponent.vue @@ -0,0 +1,52 @@ + + \ No newline at end of file diff --git a/resources/assets/vue/components/containers/elements/ListPackagelistFormComponent.vue b/resources/assets/vue/components/containers/forms/ListPackagelistFormComponent.vue similarity index 100% rename from resources/assets/vue/components/containers/elements/ListPackagelistFormComponent.vue rename to resources/assets/vue/components/containers/forms/ListPackagelistFormComponent.vue diff --git a/resources/assets/vue/components/containers/elements/RescheduleDateFormComponent.vue b/resources/assets/vue/components/containers/forms/RescheduleDateFormComponent.vue similarity index 100% rename from resources/assets/vue/components/containers/elements/RescheduleDateFormComponent.vue rename to resources/assets/vue/components/containers/forms/RescheduleDateFormComponent.vue diff --git a/resources/assets/vue/components/containers/elements/ContainerProfileSectionComponent.vue b/resources/assets/vue/components/containers/sections/ContainerProfileSectionComponent.vue similarity index 93% rename from resources/assets/vue/components/containers/elements/ContainerProfileSectionComponent.vue rename to resources/assets/vue/components/containers/sections/ContainerProfileSectionComponent.vue index f2e0e2a7..a9d22e9c 100644 --- a/resources/assets/vue/components/containers/elements/ContainerProfileSectionComponent.vue +++ b/resources/assets/vue/components/containers/sections/ContainerProfileSectionComponent.vue @@ -616,41 +616,13 @@
-
+ +
-
-
- -
-
-

Jacob Arlington

-
-
-
-
-

Adipisicing occaecat pariatur id sunt ullamco quis laborum irure ea excepteur enim dolore est. Deserunt do consectetur ex in dolor labore ad reprehenderit velit laboris officia ut.

-
-
+
-
-
-
-
- -
-
-

Jacob Arlington

-
-
-
-
-

Adipisicing occaecat pariatur id sunt ullamco quis laborum irure ea excepteur enim dolore est. Deserunt do consectetur ex in dolor labore ad reprehenderit velit laboris officia ut.

-
-
-
-
- +
@@ -661,9 +633,7 @@