From 992ddf2f66450a3bce7f0ab61eeb9741d7427c67 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 7 May 2025 14:14:59 +0330 Subject: [PATCH] improve controller and write requst for update and store ,write route --- .../Admin/RoleManagementController.php | 12 +++--- .../Admin/RoleManagement/StoreRequest.php | 30 +++++++++++++++ .../Admin/RoleManagement/UpdateRequest.php | 37 +++++++++++++++++++ routes/web.php | 13 +++++++ 4 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 app/Http/Requests/Admin/RoleManagement/StoreRequest.php create mode 100644 app/Http/Requests/Admin/RoleManagement/UpdateRequest.php diff --git a/app/Http/Controllers/Admin/RoleManagementController.php b/app/Http/Controllers/Admin/RoleManagementController.php index 4ad96cb..0ca0947 100644 --- a/app/Http/Controllers/Admin/RoleManagementController.php +++ b/app/Http/Controllers/Admin/RoleManagementController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Admin; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; +use App\Http\Requests\Admin\RoleManagement\StoreRequest; +use App\Http\Requests\Admin\RoleManagement\UpdateRequest; use App\Http\Resources\Admin\RoleResource; use app\Http\Traits\ApiResponse; use App\Models\Role; @@ -23,12 +25,10 @@ class RoleManagementController extends Controller $allowedFilters = $columns; $allowedSortings = $columns; - $allowedRelations = array('permissions'); - - $query = Role::query(); + $allowedRelations = array('permissions:id,name_fa'); $data = DataTableFacade::run( - $query, + Role::query(), $request, allowedFilters: $allowedFilters, allowedSortings: $allowedSortings, @@ -41,7 +41,7 @@ class RoleManagementController extends Controller /** * Store a newly created resource in storage. */ - public function store(Request $request): JsonResponse + public function store(StoreRequest $request): JsonResponse { DB::transaction(function () use ($request) { $role = Role::create([ @@ -66,7 +66,7 @@ class RoleManagementController extends Controller /** * Update the specified resource in storage. */ - public function update(Request $request, Role $role): JsonResponse + public function update(UpdateRequest $request, Role $role): JsonResponse { DB::transaction(function () use ($request, $role) { $role->update([ diff --git a/app/Http/Requests/Admin/RoleManagement/StoreRequest.php b/app/Http/Requests/Admin/RoleManagement/StoreRequest.php new file mode 100644 index 0000000..55f778f --- /dev/null +++ b/app/Http/Requests/Admin/RoleManagement/StoreRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => 'required|unique:roles,name|string|max:255', + 'name_fa' => 'required|unique:roles,name_fa|string|max:255', + 'permissions' => 'required|exists:permissions,id|array', + ]; + } +} diff --git a/app/Http/Requests/Admin/RoleManagement/UpdateRequest.php b/app/Http/Requests/Admin/RoleManagement/UpdateRequest.php new file mode 100644 index 0000000..f7a0de7 --- /dev/null +++ b/app/Http/Requests/Admin/RoleManagement/UpdateRequest.php @@ -0,0 +1,37 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => [ + 'required','string', 'max:255', + Rule::unique('roles', 'name')->ignore($this->role->id) + ], + 'permissions' => 'required|exists:permissions,id|array', + 'name_fa' => [ + 'required','string', 'max:255', + Rule::unique('roles', 'name_fa')->ignore($this->role->id) + ], + ]; + } +} diff --git a/routes/web.php b/routes/web.php index b6ad3f2..a87fec5 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ group(function () { ->group(function () { Route::get('/list', 'list')->name('list'); }); + + Route::middleware('auth:sanctum') + ->prefix('roles') + ->controller(RoleManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::get('list', 'list')->name('list'); + Route::post('/', 'store')->name('store'); + Route::get('/{roll}', 'show')->name('show'); + Route::post('/{roll}', 'update')->name('update'); + Route::delete('/{roll}', 'destroy')->name('destroy'); + }); });