where('username', "<>", "witel"), $request, allowedFilters: array('id', 'full_name', 'username', 'province_id', 'phone_number', 'national_id', 'telephone_id'), allowedRelations: array('roles:id,name_fa'), allowedSortings: array('id', 'full_name', 'username', 'province_id', 'phone_number', 'national_id', 'telephone_id') ); return response()->json($data); } public function store(StoreRequest $request): JsonResponse { DB::transaction(function () use ($request) { $province = Province::query()->find($request->province_id); $user = User::query()->create([ 'full_name' => $request->full_name, 'username' => $request->username, 'position' => $request->position, 'gender' => $request->gender, 'national_id' => $request->national_id, 'phone_number' => $request->phone_number, 'province_id' => $province->id, 'province_fa' => $province->name, 'password' => Hash::make($request->password), 'email' => $request->email, 'telephone_id' => $request->telephone_id, ]); $user->assignRole(Role::query()->find($request->role_id)); }); return $this->successResponse(); } public function show(User $user): JsonResponse { return $this->successResponse(new UserResource($user)); } public function update(UpdateRequest $request, User $user): JsonResponse { DB::transaction(function () use ($request, $user) { $province = Province::query()->find($request->province_id); $user->update([ 'full_name' => $request->full_name, 'username' => $request->username, 'position' => $request->position, 'gender' => $request->gender, 'national_id' => $request->national_id, 'phone_number' => $request->phone_number, 'province_id' => $province->id, 'province_fa' => $province->name, 'email' => $request->email, 'telephone_id' => $request->telephone_id, ]); $user->syncRoles(Role::query()->find($request->role_id)); }); return $this->successResponse(); } public function destroy(User $user): JsonResponse { DB::transaction(function () use ($user) { if ($user->avatar) { FileFacade::delete($user->avatar, true); } $user->syncRoles([]); $user->delete(); }); return $this->successResponse(); } }