diff --git a/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php new file mode 100644 index 00000000..d7fbda65 --- /dev/null +++ b/app/Classes/Modules/Companies/ControllersLogic/CreateCompanyRemarkLogic.php @@ -0,0 +1,62 @@ + '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/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php b/app/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php new file mode 100644 index 00000000..4cc894a5 --- /dev/null +++ b/app/Http/Controllers/Companies/CreateCompanyModulesRemarkController.php @@ -0,0 +1,20 @@ +execute($request); + } +} diff --git a/app/Http/Resources/CompanyModuleResource.php b/app/Http/Resources/CompanyModuleResource.php index e1f253be..7af3ae8d 100644 --- a/app/Http/Resources/CompanyModuleResource.php +++ b/app/Http/Resources/CompanyModuleResource.php @@ -39,6 +39,7 @@ class CompanyModuleResource extends JsonResource 'reference' => $this->reference, 'address' => new AddressResource($defaultAddress), 'company' => new CompanyResource($this->whenLoaded('company')), + 'remarks' => RemarkResource::collection($this->remarks), 'marking' => $marking ]; diff --git a/app/Models/CompanyModule.php b/app/Models/CompanyModule.php index 180d8286..c4964447 100644 --- a/app/Models/CompanyModule.php +++ b/app/Models/CompanyModule.php @@ -23,6 +23,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use PhpParser\Node\Expr\AssignOp\Mod; use Staudenmeir\EloquentHasManyDeep\HasManyDeep; use Staudenmeir\EloquentHasManyDeep\HasRelationships; +use App\Classes\General\Interfaces\Remarkable; /** * Class CompanyModule @@ -32,7 +33,7 @@ use Staudenmeir\EloquentHasManyDeep\HasRelationships; * @property integer type * @property integer status */ -class CompanyModule extends AbstractModel implements Addressable, Documentable, Contactable, ContainerOwner, Packable +class CompanyModule extends AbstractModel implements Addressable, Documentable, Contactable, ContainerOwner, Packable, Remarkable { use HasRelationships; use SoftDeletes; @@ -177,6 +178,14 @@ class CompanyModule extends AbstractModel implements Addressable, Documentable, return $query->where('type', '=', BusinessType::WAREHOUSE); } + /** + * @return MorphMany + */ + public function remarks(): morphMany + { + return $this->morphMany(Remark::class, 'owner'); + } + } diff --git a/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue b/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue index 7e94f725..f2bff382 100644 --- a/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue +++ b/resources/assets/vue/components/settings/elements/WarehouseChargesComponent.vue @@ -7,7 +7,7 @@ -
+
Warehouse Name
@@ -19,7 +19,7 @@
-
+
Extra Charges
@@ -34,6 +34,24 @@
+
+
+
+
Remarks
+
+
+
+
+
{{ data.remarks[0].content }}
+
+
+ Add +
+ + + +
+
diff --git a/resources/assets/vue/components/settings/forms/WarehouseRemarkFormComponent.vue b/resources/assets/vue/components/settings/forms/WarehouseRemarkFormComponent.vue new file mode 100644 index 00000000..51c2ae31 --- /dev/null +++ b/resources/assets/vue/components/settings/forms/WarehouseRemarkFormComponent.vue @@ -0,0 +1,70 @@ + + \ 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'); +});