From 7a981ee421d5fc4a6921d823065720910d73b851 Mon Sep 17 00:00:00 2001 From: faezeh Date: Sun, 28 Jun 2026 15:39:38 +0330 Subject: [PATCH] creat new column for CmmsMachines and improve notification for mission and valdation for formrequest --- .../Controllers/V3/NotificationController.php | 61 +++++++++++++++++-- .../V3/Mission/ControlUnit/FinishRequest.php | 25 +++----- ...stance_mission_to__cmms_machines_table.php | 28 +++++++++ routes/v3.php | 2 +- 4 files changed, 91 insertions(+), 25 deletions(-) create mode 100644 database/migrations/2026_06_28_094747_add_distance_mission_to__cmms_machines_table.php diff --git a/app/Http/Controllers/V3/NotificationController.php b/app/Http/Controllers/V3/NotificationController.php index cf00a3d9..dbbfec25 100644 --- a/app/Http/Controllers/V3/NotificationController.php +++ b/app/Http/Controllers/V3/NotificationController.php @@ -197,18 +197,67 @@ class NotificationController extends Controller 'control' => 0, ]; - if ($user->hasPermissionTo('manage-transportation-unit')) { + if ($user->hasPermissionTo('manage-transportation-unit-station')) { $missions['transportation'] = Mission::query()->where([ ['state_id', '=', MissionStates::REQUEST_CREATED->value], - ['edare_shahri_id', '=', $user->edarate_shahri_id], + ['station_id', '=', $user->station_id], ])->count(); } - if ($user->hasPermissionTo('manage-control-unit')) { - $missions['control'] = Mission::query()->where([ - ['state_id', '=', MissionStates::PENDING_CONFIRMATION->value], - ['edare_shahri_id', '=', $user->edarate_shahri_id], + if ($user->hasPermissionTo('manage-transportation-unit-country')) { + $missions['transportation'] = Mission::query()->where([ + ['state_id', '=', MissionStates::REQUEST_CREATED->value], ])->count(); } + if ($user->hasPermissionTo('manage-transportation-unit-province')) { + $missions['transportation'] = Mission::query()->where([ + ['state_id', '=', MissionStates::REQUEST_CREATED->value], + ['province_id', '=', $user->province_id], + + ])->count(); + } + if ($user->hasPermissionTo('manage-transportation-unit-city')) { + $missions['transportation'] = Mission::query()->where([ + ['state_id', '=', MissionStates::REQUEST_CREATED->value], + ['city_id', '=', $user->city_id], + + ])->count(); + } + + + if ($user->hasPermissionTo('manage-control-unit-station')) { + $missions['control'] = Mission::query() + ->whereIn('state_id', [ + MissionStates::PENDING_CONFIRMATION->value, + MissionStates::START_MISSION->value, + ]) + ->where('station_id', $user->station_id) + ->count(); + } + if ($user->hasPermissionTo('manage-control-unit-country')) { + $missions['control'] = Mission::query() + ->whereIn('state_id', [ + MissionStates::PENDING_CONFIRMATION->value, + MissionStates::START_MISSION->value, + ])->count(); + } + if ($user->hasPermissionTo('manage-control-unit-province')) { + $missions['control'] = Mission::query() + ->whereIn('state_id', [ + MissionStates::PENDING_CONFIRMATION->value, + MissionStates::START_MISSION->value, + ]) + ->where('province_id', '=', $user->province_id) + ->count(); + } + if ($user->hasPermissionTo('manage-control-unit-city')) { + $missions['control'] = Mission::query() + ->whereIn('state_id', [ + MissionStates::PENDING_CONFIRMATION->value, + MissionStates::START_MISSION->value, + ]) + ->where('city_id', '=', $user->city_id + )->count(); + } $missions['total'] = $missions['request_portal'] + $missions['transportation'] + $missions['control']; diff --git a/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php b/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php index 9d9890e8..29764451 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php +++ b/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php @@ -15,7 +15,7 @@ class FinishRequest extends FormRequest */ public function authorize(): bool { - return $this->mission->state_id == MissionStates::START_MISSION->value; + return $this->mission->state_id === MissionStates::START_MISSION->value; } /** @@ -55,23 +55,12 @@ class FinishRequest extends FormRequest $distance = $this->end_km - $mission->km; - if ($machine->car_group === 'سنگین') { - - if ($distance > 15) { - $validator->errors()->add( - 'end_km', - 'اختلاف کیلومتر برای خودروهای سنگین باید کمتر از 15 باشد.' - ); - } - - } else { - - if ($distance > 1000) { - $validator->errors()->add( - 'end_km', - 'اختلاف کیلومتر برای خودروهای سبک و نیمه سنگین باید کمتر از 1000 باشد.' - ); - } + if ($distance > $machine->distance_mission) + { + $validator->errors()->add( + 'end_km', + 'کیلومتر /ساعت کار از حد نصاب بیشتر هست.' + ); } } ]; diff --git a/database/migrations/2026_06_28_094747_add_distance_mission_to__cmms_machines_table.php b/database/migrations/2026_06_28_094747_add_distance_mission_to__cmms_machines_table.php new file mode 100644 index 00000000..a0a88cf0 --- /dev/null +++ b/database/migrations/2026_06_28_094747_add_distance_mission_to__cmms_machines_table.php @@ -0,0 +1,28 @@ +integer('distance_mission')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cmms_machines', function (Blueprint $table) { + $table->dropColumn('distance_mission'); + }); + } +}; diff --git a/routes/v3.php b/routes/v3.php index d05afc2f..5b8bcb45 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -576,7 +576,7 @@ Route::prefix('missions') Route::get('/machine_details_report/{machine_id}', 'machineDetailsReport')->name('machineDetailsReport'); Route::get('/machine_details_report_excel/{machine_id}', 'machineDetailsReportExcel')->name('machineDetailsReportExcel'); Route::get('/machine_type_details_report/{car_type}', 'machineTypeDetailsReport')->name('machineTypeDetailsReport'); - Route::get('/machine_type_details_report_excel/{car_type}', 'Excel')->name('machineTypeDetailsReportExcel'); + Route::get('/machine_type_details_report_excel/{car_type}', 'machineTypeDetailsReportExcel')->name('machineTypeDetailsReportExcel'); Route::get('/machine_driver_details_report/{driver_id}', 'machineDriverDetailsReport')->name('machineDriverDetailsReport'); Route::get('/machine_driver_details_report_excel/{driver_id}', 'machineDriverDetailsReportExcel')->name('machineDriverDetailsReportExcel'); });