From 7591f0cb5e78c1ec5341e32868d4769ab9225191 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 28 Jun 2025 13:35:42 +0330 Subject: [PATCH 1/4] change migration --- ...2025_06_15_122716_add_mission_id_to_road_patrols_table.php | 4 ++-- .../2025_06_16_092407_add_column_to_road_items_projects.php | 1 + routes/v3.php | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php b/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php index ab5a63bf..91f51477 100644 --- a/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php +++ b/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php @@ -12,8 +12,8 @@ return new class extends Migration public function up(): void { Schema::table('road_patrols', function (Blueprint $table) { - $table->foreignId('mission_id')->constrained('missions'); - }); + $table->foreignId('mission_id')->nullable()->constrained('missions'); + }); } /** diff --git a/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php b/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php index 71d062d1..f7c75f19 100644 --- a/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php +++ b/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php @@ -22,6 +22,7 @@ return new class extends Migration public function down(): void { Schema::table('road_items_projects', function (Blueprint $table) { + $table->dropForeign(['mission_id']); $table->dropColumn('mission_id'); }); } diff --git a/routes/v3.php b/routes/v3.php index 7f1ffa3e..96b8972c 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -453,6 +453,7 @@ Route::prefix('missions') }); Route::name('transportationUnit.') ->prefix('transportation_unit') + ->middleware('permission:manage-transportation-unit') ->controller(TransportationUnitController::class) ->group(function () { Route::get('/', 'index')->name('index'); @@ -461,6 +462,7 @@ Route::prefix('missions') }); Route::name('controlUnit.') ->prefix('control_unit') + ->middleware('permission:manage-control-unit') ->controller(ControlUnitController::class) ->group(function () { Route::get('/', 'index')->name('index'); From 10ae150e57a9c4ef5aeb8ffbd4636e1d1e4f66c6 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 29 Jun 2025 09:08:59 +0330 Subject: [PATCH 2/4] change migration name --- .../V3/Dashboard/Mission/ControlUnitController.php | 4 ++-- .../2025_05_18_093843_create_mission_histories_table.php | 2 +- ...php => 2025_06_24_114516_add_column_to_missions_table.php} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename database/migrations/{2025_06_24_114516_add_start-and-finish-time_to_missions_table.php => 2025_06_24_114516_add_column_to_missions_table.php} (100%) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index 32d3f9ea..5b44888a 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -28,13 +28,13 @@ class ControlUnitController extends Controller 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, 'previous_state_name' => $mission->state_name, - 'start_time' => now() ]); $state = MissionStates::START_MISSION->value; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), + 'start_time' => now() ]); }); @@ -48,13 +48,13 @@ class ControlUnitController extends Controller 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, 'previous_state_name' => $mission->state_name, - 'finish_time' => now() ]); $state = MissionStates::END_MISSION->value; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), + 'finish_time' => now() ]); }); diff --git a/database/migrations/2025_05_18_093843_create_mission_histories_table.php b/database/migrations/2025_05_18_093843_create_mission_histories_table.php index d3a79188..1333cc72 100644 --- a/database/migrations/2025_05_18_093843_create_mission_histories_table.php +++ b/database/migrations/2025_05_18_093843_create_mission_histories_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('mission_histories', function (Blueprint $table) { $table->id(); - $table->foreignId('mission_id')->constrained('missions'); + $table->foreignId('mission_id')->constrained('missions')->cascadeOnDelete(); $table->unsignedInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->foreignId('previous_state_id')->constrained('mission_states'); diff --git a/database/migrations/2025_06_24_114516_add_start-and-finish-time_to_missions_table.php b/database/migrations/2025_06_24_114516_add_column_to_missions_table.php similarity index 100% rename from database/migrations/2025_06_24_114516_add_start-and-finish-time_to_missions_table.php rename to database/migrations/2025_06_24_114516_add_column_to_missions_table.php From a1f5752bb2a739df628874436e371105781ef9fc Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 29 Jun 2025 14:34:49 +0330 Subject: [PATCH 3/4] use morph many for mission --- .../Dashboard/RoadItem/OperatorController.php | 4 +-- ...6_add_mission_id_to_road_patrols_table.php | 29 ------------------- ...2407_add_column_to_road_items_projects.php | 29 ------------------- routes/v3.php | 2 +- 4 files changed, 3 insertions(+), 61 deletions(-) delete mode 100644 database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php delete mode 100644 database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php index 067f2fd3..bafd0f88 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php @@ -73,7 +73,6 @@ class OperatorController extends Controller $user = auth()->user(); $road_item = RoadItemsProject::query()->create([ 'user_id' => $user->id, - 'mission_id' => $request->mission_id, 'start_lat' => $start_coordinates[0], 'start_lng' => $start_coordinates[1], 'end_lat' => $end_coordinates ? $end_coordinates[0] : null, @@ -123,6 +122,7 @@ class OperatorController extends Controller $road_item->rahdaran()->attach($request->rahdaran_id); $road_item->cmmsMachines()->attach($request->machines_id); + $road_item->missions()->attach($request->mission_id); $user->addActivityComplete(1154); }); @@ -179,7 +179,6 @@ class OperatorController extends Controller DB::transaction(function () use ($roadItemsProject, $start_coordinates, $end_coordinates, $request) { $roadItemsProject->update([ - 'mission_id' => $request->mission_id, 'start_lat' => $start_coordinates[0], 'start_lng' => $start_coordinates[1], 'end_lat' => $end_coordinates ? $end_coordinates[0] : null, @@ -191,6 +190,7 @@ class OperatorController extends Controller $roadItemsProject->rahdaran()->sync($request->rahdaran_id); $roadItemsProject->cmmsMachines()->sync($request->machines_id); + $roadItemsProject->missions()->sync($request->mission_id); auth()->user()->addActivityComplete(1155); diff --git a/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php b/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php deleted file mode 100644 index 91f51477..00000000 --- a/database/migrations/2025_06_15_122716_add_mission_id_to_road_patrols_table.php +++ /dev/null @@ -1,29 +0,0 @@ -foreignId('mission_id')->nullable()->constrained('missions'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('road_patrols', function (Blueprint $table) { - $table->dropForeign(['mission_id']); - $table->dropColumn('mission_id'); - }); - } -}; diff --git a/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php b/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php deleted file mode 100644 index f7c75f19..00000000 --- a/database/migrations/2025_06_16_092407_add_column_to_road_items_projects.php +++ /dev/null @@ -1,29 +0,0 @@ -foreignId('mission_id')->nullable()->constrained('missions'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('road_items_projects', function (Blueprint $table) { - $table->dropForeign(['mission_id']); - $table->dropColumn('mission_id'); - }); - } -}; diff --git a/routes/v3.php b/routes/v3.php index 96b8972c..32c076b0 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -195,7 +195,7 @@ Route::prefix('road_item_reports') Route::get('/activities_on_map', 'activitiesOnMap')->name('activitiesOnMap'); Route::get('/show_on_map/{roadItemsProject}', 'showOnMap')->name('showOnMap'); }); -Route::prefix('road_patrol') +Route::prefix('road_patrols') ->group(function () { Route::prefix('details') ->name('details.') From e48b25ab58fa1d829c5c547173719b880004ebe0 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 1 Jul 2025 10:57:10 +0330 Subject: [PATCH 4/4] change report api route --- routes/v3.php | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/routes/v3.php b/routes/v3.php index 32c076b0..2216d133 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -143,10 +143,24 @@ Route::prefix('road_items') Route::get('/rahdaran/{roadItemsProject}', 'rahdaran')->name('rahdaran'); Route::get('/files/{roadItemsProject}', 'files')->name('files'); }); + Route::prefix('reports') + ->name('reports.') + ->controller(\App\Http\Controllers\V3\Dashboard\RoadItem\ReportController::class) + ->group(function () { + Route::get('/get_sub_items', 'getSubItems')->name('getSubItems'); + Route::get('/country_activity_per_sub_item', 'countryActivityPerSubItem')->name('countryActivityPerSubItem'); + Route::get('/province_activity_per_sub_item', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem'); + Route::get('/country_activity_per_item', 'countryActivityPerItem')->name('countryActivityPerItem'); + Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem'); + Route::get('/country_activity_excel_per_item', 'countryActivityExcelPerItem')->name('countryActivityExcelPerItem'); + Route::get('/province_activity_excel_per_item', 'provinceActivityExcelPerItem')->name('provinceActivityExcelPerItem'); + Route::get('/country_activity_excel_per_sub_item', 'countryActivityExcelPerSubItem')->name('countryActivityExcelPerSubItem'); + Route::get('/province_activity_excel_per_sub_item', 'provinceActivityExcelPerSubItem')->name('provinceActivityExcelPerSubItem'); + Route::get('/activities_on_map', 'activitiesOnMap')->name('activitiesOnMap'); + Route::get('/show_on_map/{roadItemsProject}', 'showOnMap')->name('showOnMap'); + }); }); - - Route::prefix('cmms_machines') ->name('cmms_machines.') ->controller(CMMSMachinesController::class) @@ -179,22 +193,6 @@ Route::prefix('observed_items') Route::get('/{observedItem}', 'show')->name('show'); }); -Route::prefix('road_item_reports') - ->name('roadItemReports.') - ->controller(\App\Http\Controllers\V3\Dashboard\RoadItem\ReportController::class) - ->group(function () { - Route::get('/get_sub_items', 'getSubItems')->name('getSubItems'); - Route::get('/country_activity_per_sub_item', 'countryActivityPerSubItem')->name('countryActivityPerSubItem'); - Route::get('/province_activity_per_sub_item', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem'); - Route::get('/country_activity_per_item', 'countryActivityPerItem')->name('countryActivityPerItem'); - Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem'); - Route::get('/country_activity_excel_per_item', 'countryActivityExcelPerItem')->name('countryActivityExcelPerItem'); - Route::get('/province_activity_excel_per_item', 'provinceActivityExcelPerItem')->name('provinceActivityExcelPerItem'); - Route::get('/country_activity_excel_per_sub_item', 'countryActivityExcelPerSubItem')->name('countryActivityExcelPerSubItem'); - Route::get('/province_activity_excel_per_sub_item', 'provinceActivityExcelPerSubItem')->name('provinceActivityExcelPerSubItem'); - Route::get('/activities_on_map', 'activitiesOnMap')->name('activitiesOnMap'); - Route::get('/show_on_map/{roadItemsProject}', 'showOnMap')->name('showOnMap'); - }); Route::prefix('road_patrols') ->group(function () { Route::prefix('details')