improve code in controller and forme requst

This commit is contained in:
2025-10-27 18:15:10 +03:30
parent b155db758a
commit 9e179baa6b
3 changed files with 180 additions and 121 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\V3\Dashboard; namespace App\Http\Controllers\V3\Dashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest;
use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest;
@@ -25,58 +26,101 @@ class UserManagementController extends Controller
{ {
use ApiResponse; use ApiResponse;
// public function index(Request $request)
// {
// auth()->user()->addActivityComplete(1038);
//
// $province = $request->province ?? null;
// $city = $request->city ?? null;
// $province_office = $request->province_office ?? null;
//
// if (Auth::user()->checkUserHasPermission('full-user-management')) {
// $users = User::when($province, function ($query, $province) {
// return $query->where('province_id', $province);
// })
// ->when($city, function ($query, $city) {
// return $query->where('city_id', $city);
// })
// ->when($province_office, function ($query, $province_office) {
// if ($province_office == -1) {
// return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id');
// } else {
// return $query->where('edarate_ostani_id', $province_office);
// }
// })
// ->with(['roles' => function ($query) {
// $query->where('for_report', 1);
// }])
// ->get();
// } elseif (Auth::user()->checkUserHasPermission('limited-user-management')) {
// $users = User::when($province, function ($query, $province) {
// return $query->where('province_id', $province);
// })
// ->where('province_id', Auth::user()->province_id)
// ->when($city, function ($query, $city) {
// return $query->where('city_id', $city);
// })
// ->when($province_office, function ($query, $province_office) {
// if ($province_office == -1) {
// return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id');
// } else {
// return $query->where('edarate_ostani_id', $province_office);
// }
// })
// ->with(['roles' => function ($query) {
// $query->where('for_report', 1);
// }])
// ->get();
// } else {
// return response()->json([
// 'message' => 'Forbidden',
// ], 403);
// }
//
// return $this->successResponse($users);
// }
public function index(Request $request) public function index(Request $request)
{ {
auth()->user()->addActivityComplete(1038); $currentUser = Auth::user();
$currentUser->addActivityComplete(1038);
$province = $request->province ?? null; $province = $request->province ?? null;
$city = $request->city ?? null; $city = $request->city ?? null;
$province_office = $request->province_office ?? null; $province_office = $request->province_office ?? null;
if (
if (Auth::user()->checkUserHasPermission('full-user-management')) { ! $currentUser->checkUserHasPermission('full-user-management') &&
$users = User::when($province, function ($query, $province) { ! $currentUser->checkUserHasPermission('limited-user-management')
) {
return response()->json(['message' => 'Forbidden'], 403);
}
$query = User::query()
->when($province, function ($query, $province) {
return $query->where('province_id', $province); return $query->where('province_id', $province);
}) })
->with(['roles' => fn($q) => $q->where('for_report', 1)])
->when($city, function ($query, $city) { ->when($city, function ($query, $city) {
return $query->where('city_id', $city); return $query->where('city_id', $city);
}) })
->when($province_office, function ($query, $province_office) { ->when($province_office, function ($query, $province_office) {
if ($province_office == -1) { if ($province_office === -1) {
return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); return $query->whereNull('edarate_ostani_id')->whereNotNull('edarate_shahri_id');
} else { } else {
return $query->where('edarate_ostani_id', $province_office); return $query->where('edarate_ostani_id', $province_office);
} }
}) });
->with(['roles' => function ($query) {
$query->where('for_report', 1);
}])
->get();
} elseif (Auth::user()->checkUserHasPermission('limited-user-management')) {
$users = User::when($province, function ($query, $province) {
return $query->where('province_id', $province);
})
->where('province_id', Auth::user()->province_id)
->when($city, function ($query, $city) {
return $query->where('city_id', $city);
})
->when($province_office, function ($query, $province_office) {
if ($province_office == -1) {
return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id');
} else {
return $query->where('edarate_ostani_id', $province_office);
}
})
->with(['roles' => function ($query) {
$query->where('for_report', 1);
}])
->get();
} else {
return response()->json([
'message' => 'Forbidden',
], 403);
}
return $this->successResponse($users); if ($currentUser->checkUserHasPermission('limited-user-management')) {
$query->where('province_id', $currentUser->province_id);
}
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*']
);
return $this->successResponse($data);
} }
public function store(StoreRequest $request): jsonResponse public function store(StoreRequest $request): jsonResponse
@@ -85,7 +129,8 @@ class UserManagementController extends Controller
$user->addActivityComplete(1039); $user->addActivityComplete(1039);
User::query()->create([ $createdUser = DB::transaction(function () use ($request) {
$user = User::query()->create([
'username' => $request->username, 'username' => $request->username,
'national_code' => $request->national_code, 'national_code' => $request->national_code,
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
@@ -105,7 +150,7 @@ class UserManagementController extends Controller
$user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa;
if ($request->edarate_ostani_id != 'null') { if ($request->edarate_ostani_id != null) {
$temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa;
$user->edarate_ostani_id = $request->edarate_ostani_id; $user->edarate_ostani_id = $request->edarate_ostani_id;
$user->edarate_ostani_name = $temp; $user->edarate_ostani_name = $temp;
@@ -125,11 +170,12 @@ class UserManagementController extends Controller
$user->name = $temp.' استان '.$user->province_fa; $user->name = $temp.' استان '.$user->province_fa;
} }
} }
$user->save();
$user->password = Hash::make($request->password); return $user;
$user->national_code = $request->national_code; });
return $this->successResponse($user); return $this->successResponse($createdUser);
} }
public function show(User $user) public function show(User $user)
@@ -142,11 +188,11 @@ class UserManagementController extends Controller
public function update(UpdateRequest $request, User $user): JsonResponse public function update(UpdateRequest $request, User $user): JsonResponse
{ {
auth()->user()->addActivityComplete(1040); auth()->user()->addActivityComplete(1040);
$createdUser = DB::transaction(function () use ($request, $user) {
$user->update([ $user->update([
'username' => $request->username, 'username' => $request->username,
'national_code' => $request->national_code, 'national_code' => $request->national_code,
'password' => Hash::make($request->password),
'province_id' => $request->province_id ?: null, 'province_id' => $request->province_id ?: null,
'city_id' => $request->city_id ?: null, 'city_id' => $request->city_id ?: null,
'edarate_ostani_id' => $request->edarate_ostani_id, 'edarate_ostani_id' => $request->edarate_ostani_id,
@@ -163,14 +209,14 @@ class UserManagementController extends Controller
$user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa;
if ($request->edarate_ostani_id != 'null') { if ($request->edarate_ostani_id != null) {
$temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa;
$user->edarate_ostani_id = $request->edarate_ostani_id; $user->edarate_ostani_id = $request->edarate_ostani_id;
$user->edarate_ostani_name = $temp; $user->edarate_ostani_name = $temp;
if ($request->province_id == 0) { if ($request->province_id == 0) {
$user->name = $temp.' '.$user->province_fa; $user->name = $temp . ' ' . $user->province_fa;
} else { } else {
$user->name = $temp.' استان '.$user->province_fa; $user->name = $temp . ' استان ' . $user->province_fa;
} }
} else { } else {
$temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa;
@@ -178,9 +224,9 @@ class UserManagementController extends Controller
$user->edarate_shahri_name = $temp; $user->edarate_shahri_name = $temp;
if ($request->province_id == 0) { if ($request->province_id == 0) {
$user->name = $temp.' '.$user->province_fa; $user->name = $temp . ' ' . $user->province_fa;
} else { } else {
$user->name = $temp.' استان '.$user->province_fa; $user->name = $temp . ' استان ' . $user->province_fa;
} }
} }
@@ -197,8 +243,9 @@ class UserManagementController extends Controller
} }
$user->save(); $user->save();
});
return $this->successResponse($user); return $this->successResponse($createdUser);
} }
public function destroy(User $user) public function destroy(User $user)

View File

@@ -30,6 +30,12 @@ class StoreRequest extends FormRequest
'username' => 'required|unique:users,username', 'username' => 'required|unique:users,username',
'national_code' => 'unique:users,national_code', 'national_code' => 'unique:users,national_code',
'password' => 'required|min:8', 'password' => 'required|min:8',
'first_name' => 'required|string',
'last_name' => 'required|string',
'position' => 'required|string',
'mobile' => 'required|string',
'degree' => 'required|string',
'major' => 'required|string',
]; ];
} }

View File

@@ -31,6 +31,12 @@ class UpdateRequest extends FormRequest
'username' => ['required', Rule::unique('users', 'username')->ignore($this->user->id)], 'username' => ['required', Rule::unique('users', 'username')->ignore($this->user->id)],
'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)],
'password' => 'required|min:8', 'password' => 'required|min:8',
'first_name' => 'required|string',
'last_name' => 'required|string',
'position' => 'required|string',
'mobile' => 'required|string',
'degree' => 'required|string',
'major' => 'required|string',
]; ];
} }
} }