From 67dbeee57b937d3a9e5a5ec1c4527993d95474fe Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 5 Mar 2025 09:51:16 +0330 Subject: [PATCH] create permission crud --- .../V3/PermissionManagementController.php | 82 +++++++++++++++++++ .../Requests/V3/Permission/StoreRequest.php | 34 ++++++++ .../Requests/V3/Permission/UpdateRequest.php | 34 ++++++++ routes/v3.php | 12 +++ 4 files changed, 162 insertions(+) create mode 100644 app/Http/Controllers/V3/PermissionManagementController.php create mode 100644 app/Http/Requests/V3/Permission/StoreRequest.php create mode 100644 app/Http/Requests/V3/Permission/UpdateRequest.php diff --git a/app/Http/Controllers/V3/PermissionManagementController.php b/app/Http/Controllers/V3/PermissionManagementController.php new file mode 100644 index 00000000..8950767f --- /dev/null +++ b/app/Http/Controllers/V3/PermissionManagementController.php @@ -0,0 +1,82 @@ +successResponse(DataTableFacade::run( + Permission::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'])); + } + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request): JsonResponse + { + Permission::create([ + 'name' => $request->name, + 'guard_name' => 'web', + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'type' => $request->type, + 'type_fa' => $request->type_fa, + 'need_province' => $request->need_province, + 'need_edare_shahri' => $request->need_edare_shahri, + ]); + + return $this->successResponse(); + } + + /** + * Display the specified resource. + */ + public function show(Permission $permission): JsonResponse + { + return $this->successResponse($permission); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateRequest $request, Permission $permission): JsonResponse + { + $permission->update([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'type' => $request->type, + 'type_fa' => $request->type_fa, + 'need_province' => $request->need_province, + 'need_edare_shahri' => $request->need_edare_shahri, + ]); + + return $this->successResponse(); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Permission $permission): JsonResponse + { + $permission->delete(); + return $this->successResponse(); + } +} diff --git a/app/Http/Requests/V3/Permission/StoreRequest.php b/app/Http/Requests/V3/Permission/StoreRequest.php new file mode 100644 index 00000000..4c04b82b --- /dev/null +++ b/app/Http/Requests/V3/Permission/StoreRequest.php @@ -0,0 +1,34 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|string|unique:permissions,name', + 'name_fa' => 'required|string', + 'description' => 'required|string', + 'type' => 'required|string', + 'type_fa' => 'required|string', + 'need_province' => 'required|in:0,1', + 'need_edare_shahri' => 'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Permission/UpdateRequest.php b/app/Http/Requests/V3/Permission/UpdateRequest.php new file mode 100644 index 00000000..3c16cab0 --- /dev/null +++ b/app/Http/Requests/V3/Permission/UpdateRequest.php @@ -0,0 +1,34 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => "required|string|unique:permissions,name,{$this->permission->id}", + 'name_fa' => 'required|string', + 'description' => 'required|string', + 'type' => 'required|string', + 'type_fa' => 'required|string', + 'need_province' => 'required|in:0,1', + 'need_edare_shahri' => 'required|in:0,1', + ]; + } +} diff --git a/routes/v3.php b/routes/v3.php index 43cc8367..14306eaf 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -21,6 +21,7 @@ use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacyController; use App\Http\Controllers\V3\FMSVehicleManagementController; use App\Http\Controllers\V3\Harim\DivarkeshiController; use App\Http\Controllers\V3\LogListController; +use App\Http\Controllers\V3\PermissionManagementController; use App\Http\Controllers\V3\ProfileController; use App\Http\Controllers\V3\RahdaranController; use Illuminate\Support\Facades\Route; @@ -362,3 +363,14 @@ Route::name('items.') Route::get('/items', 'getItems')->name('list'); Route::get('/sub_items/{item}', 'getSubItems')->name('subItems'); }); + +Route::prefix('permissions') + ->name('permissions.') + ->controller(PermissionManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{permission}', 'show')->name('show'); + Route::post('/{permission}', 'update')->name('update'); + Route::delete('/{permission}', 'destroy')->name('destroy'); + });