improve code in controller and form request for V3 whit pint package

This commit is contained in:
2025-10-27 13:20:14 +03:30
parent 71f5001477
commit b155db758a
118 changed files with 604 additions and 559 deletions

View File

@@ -5,14 +5,12 @@ namespace App\Http\Controllers\V3\Dashboard;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest;
use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest;
use App\Http\Requests\V3\Dashboard\UserManagement\PermissionUpdateRequest;
use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest;
use App\Http\Requests\V3\Dashboard\UserManagement\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\City;
use App\Models\EdarateOstani;
use App\Models\EdarateShahri;
use App\Models\Permission;
use App\Models\Province;
use App\Models\Role;
use App\Models\User;
@@ -22,7 +20,6 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
class UserManagementController extends Controller
{
@@ -75,9 +72,10 @@ class UserManagementController extends Controller
->get();
} else {
return response()->json([
'message' => 'Forbidden'
'message' => 'Forbidden',
], 403);
}
return $this->successResponse($users);
}
@@ -85,36 +83,36 @@ class UserManagementController extends Controller
{
$user = auth()->user();
$user ->addActivityComplete(1039);
$user->addActivityComplete(1039);
User::query()->create([
'username' => $request->username,
'national_code' => $request->national_code,
'password' => Hash::make($request->password),
'province_id' => $request->province_id ?: null,
'city_id' => $request->city_id ?: null,
'edarate_ostani_id' => $request->edarate_ostani_id,
'edarate_shahri_id' => $request->edarate_shahri_id,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'position' => $request->position,
'mobile' => $request->mobile,
'degree' => $request->degree,
'major' => $request->major,
'username' => $request->username,
'national_code' => $request->national_code,
'password' => Hash::make($request->password),
'province_id' => $request->province_id ?: null,
'city_id' => $request->city_id ?: null,
'edarate_ostani_id' => $request->edarate_ostani_id,
'edarate_shahri_id' => $request->edarate_shahri_id,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'position' => $request->position,
'mobile' => $request->mobile,
'degree' => $request->degree,
'major' => $request->major,
]);
$user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa;
$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') {
$temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa;
$user->edarate_ostani_id = $request->edarate_ostani_id;
$user->edarate_ostani_name = $temp;
if ($request->province_id == 0) {
$user->name = $temp .' '. $user->province_fa;
$user->name = $temp.' '.$user->province_fa;
} else {
$user->name = $temp .' استان '. $user->province_fa;
$user->name = $temp.' استان '.$user->province_fa;
}
} else {
$temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa;
@@ -122,9 +120,9 @@ class UserManagementController extends Controller
$user->edarate_shahri_name = $temp;
if ($request->province_id == 0) {
$user->name = $temp .' '. $user->province_fa;
$user->name = $temp.' '.$user->province_fa;
} else {
$user->name = $temp .' استان '. $user->province_fa;
$user->name = $temp.' استان '.$user->province_fa;
}
}
@@ -137,6 +135,7 @@ class UserManagementController extends Controller
public function show(User $user)
{
$user = User::where('id', $user->id)->with(['roles', 'permissions'])->get();
return $this->successResponse($user);
}
@@ -145,33 +144,33 @@ class UserManagementController extends Controller
auth()->user()->addActivityComplete(1040);
$user->update([
'username' => $request->username,
'national_code' => $request->national_code,
'password' => Hash::make($request->password),
'province_id' => $request->province_id ?: null,
'city_id' => $request->city_id ?: null,
'edarate_ostani_id' => $request->edarate_ostani_id,
'edarate_shahri_id' => $request->edarate_shahri_id,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'position' => $request->position,
'mobile' => $request->mobile,
'degree' => $request->degree,
'major' => $request->major,
'username' => $request->username,
'national_code' => $request->national_code,
'password' => Hash::make($request->password),
'province_id' => $request->province_id ?: null,
'city_id' => $request->city_id ?: null,
'edarate_ostani_id' => $request->edarate_ostani_id,
'edarate_shahri_id' => $request->edarate_shahri_id,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'position' => $request->position,
'mobile' => $request->mobile,
'degree' => $request->degree,
'major' => $request->major,
]);
$user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa;
$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') {
$temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa;
$user->edarate_ostani_id = $request->edarate_ostani_id;
$user->edarate_ostani_name = $temp;
if ($request->province_id == 0) {
$user->name = $temp .' '. $user->province_fa;
$user->name = $temp.' '.$user->province_fa;
} else {
$user->name = $temp .' استان '. $user->province_fa;
$user->name = $temp.' استان '.$user->province_fa;
}
} else {
$temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa;
@@ -179,18 +178,18 @@ class UserManagementController extends Controller
$user->edarate_shahri_name = $temp;
if ($request->province_id == 0) {
$user->name = $temp .' '. $user->province_fa;
$user->name = $temp.' '.$user->province_fa;
} else {
$user->name = $temp .' استان '. $user->province_fa;
$user->name = $temp.' استان '.$user->province_fa;
}
}
if (!is_null($request->password)) {
if (! is_null($request->password)) {
$user->password = Hash::make($request->password);
}
if (!is_null($request->permissions)) {
$user->syncPermissions(explode(",", $request->permissions));
if (! is_null($request->permissions)) {
$user->syncPermissions(explode(',', $request->permissions));
}
if ($request->filled('roles')) {
@@ -205,10 +204,11 @@ class UserManagementController extends Controller
public function destroy(User $user)
{
$user->delete();
return $this->successResponse();
}
public function givePermissionsTo(GivePermissionRequest $request,User $user): JsonResponse
public function givePermissionsTo(GivePermissionRequest $request, User $user): JsonResponse
{
$user->givePermissionTo($request->permissions);
@@ -223,6 +223,7 @@ class UserManagementController extends Controller
return $this->successResponse($role->load('permissions'));
}
public function giveRolesToUser(GiveRoleRequest $request, User $user): JsonResponse
{
$roles = $request->roles;
@@ -257,14 +258,15 @@ class UserManagementController extends Controller
{
$request->validate([
'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/',
'confirm' => 'required|in:0,1'
'confirm' => 'required|in:0,1',
]);
$user_ids = explode(",", $request->user_ids);
$user_ids = explode(',', $request->user_ids);
User::whereIn('id', $user_ids)->update([
'confirmed' => $request->confirm
'confirmed' => $request->confirm,
]);
return $this->successResponse();
}
@@ -276,14 +278,14 @@ class UserManagementController extends Controller
]);
$user->password = Hash::make($request->password);
$user->save();
return $this->successResponse();
}
public function getUserSummaryReport(Request $request, User $user)
{
$request->fromDate = $request->fromDate ? $request->fromDate . " 00:00:00" : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00');
$request->toDate = $request->toDate ? $request->toDate . " 23:59:59" : Carbon::now()->format('Y-m-d 23:59:59');
$request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00');
$request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59');
$data = [];
$ids_list = '';
@@ -300,7 +302,7 @@ class UserManagementController extends Controller
HOUR (created_at) AS hh,
user_id
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.')
) user_activity_distinct
GROUP BY yy,
mm,
@@ -308,7 +310,7 @@ class UserManagementController extends Controller
hh,
user_id
) user_activity_by_hour_and_
GROUP BY user_id) AS calculated_table;";
GROUP BY user_id) AS calculated_table;';
$temp_sql_for_activity_list = "
SELECT *,
@@ -318,29 +320,28 @@ class UserManagementController extends Controller
description,
log_unique_code
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.')
) user_activity_distinct
GROUP BY
log_unique_code
ORDER BY cnt desc";
ORDER BY cnt desc';
$number_of_active_days = "
SELECT COUNT(*) AS cnt
FROM (
SELECT mm,dd
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.')
GROUP BY
mm,dd
) active_days
ORDER BY cnt desc";
ORDER BY cnt desc';
$number_of_activities = "
SELECT COUNT(*) AS cnt
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.")
ORDER BY cnt desc";
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.')
ORDER BY cnt desc';
$number_of_active_days = (DB::select($number_of_active_days)[0]->cnt ? DB::select($number_of_active_days)[0]->cnt : -1);
$activity_time = DB::select($temp_sql_for_activity_time)[0]->activity;
@@ -349,20 +350,21 @@ class UserManagementController extends Controller
'number_of_active_days' => $number_of_active_days,
'activity_time' => $user->id ? $activity_time : null,
'average_activity_time' => round(($user->id ? $activity_time : 0) / $number_of_active_days, 2) ,
'number_of_activities' => $number_of_activities ,
'average_activity_number' => round(($user->id ? $number_of_activities : 0) / $number_of_active_days, 2) ,
'average_activity_time' => round(($user->id ? $activity_time : 0) / $number_of_active_days, 2),
'number_of_activities' => $number_of_activities,
'average_activity_number' => round(($user->id ? $number_of_activities : 0) / $number_of_active_days, 2),
'activity_list' => $user->id ? DB::select($temp_sql_for_activity_list) : null,
'last_login' => $user->last_login,
];
return $data;
}
public function printGroup(User $user, Request $request)
{
$request->fromDate = $request->fromDate ? $request->fromDate . " 00:00:00" : Carbon::now()->format('Y-m-d 00:00:00') ;
$request->toDate = $request->toDate ? $request->toDate . " 23:59:59" : Carbon::now()->format('Y-m-d 23:59:59');
$request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->format('Y-m-d 00:00:00');
$request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59');
$data = [];
@@ -370,21 +372,20 @@ class UserManagementController extends Controller
// $users = $role->users()->select("*")->get()->toArray();
// foreach ($user as $index => $item) {
$user_activity_quantity_temp[$user->id] = [
"majmoe" => 0,
"name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name." (".$user->username.")",
'majmoe' => 0,
'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.' ('.$user->username.')',
];
$user_activity_time_temp[$user->id] = [
"majmoe" => 0,
"name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name."(".$user->username.")",
'majmoe' => 0,
'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.'('.$user->username.')',
];
$user_activity_top_5_temp[$user->id] = [
"activity_list" => [],
"name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name."(".$user->username.")",
'activity_list' => [],
'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.'('.$user->username.')',
];
// if (!$index) {
$ids_list = $user->id;
// } else {
@@ -399,7 +400,7 @@ class UserManagementController extends Controller
COUNT(*) AS quantity
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
GROUP BY yy,
mm,
@@ -407,18 +408,18 @@ class UserManagementController extends Controller
hh,
user_id
) user_activity_by_hour_and_
GROUP BY user_id) AS calculated_table;";
GROUP BY user_id) AS calculated_table;';
$quantitative_activity_chart_sql = "
SELECT created_at,
COUNT(*) AS quantity
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
GROUP BY
yy,
mm,
dd ;";
dd ;';
$hourly_activity_chart_sql = "
SELECT
@@ -430,7 +431,7 @@ class UserManagementController extends Controller
hh,
COUNT(*) AS quantity
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
GROUP BY yy,
mm,
dd,
@@ -440,14 +441,13 @@ class UserManagementController extends Controller
GROUP BY
yy,
mm,
dd;";
dd;';
$total_activity_quantity_sql = "
SELECT COUNT(*) AS total_activity_quantity
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
";
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
';
$top_10_activity_list_sql = "
SELECT *,
@@ -457,13 +457,12 @@ class UserManagementController extends Controller
description,
log_unique_code
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
) user_activity_distinct
GROUP BY
log_unique_code
ORDER BY quantity desc
LIMIT 10";
LIMIT 10';
$user_activity_quantity_sql = "
SELECT *,
@@ -476,10 +475,10 @@ class UserManagementController extends Controller
user_name,
username
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
) user_activity_distinct
GROUP BY user_id
ORDER BY quantity desc";
ORDER BY quantity desc';
$active_user_count_sql = "
SELECT COUNT(*) AS active_user_count
@@ -487,9 +486,9 @@ class UserManagementController extends Controller
SELECT
user_id
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
GROUP BY user_id
) grpuped_by_user_id";
) grpuped_by_user_id';
$user_activity_time_sql = "
select
@@ -504,7 +503,7 @@ class UserManagementController extends Controller
user_id,
COUNT(*) AS quantity
FROM user_activity_logs
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.")
WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.')
GROUP BY yy,
mm,
dd,
@@ -512,19 +511,19 @@ class UserManagementController extends Controller
user_id
) user_activity_by_hour_and_
GROUP BY user_id
ORDER BY majmoe desc;";
ORDER BY majmoe desc;';
foreach (DB::select($user_activity_quantity_sql) as $key => $value) {
$user_activity_quantity_temp[$value->user_id] = [
"majmoe" => $value->quantity ?? 0,
"name" => $value->user_first_name ? $value->user_first_name." ".$value->user_last_name." (".$value->username.")" : $value->user_name." (".$value->username.")",
'majmoe' => $value->quantity ?? 0,
'name' => $value->user_first_name ? $value->user_first_name.' '.$value->user_last_name.' ('.$value->username.')' : $value->user_name.' ('.$value->username.')',
];
}
foreach (DB::select($user_activity_time_sql) as $key => $value) {
$user_activity_time_temp[$value->user_id] = [
"majmoe" => $value->majmoe ?? 0,
"name" => $value->user_first_name ? $value->user_first_name." ".$value->user_last_name." (".$value->username.")" : $value->user_name." (".$value->username.")",
'majmoe' => $value->majmoe ?? 0,
'name' => $value->user_first_name ? $value->user_first_name.' '.$value->user_last_name.' ('.$value->username.')' : $value->user_name.' ('.$value->username.')',
];
}
@@ -546,9 +545,9 @@ class UserManagementController extends Controller
$sum += (int) $item->quantity;
}
$user_activity_top_5_temp[$key] = [
"sum" => $sum,
"name" => $value['name'],
"activity_list" => $activity_list,
'sum' => $sum,
'name' => $value['name'],
'activity_list' => $activity_list,
];
}
arsort($user_activity_top_5_temp);
@@ -564,19 +563,21 @@ class UserManagementController extends Controller
'total_activity_time' => $ids_list ? DB::select($total_activity_time_sql)[0]->activity : null,
'top_10_activity_list' => $ids_list ? DB::select($top_10_activity_list_sql) : null,
'user_activity_quantity' => $ids_list ? $user_activity_quantity_temp : null,
'group_name' => $user->first_name." ".$user->last_name,
'average' => round(($ids_list ? DB::select($total_activity_time_sql)[0]->activity : 0) / 1, 2) ,
'group_name' => $user->first_name.' '.$user->last_name,
'average' => round(($ids_list ? DB::select($total_activity_time_sql)[0]->activity : 0) / 1, 2),
'user_activity_top_5_temp' => $user_activity_top_5_temp,
'total_user_count' => 1,
'active_user_count' => $ids_list ? DB::select($active_user_count_sql)[0]->active_user_count : null,
'group_id' => $user->id
'group_id' => $user->id,
];
return View('word.user-activity-individual', compact('data'));
}
public function userPermission($id)
{
$user = User::find($id);
return response()->json([
'message' => 'success',
'data' => $user->permissions,
@@ -588,29 +589,30 @@ class UserManagementController extends Controller
if (auth()->user()) {
auth()->user()->addActivityComplete(1042);
}
$permissions = explode(",", $request->permissions);
$permissions = explode(',', $request->permissions);
if (! $permissions == null) {
$user->syncPermissions($permissions);
}
return response()->json([
'message' => 'status',
'data' => User::where('id', $user->id)->with(['permissions'])->get()
'data' => User::where('id', $user->id)->with(['permissions'])->get(),
]);
}
public function changeUserEnabeld(User $user)
{
if (Auth::user()->checkUserHasPermission('full-user-management')) {
$user->enabled = !$user->enabled;
$user->enabled = ! $user->enabled;
return $this->successResponse($user);
} elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) {
$user->enabled = !$user->enabled;
$user->enabled = ! $user->enabled;
return $this->successResponse();
} else {
return response()->json([
'message' => 'Forbidden'
'message' => 'Forbidden',
], 403);
}
}