transform($request); $query = QueryBuilder::for(UserRole::class) ->allowedSorts(['code', 'name', 'desc', 'created_at', 'updated_at']); foreach ($queryItems as $filter) { $query->where($filter[0], $filter[1], $filter[2]); } if ($request->has('limit')) { $role = $query->paginate($request->query('limit')); } else { $role = $query->paginate(); } $role->getCollection()->transform(function ($roles) { return $roles; }); return RoleResource::collection($role); } public function store(Request $request) { try { $validatedData = $request->validate([ 'name' => 'required|string|max:100', 'code' => 'required|string|max:100', 'desc' => 'nullable|string|max:255', ]); $role = UserRole::create($validatedData); return response()->json([ 'message' => 'Role created successfully', 'data' => new RoleResource(($role)), ], 201); } catch (ValidationException $err) { return response()->json([ 'error' => 'Validation failed', 'message' => $err->errors(), ], 422); } } public function show($id) { $roleId = UserRole::findOrFail($id); return new RoleResource($roleId); } public function update(Request $request, $id) { try { $role = UserRole::findOrFail($id); $validatedData = $request->validate([ 'name' => 'string|max:100', 'code' => 'string|max:100', 'desc' => 'sometimes|string|max:255', ]); $role->update($validatedData); return response()->json([ 'message' => 'Role updated successfully', 'data' => new RoleResource($role), ], 200); } catch (ModelNotFoundException $e) { return response()->json([ 'error' => 'Role not found', 'message' => $e->getMessage(), ], 404); } catch (ValidationException $e) { return response()->json([ 'error' => 'Validation failed', 'message' => $e->errors(), ], 422); } catch (\Exception $e) { return response()->json([ 'error' => 'Failed to update role', 'message' => $e->getMessage(), ], 500); } } public function destroy($id) { try { $role = UserRole::findOrFail($id); $role->delete(); return response()->json([ 'message' => 'Role deleted successfully', ], 200); } catch (ModelNotFoundException $e) { return response()->json([ 'error' => 'Role not found with provided ID', 'message' => $e->getMessage(), ], 404); } catch (\Exception $e) { return response()->json([ 'error' => 'Failed to delete role', 'message' => $e->getMessage(), ], 500); } } }