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'); });