refactor the speed

This commit is contained in:
2025-03-08 10:28:11 +00:00
parent 4a4a29cfad
commit 03e2bcfdf9

View File

@@ -25,9 +25,9 @@ class NotificationController extends Controller
public function __invoke(Request $request): JsonResponse public function __invoke(Request $request): JsonResponse
{ {
return $this->successResponse([ return $this->successResponse([
'roadItemNotifications' => $this->roadItemNotifications(), 'roadItem' => $this->roadItemNotifications(),
'safetyAndPrivacyNotifications' => $this->safetyAndPrivacyNotifications(), 'safetyAndPrivacy' => $this->safetyAndPrivacyNotifications(),
'roadObservedNotifications' => $this->roadObservedNotifications(), 'roadObserved' => $this->roadObservedNotifications(),
]); ]);
} }
@@ -135,72 +135,61 @@ class NotificationController extends Controller
{ {
$user = auth()->user(); $user = auth()->user();
$road_observations = [ $road_observations = [
'total' => 0 'total' => 0,
'operation_cnt' => 0,
'complaint_cnt' => 0,
'supervise_cnt' => 0
];
$conditions = [];
$complaintConditions = [
['rms_status', '=', 0],
['edarate_shahri_id', '!=', null]
]; ];
if ($user->hasPermissionTo('show-fast-react')) { if ($user->hasPermissionTo('show-fast-react')) {
$road_observations['operation_cnt'] = RoadObserved::query() $conditions[] = ['status', '=', 2];
->where('status', '=', 2)
->count();
$road_observations['complaint_cnt'] = RoadObserved::query()
->where('rms_status', '=', 0)
->count();
$road_observations['total'] += ($road_observations['operation_cnt'] + $road_observations['complaint_cnt']);
} }
elseif ($user->hasPermissionTo('show-fast-react-province')) { elseif ($user->hasPermissionTo('show-fast-react-province')) {
throw_if(is_null($user->province_id) || !$user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$conditions = [
$road_observations['operation_cnt'] = RoadObserved::query() ['status', '=', 2],
->where('status', '=', 2) ['rms_province_id', '=', $user->province_id]
->where('rms_province_id', $user->province_id) ];
->count(); $complaintConditions[] = ['province_id', '=', $user->province_id];
$road_observations['complaint_cnt'] = RoadObserved::query()
->where('rms_status', '=', 0)
->count();
$road_observations['total'] += ($road_observations['operation_cnt'] + $road_observations['complaint_cnt']);
} }
elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) { elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) {
throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!'));
$conditions = [
$road_observations['operation_cnt'] = RoadObserved::query() ['status', '=', 2],
->where('status', '=', 2) ['edarate_shahri_id', '=', $user->edarate_shahri_id]
->where('edarate_shahri_id', '=', $user->edarate_shahri_id) ];
->count(); $complaintConditions[] = ['edarate_shahri_id', '=', $user->edarate_shahri_id];
$road_observations['complaint_cnt'] = RoadObserved::query()
->where('rms_status', '=', 0)
->count();
$road_observations['total'] += ($road_observations['operation_cnt'] + $road_observations['complaint_cnt']);
} }
if (!empty($conditions)) {
$road_observations['operation_cnt'] = RoadObserved::query()->where($conditions)->count();
$road_observations['complaint_cnt'] = RoadObserved::query()->where($complaintConditions)->count();
$road_observations['total'] += $road_observations['operation_cnt'] + $road_observations['complaint_cnt'];
}
$superviseConditions = [
['status', '=', 0]
];
if ($user->hasPermissionTo('supervise-fast-react')) { if ($user->hasPermissionTo('supervise-fast-react')) {
$road_observations['supervise_cnt'] = RoadObserved::query() $road_observations['supervise_cnt'] = RoadObserved::query()->where($superviseConditions)->count();
->where('status', '=', 0) $road_observations['complaint_cnt'] = RoadObserved::query()->where($complaintConditions)->count();
->count(); $road_observations['total'] += $road_observations['supervise_cnt'] + $road_observations['complaint_cnt'];
$road_observations['complaint_cnt'] = RoadObserved::query()
->where('rms_status', '=', 0)
->count();
$road_observations['total'] += ($road_observations['supervise_cnt'] + $road_observations['complaint_cnt']);
} }
elseif ($user->hasPermissionTo('supervise-fast-react-province')) { elseif ($user->hasPermissionTo('supervise-fast-react-province')) {
throw_if(is_null($user->province_id) || !$user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!'));
$superviseConditions[] = ['province_id', '=', $user->province_id];
$complaintConditions[] = ['province_id', '=', $user->province_id];
$road_observations['supervise_cnt'] = RoadObserved::query() $road_observations['supervise_cnt'] = RoadObserved::query()->where($superviseConditions)->count();
->where('province_id', '=', $user->province_id) $road_observations['complaint_cnt'] = RoadObserved::query()->where($complaintConditions)->count();
->where('status', '=', 0) $road_observations['total'] += $road_observations['supervise_cnt'] + $road_observations['complaint_cnt'];
->count();
$road_observations['complaint_cnt'] = RoadObserved::query()
->where('rms_status', '=', 0)
->count();
$road_observations['total'] += ($road_observations['supervise_cnt'] + $road_observations['complaint_cnt']);
} }
return $road_observations; return $road_observations;