From a542914cc3943640672be4ef13ca48ce1fa646bb Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 25 Oct 2025 10:35:08 +0330 Subject: [PATCH 1/3] create new option for this project and dependency for this object --- .../V3/Dashboard/RoleManagementController.php | 71 ++++++++++++++++ .../V3/Dashboard/UserManagementController.php | 85 ++----------------- .../Dashboard/RoleManageMent/StoreRequest.php | 30 +++++++ .../RoleManageMent/UpdateRequest.php | 30 +++++++ app/Services/Cartables/Role/RoleService.php | 25 ++++++ routes/v3.php | 11 +++ 6 files changed, 172 insertions(+), 80 deletions(-) create mode 100644 app/Http/Controllers/V3/Dashboard/RoleManagementController.php create mode 100644 app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php create mode 100644 app/Services/Cartables/Role/RoleService.php diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php new file mode 100644 index 00000000..66e1c2db --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -0,0 +1,71 @@ +dataTable($request); + return response()->json($data); + } + + public function store(StoreRequest $request) + { + auth()->user()->addActivityComplete(1043); + + $role = Role::create([ + 'name' => time(), + 'name_fa' => $request->role_name, + 'description' => $request->description + ]); + + $permissions = $request->permissions; + + $role->givePermissionTo($permissions); + + return $this->successResponse($role); + + } + public function update(UpdateRequest $request, Role $role) + { + auth()->user()->addActivityComplete(1044); + + $updateRole = $role->update([ + 'name_fa' => $request->role_name, + 'description' => $request->description + ]); + + $permissions = $request->permissions; + + $role->syncPermissions($permissions); + + return $this->successResponse($role); + + } + + public function show(Role $role) + { + + return $this->successResponse($role); + + } + + public function delete(Role $role) + { + auth()->user()->addActivityComplete(1045); + + + return $this->successResponse($role); + + } +} diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index d56b0753..c4f3474a 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -35,9 +35,7 @@ class UserManagementController extends Controller // } public function indexUser(Request $request) { - if (auth()->user()) { - auth()->user()->addActivityComplete(1038); - } + auth()->user()->addActivityComplete(1038); $province = $request->province ?? null; $city = $request->city ?? null; @@ -85,16 +83,13 @@ class UserManagementController extends Controller 'message' => 'Forbidden' ], 403); } - - return response()->json([ - 'status' => '200', - 'message' => 'success', - 'data' => $users, - ], 200); + return $this->successResponse($users); } public function store(StoreRequest $request): jsonResponse { + auth()->user()->addActivityComplete(1039); + User::query()->create([ 'username' => $request->username, 'national_code' => $request->national_code, @@ -139,78 +134,8 @@ class UserManagementController extends Controller $user->national_code = $request->national_code; $user->save(); - if (auth()->user()) { - auth()->user()->addActivityComplete(1039, $user); - } - return response()->json([ - 'message' => 'success', - 'data' => $user - ], 200); - } - - public function editRole(Request $request, $id) - { - $request->validate([ - 'role_name' => 'required|string', - 'permissions' => 'required' - ], [ - 'permissions.required' => 'انتخاب دسترسی‌ها الزامی است.', - 'role_name.required' => 'نام نقش الزامی است.' - ]); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1044); - } - $role = Role::find($id); - - - $updateRole = $role->update([ - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); - - $permissions = $request->permissions; - // $permissions = explode(",", $request->permissions); - - $role->syncPermissions($permissions); - - return response()->json([ - 'message' => 'success', - 'data' => $role - ]); - } - - - public function createRole(Request $request) - { - $request->validate([ - 'role_name' => 'required|string', - 'permissions' => 'required' - ], [ - 'permissions.required' => 'انتخاب دسترسی‌ها الزامی است.', - 'role_name.required' => 'نام نقش الزامی است.' - ]); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1043); - } - - $role = Role::create([ - 'name' => time(), - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); - - $permissions = $request->permissions; - - // $permissions = explode(",", $request->permissions); - $role->givePermissionTo($permissions); - - return response()->json([ - 'message' => 'success', - 'data' => $role - ]); + return $this->successResponse($user); } public function show(User $user) diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php new file mode 100644 index 00000000..8db12433 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'role_name' => 'required|string', + 'permissions' => 'required' + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php new file mode 100644 index 00000000..1aaffa2b --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'role_name' => 'required|string', + 'permissions' => 'required' + ]; + } +} diff --git a/app/Services/Cartables/Role/RoleService.php b/app/Services/Cartables/Role/RoleService.php new file mode 100644 index 00000000..6ae4bdf6 --- /dev/null +++ b/app/Services/Cartables/Role/RoleService.php @@ -0,0 +1,25 @@ +name('changePassword'); Route::post('delete-role/{id}', 'deleteRole')->name('deleteRole'); }); +Route::prefix('role') + ->name('role.') + ->controller(RoleManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::get('/{role}', 'show')->name('show'); + Route::post('/', 'store')->name('store'); + Route::post('/{role}', 'update')->name('update'); + Route::delete('/{role}', 'destroy')->name('destroy'); + }); Route::get('/test', function () { $csvExporter = new \Laracsv\Export(); From 0272aa0c9fcda0f2871122034ac4d886a9aa5ca5 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 25 Oct 2025 15:00:38 +0330 Subject: [PATCH 2/3] fix and improve the code --- .../V3/Dashboard/RoleManagementController.php | 76 ++++++++++++------- .../Dashboard/RoleManageMent/StoreRequest.php | 8 +- .../RoleManageMent/UpdateRequest.php | 9 ++- app/Services/Cartables/Role/RoleService.php | 4 +- routes/v3.php | 2 +- 5 files changed, 65 insertions(+), 34 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php index 66e1c2db..1461bb54 100644 --- a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -2,70 +2,92 @@ namespace App\Http\Controllers\V3\Dashboard; +use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\RoleManageMent\StoreRequest; use App\Http\Requests\V3\Dashboard\RoleManageMent\UpdateRequest; +use App\Http\Traits\ApiResponse; use App\Models\Role; use App\Services\Cartables\Role\RoleService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Throwable; class RoleManagementController extends Controller { - public function index(Request $request ,RoleService $roleService): JsonResponse + use ApiResponse; + + public function index(Request $request): JsonResponse { - $data = $roleService->dataTable($request); + $data = DataTableFacade::run( + Role::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'name', 'name_fa', 'description', 'for_report'] + ); return response()->json($data); } - public function store(StoreRequest $request) + /** + * @throws Throwable + */ + public function store(StoreRequest $request): JsonResponse { auth()->user()->addActivityComplete(1043); - $role = Role::create([ - 'name' => time(), - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); + $role = DB::transaction(function () use ($request) + { + $role = Role::create([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'guard_name' => 'web', + 'for_report' => $request->for_report, + ]); - $permissions = $request->permissions; - - $role->givePermissionTo($permissions); + $role->givePermissionTo($request->permissions); + }); return $this->successResponse($role); - } - public function update(UpdateRequest $request, Role $role) + + /** + * @throws Throwable + */ + public function update(UpdateRequest $request, Role $role): JsonResponse { auth()->user()->addActivityComplete(1044); - $updateRole = $role->update([ - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); + DB::transaction(function () use ($request, $role) + { + $role->update([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'guard_name' => 'web', + 'for_report' => $request->for_report, + ]); - $permissions = $request->permissions; - - $role->syncPermissions($permissions); + $role->syncPermissions($request->permissions); + }); return $this->successResponse($role); - } - public function show(Role $role) + public function show(Role $role): JsonResponse { - return $this->successResponse($role); - } - public function delete(Role $role) + public function delete(Role $role): JsonResponse { auth()->user()->addActivityComplete(1045); + $role->delete(); - return $this->successResponse($role); - + return $this->successResponse(); } } diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php index 8db12433..27e725b6 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -23,8 +23,12 @@ class StoreRequest extends FormRequest public function rules(): array { return [ - 'role_name' => 'required|string', - 'permissions' => 'required' + 'name' => 'required|string|unique:roles,name', + 'name_fa' => 'required|string', + 'description' =>'string', + 'for_report' => 'in:0,1', + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id' ]; } } diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php index 1aaffa2b..615b3ff6 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\V3\Dashboard\RoleManageMent; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class UpdateRequest extends FormRequest { @@ -23,8 +24,12 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ - 'role_name' => 'required|string', - 'permissions' => 'required' + 'name' => ['required', 'string', 'max:255',Rule::unique('roles','name')->ignore($this->role->id)], + 'name_fa' => 'required|string', + 'description' =>'string', + 'for_report' => 'in:0,1', + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id' ]; } } diff --git a/app/Services/Cartables/Role/RoleService.php b/app/Services/Cartables/Role/RoleService.php index 6ae4bdf6..c43adb95 100644 --- a/app/Services/Cartables/Role/RoleService.php +++ b/app/Services/Cartables/Role/RoleService.php @@ -12,14 +12,14 @@ use Illuminate\Support\Facades\DB; class RoleService { - public function dataTable(Request $request) + public function dataTable(Request $request): array { return DataTableFacade::run( Role::query(), $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['*'] + allowedSelects: ['id', 'name', 'name_fa', 'guard_name', 'description', 'for_report'] ); } } diff --git a/routes/v3.php b/routes/v3.php index 187c66fd..e53bbf69 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -613,8 +613,8 @@ Route::prefix('role') ->controller(RoleManagementController::class) ->group(function () { Route::get('/', 'index')->name('index'); - Route::get('/{role}', 'show')->name('show'); Route::post('/', 'store')->name('store'); + Route::get('/{role}', 'show')->name('show'); Route::post('/{role}', 'update')->name('update'); Route::delete('/{role}', 'destroy')->name('destroy'); }); From 3a18048ceed8f1857309c3557b2130f06f25e424 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 25 Oct 2025 15:04:18 +0330 Subject: [PATCH 3/3] fix and improve the code --- .../V3/Dashboard/RoleManagementController.php | 4 +-- .../Dashboard/RoleManageMent/StoreRequest.php | 1 - .../RoleManageMent/UpdateRequest.php | 1 - app/Services/Cartables/Role/RoleService.php | 25 ------------------- 4 files changed, 1 insertion(+), 30 deletions(-) delete mode 100644 app/Services/Cartables/Role/RoleService.php diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php index 1461bb54..ccc3caac 100644 --- a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -26,7 +26,7 @@ class RoleManagementController extends Controller $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['id', 'name', 'name_fa', 'description', 'for_report'] + allowedSelects: ['id', 'name', 'name_fa', 'description'] ); return response()->json($data); } @@ -45,7 +45,6 @@ class RoleManagementController extends Controller 'name_fa' => $request->name_fa, 'description' => $request->description, 'guard_name' => 'web', - 'for_report' => $request->for_report, ]); $role->givePermissionTo($request->permissions); @@ -68,7 +67,6 @@ class RoleManagementController extends Controller 'name_fa' => $request->name_fa, 'description' => $request->description, 'guard_name' => 'web', - 'for_report' => $request->for_report, ]); $role->syncPermissions($request->permissions); diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php index 27e725b6..4f628943 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -26,7 +26,6 @@ class StoreRequest extends FormRequest 'name' => 'required|string|unique:roles,name', 'name_fa' => 'required|string', 'description' =>'string', - 'for_report' => 'in:0,1', 'permissions' => 'array', 'permissions.*' => 'integer|exists:permissions,id' ]; diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php index 615b3ff6..c2ced356 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -27,7 +27,6 @@ class UpdateRequest extends FormRequest 'name' => ['required', 'string', 'max:255',Rule::unique('roles','name')->ignore($this->role->id)], 'name_fa' => 'required|string', 'description' =>'string', - 'for_report' => 'in:0,1', 'permissions' => 'array', 'permissions.*' => 'integer|exists:permissions,id' ]; diff --git a/app/Services/Cartables/Role/RoleService.php b/app/Services/Cartables/Role/RoleService.php deleted file mode 100644 index c43adb95..00000000 --- a/app/Services/Cartables/Role/RoleService.php +++ /dev/null @@ -1,25 +0,0 @@ -