From 5c2901f33a19f4ba60219ce8ef5842acef63088b Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 19 May 2025 15:25:40 +0330 Subject: [PATCH 1/5] add mission states to seeder --- .../2025_05_17_103927_create_missions_table.php | 9 ++++++--- ...25_05_18_093843_create_mission_histories_table.php | 3 ++- database/seeders/MissionStateSeeder.php | 11 ++++++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/database/migrations/2025_05_17_103927_create_missions_table.php b/database/migrations/2025_05_17_103927_create_missions_table.php index 3d68f8dc..64b8a5c4 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -13,15 +13,18 @@ return new class extends Migration { Schema::create('missions', function (Blueprint $table) { $table->id(); - $table->foreignId('user_id')->constrained('users')->cascadeOnDelete(); + $table->unsignedInteger('user_id'); + $table->foreign('user_id')->references('id')->on('users'); $table->string('username'); $table->foreignId('machine_id')->nullable()->constrained('cmms_machines')->noActionOnDelete(); $table->foreignId('rahdar_id')->constrained('rahdaran')->noActionOnDelete(); $table->foreignId('state_id')->constrained('mission_states')->noActionOnDelete(); $table->string('state_name'); - $table->foreignId('province_id')->nullable()->constrained('provinces')->noActionOnDelete(); + $table->unsignedTinyInteger('province_id')->nullable(); + $table->foreign('province_id')->references('id')->on('provinces')->noActionOnDelete(); $table->string('province_name'); - $table->foreignId('edare_shahri_id')->nullable()->constrained('edarate_shahri')->noActionOnDelete(); + $table->unsignedBigInteger('edare_shahri_id')->nullable(); + $table->foreign('edare_shahri_id')->references('id')->on('edarate_shahri')->noActionOnDelete(); $table->string('edare_shahri_name'); $table->string('requested_machine_type'); $table->integer('requested_machine_numbers'); 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 bf084d14..d3a79188 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 @@ -14,7 +14,8 @@ return new class extends Migration Schema::create('mission_histories', function (Blueprint $table) { $table->id(); $table->foreignId('mission_id')->constrained('missions'); - $table->foreignId('user_id')->constrained('users'); + $table->unsignedInteger('user_id'); + $table->foreign('user_id')->references('id')->on('users'); $table->foreignId('previous_state_id')->constrained('mission_states'); $table->string('previous_state_name'); $table->text('user_description')->nullable(); diff --git a/database/seeders/MissionStateSeeder.php b/database/seeders/MissionStateSeeder.php index 588930c0..585139e5 100644 --- a/database/seeders/MissionStateSeeder.php +++ b/database/seeders/MissionStateSeeder.php @@ -4,6 +4,7 @@ namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\DB; class MissionStateSeeder extends Seeder { @@ -12,6 +13,14 @@ class MissionStateSeeder extends Seeder */ public function run(): void { - // + DB::table('mission_states')->insert([ + ['name' => 'درخواست ایجاد شد و در حال بررسی در توسط واحد نقلیه است'], + ['name' => 'خودرو اختصاص داده شد و درخواست توسط واحد کنترل در حال بررسی است'], + ['name' => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود'], + ['name' => 'اتمام ماموریت'], + ['name' => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر'], + ['name' => 'عدم تایید توسط واحد کنترل'], + ['name' => 'ماموریت لغو شد'], + ]); } } From 057ed49fd1433314bf59ecc0fe70b836d0b82ade Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 20 May 2025 09:50:10 +0330 Subject: [PATCH 2/5] add transportation routes --- app/Enums/MissionStates.php | 6 ++-- .../Mission/RequestPortalController.php | 20 +++++++------ .../Mission/TransportationUnitController.php | 4 ++- .../V3/Mission/RequestPortal/StoreRequest.php | 3 +- .../Mission/RequestPortal/UpdateRequest.php | 6 ++-- .../TransportaionUnit/AllocateRequest.php | 3 +- .../TransportaionUnit/DeallocateRequest.php | 29 +++++++++++++++++++ .../Mission/RequestPortalService.php | 14 ++++++--- .../Mission/TransportationUnitService.php | 4 +-- ...025_05_17_103927_create_missions_table.php | 6 +--- database/seeders/AxisTypeSeeder.php | 9 +++++- database/seeders/MissionStateSeeder.php | 1 - routes/v3.php | 25 ++++++++++++---- 13 files changed, 91 insertions(+), 39 deletions(-) create mode 100644 app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php diff --git a/app/Enums/MissionStates.php b/app/Enums/MissionStates.php index 5be6b18a..77dfaeaf 100644 --- a/app/Enums/MissionStates.php +++ b/app/Enums/MissionStates.php @@ -9,8 +9,7 @@ enum MissionStates: int case START_MISSION = 3; case END_MISSION = 4; case REJECT_BY_TRANSPORTATION = 5; - case REJECT_BY_CONTROL_UNIT = 6; - case CANCELLED = 7; + case CANCELLED = 6; public static function name(int $state): string { @@ -20,8 +19,7 @@ enum MissionStates: int 3 => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود', 4 => 'اتمام ماموریت', 5 => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر', - 6 => 'عدم تایید توسط واحد کنترل', - 7 => 'ماموریت لغو شد', + 6 => 'ماموریت لغو شد', ]; return $mapArray[$state]; diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 39fb5f36..df45df4c 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -25,19 +25,23 @@ class RequestPortalController extends Controller public function store(StoreRequest $request): JsonResponse { DB::transaction(function () use ($request) { + $user = auth()->user(); $state = MissionStates::REQUEST_CREATED->value; $mission = Mission::query()->create([ - 'user_id'=> auth()->user()->id, + 'user_id'=> $user->id, + 'username'=> $user->username, + 'province_id'=> $user->province_id, + 'province_name'=> $user->province_fa, + 'edare_shahri_id'=> $user->edare_shahri_id ?? null, + 'edare_shahri_name'=> $user->edare_shahri_name ?? null, 'state_id' =>$state, 'state_name' => MissionStates::name($state), - 'requested_machine_type' => $request->requested_machine_type, - 'requested_machine_numbers' => $request->requested_machine_numbers, + 'requested_machines' => $request->requested_machines, 'type' => $request->type, 'start_date' => $request->start_date, 'end_date' => $request->end_date, - 'request_date' => $request->request_date, + 'request_date' => now(), 'description' => $request->description, - 'start_point' => $request->start_point, 'end_point' => $request->end_point, ]); @@ -59,16 +63,14 @@ class RequestPortalController extends Controller $mission->update([ 'state_id' =>$state, 'state_name' => MissionStates::name($state), - 'requested_machine_type' => $request->requested_machine_type, - 'requested_machine_numbers' => $request->requested_machine_numbers, + 'requested_machines' => $request->requested_machines, 'type' => $request->type, 'start_date' => $request->start_date, 'end_date' => $request->end_date, 'request_date' => $request->request_date, 'description' => $request->description, - 'start_point' => $request->start_point, 'end_point' => $request->end_point, - ]); + ]); $mission->rahdaran()->sync($request->rahdaran); }); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php index 1262df58..7099551a 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; use App\Enums\MissionStates; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest; +use App\Http\Requests\V3\Mission\TransportaionUnit\DeallocateRequest; use App\Http\Traits\ApiResponse; use App\Models\Mission; use App\Services\Cartables\Mission\TransportationUnitService; @@ -33,13 +34,14 @@ class TransportationUnitController extends Controller return $this->successResponse(); } - public function deallocate(Mission $mission): JsonResponse + public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse { $state = MissionStates::REJECT_BY_TRANSPORTATION->value; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), + 'description' => $request->description ]); return $this->successResponse(); diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 62bd1984..deb92e6f 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -24,8 +24,7 @@ class StoreRequest extends FormRequest return [ 'rahdaran' => 'required|array', 'rahdaran.*' => 'exists:rahdaran,id', - 'requested_machine_type' => 'required|string|max:255', - 'requested_machine_numbers'=> 'required|integer|max:255', + 'requested_machines' => 'required|array', 'type' => 'required|string|max:50', 'start_date' => 'required|date', 'end_date' => 'required|date', diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index 4498ea7b..8da9a782 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Mission\RequestPortal; +use App\Enums\MissionStates; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -11,7 +12,7 @@ class UpdateRequest extends FormRequest */ public function authorize(): bool { - return ($this->route('mission'))->user_id === auth()->id(); + return $this->mission->user_id === auth()->user()->id && $this->mission->state_id == MissionStates::REJECT_BY_TRANSPORTATION->value; } /** @@ -24,8 +25,7 @@ class UpdateRequest extends FormRequest return [ 'rahdaran' => 'required|array', 'rahdaran.*' => 'exists:rahdaran,id', - 'requested_machine_type' => 'required|string|max:255', - 'requested_machine_numbers'=> 'required|integer|max:255', + 'requested_machines' => 'required|array', 'type' => 'required|string|max:50', 'start_date' => 'required|date', 'end_date' => 'required|date', diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php index bac0e6bd..5cff54a5 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Mission\TransportaionUnit; +use App\Enums\MissionStates; use Illuminate\Foundation\Http\FormRequest; class AllocateRequest extends FormRequest @@ -11,7 +12,7 @@ class AllocateRequest extends FormRequest */ public function authorize(): bool { - return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id; + return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id && $this->mission->state_id == MissionStates::REQUEST_CREATED->value; } /** diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php new file mode 100644 index 00000000..28074809 --- /dev/null +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php @@ -0,0 +1,29 @@ +mission->edare_shahri_id == auth()->user()->edarate_shahri_id && $this->mission->state_id == MissionStates::REQUEST_CREATED->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'description' => 'string', + ]; + } +} diff --git a/app/Services/Cartables/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php index c1757019..daac3cdd 100644 --- a/app/Services/Cartables/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -15,20 +15,26 @@ class RequestPortalService public function datatable(Request $request) { $user = auth()->user(); + $fields = [ + 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', + 'description', 'requested_machines', 'type', 'start_date', + 'end_date', 'request_date', 'start_point', 'end_point', + ]; $query = Mission::query(); - if ($user->hasPermissionTo('mission-manage-city')) { + if ($user->hasPermissionTo('manage-request-portal-city')) { $query->where('edarate_shahri_id', '=', $user->edarate_shahri_id); } - elseif ($user->hasPermissionTo('mission-manage-province')) { + elseif ($user->hasPermissionTo('manage-request-portal-province')) { $query->where('province_id', '=', $user->province_id); } + return DataTableFacade::run( $query, $request, allowedFilters: ['*'], - allowedSortings: ['*'] + allowedSortings: ['*'], + allowedSelects: $fields ); - } } \ No newline at end of file diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php index d4535cad..a8059658 100644 --- a/app/Services/Cartables/Mission/TransportationUnitService.php +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -14,8 +14,8 @@ class TransportationUnitService { $fields = [ 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', - 'description', 'requested_machine_type', 'requested_machine_numbers', 'type', - 'start_date', 'end_date', 'request_date', 'start_point', 'end_point', + 'description', 'requested_machines', 'type', 'start_date', + 'end_date', 'request_date', 'start_point', 'end_point', ]; $query = Mission::query() diff --git a/database/migrations/2025_05_17_103927_create_missions_table.php b/database/migrations/2025_05_17_103927_create_missions_table.php index 64b8a5c4..6f80171c 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -16,8 +16,6 @@ return new class extends Migration $table->unsignedInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->string('username'); - $table->foreignId('machine_id')->nullable()->constrained('cmms_machines')->noActionOnDelete(); - $table->foreignId('rahdar_id')->constrained('rahdaran')->noActionOnDelete(); $table->foreignId('state_id')->constrained('mission_states')->noActionOnDelete(); $table->string('state_name'); $table->unsignedTinyInteger('province_id')->nullable(); @@ -26,14 +24,12 @@ return new class extends Migration $table->unsignedBigInteger('edare_shahri_id')->nullable(); $table->foreign('edare_shahri_id')->references('id')->on('edarate_shahri')->noActionOnDelete(); $table->string('edare_shahri_name'); - $table->string('requested_machine_type'); - $table->integer('requested_machine_numbers'); + $table->json('requested_machines'); $table->string('type'); $table->dateTime('start_date'); $table->dateTime('end_date'); $table->dateTime('request_date'); $table->text('description')->nullable(); - $table->string('start_point'); $table->string('end_point'); $table->timestamps(); }); diff --git a/database/seeders/AxisTypeSeeder.php b/database/seeders/AxisTypeSeeder.php index f8ae72bc..ea36f145 100644 --- a/database/seeders/AxisTypeSeeder.php +++ b/database/seeders/AxisTypeSeeder.php @@ -4,6 +4,7 @@ namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\DB; class AxisTypeSeeder extends Seeder { @@ -12,6 +13,12 @@ class AxisTypeSeeder extends Seeder */ public function run(): void { - // + DB::table('axis_types')->insert([ + ['name' => 'آزادراه'], + ['name' => 'بزرگراه'], + ['name' => 'اصلی'], + ['name' => 'فرعی'], + ['name' => 'روستایی'], + ]); } } diff --git a/database/seeders/MissionStateSeeder.php b/database/seeders/MissionStateSeeder.php index 585139e5..a73b3df9 100644 --- a/database/seeders/MissionStateSeeder.php +++ b/database/seeders/MissionStateSeeder.php @@ -19,7 +19,6 @@ class MissionStateSeeder extends Seeder ['name' => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود'], ['name' => 'اتمام ماموریت'], ['name' => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر'], - ['name' => 'عدم تایید توسط واحد کنترل'], ['name' => 'ماموریت لغو شد'], ]); } diff --git a/routes/v3.php b/routes/v3.php index ac3f0b46..e8b552bb 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -8,6 +8,7 @@ use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController; use App\Http\Controllers\V3\Dashboard\ItemsManagementController; use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; +use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\AccidentReceiptController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; @@ -425,13 +426,25 @@ Route::prefix('road_maintenance_station') Route::post('/{rahdariPoint}', 'update')->name('update')->middleware('permission:edit-tollhouse|edit-tollhouse-province'); Route::delete('/{rahdariPoint}', 'destroy')->name('destroy')->middleware('permission:delete-tollhouse|delete-tollhouse-province'); }); + Route::prefix('missions') ->name('missions.') - ->controller(RequestPortalController::class) ->group(function () { - Route::get('/', 'index')->name('index'); - Route::post('/', 'store')->name('store'); - Route::get('/{mission}', 'show')->name('show'); - Route::post('/{mission}', 'update')->name('update'); - Route::delete('/{mission}', 'destroy')->name('destroy'); + Route::name('requestPortal.') + ->middleware('permission:manage-request-portal-city|manage-request-portal-province|manage-request-portal-country') + ->controller(RequestPortalController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{mission}', 'show')->name('show'); + Route::post('/{mission}', 'update')->name('update'); + Route::delete('/{mission}', 'destroy')->name('destroy'); + }); + Route::name('transportationUnit.') + ->controller(TransportationUnitController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::post('/allocate/{mission}', 'allocate')->name('allocate'); + Route::post('/deallocate/{mission}', 'deallocate')->name('deallocate'); + }); }); From 5f8c833c83364fc5ec137f0dab4b1f3dccfdee03 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 20 May 2025 09:55:04 +0330 Subject: [PATCH 3/5] remove start point --- app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php | 1 - app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php | 1 - 2 files changed, 2 deletions(-) diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index deb92e6f..d4927d28 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -30,7 +30,6 @@ class StoreRequest extends FormRequest 'end_date' => 'required|date', 'request_date' => 'required|date', 'description' => 'string', - 'start_point' => 'required|string', 'end_point' => 'required|string', ]; } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index 8da9a782..be6eaee5 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -31,7 +31,6 @@ class UpdateRequest extends FormRequest 'end_date' => 'required|date', 'request_date' => 'required|date', 'description' => 'string', - 'start_point' => 'required|string', 'end_point' => 'required|string', ]; } From 6c7a969d34576b237c8217ca58ec459dddb83406 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 20 May 2025 10:17:10 +0330 Subject: [PATCH 4/5] remove start point from services --- .../V3/Dashboard/Mission/RequestPortalController.php | 2 +- app/Services/Cartables/Mission/RequestPortalService.php | 4 ++-- app/Services/Cartables/Mission/TransportationUnitService.php | 2 +- routes/v3.php | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index df45df4c..f93419ae 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -19,7 +19,7 @@ class RequestPortalController extends Controller public function index(Request $request, RequestPortalService $requestPortalService): JsonResponse { - return response()->json($requestPortalService->datatable($request)); + return response()->json($requestPortalService->datatable($request)); } public function store(StoreRequest $request): JsonResponse diff --git a/app/Services/Cartables/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php index daac3cdd..01d7cf76 100644 --- a/app/Services/Cartables/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -18,12 +18,12 @@ class RequestPortalService $fields = [ 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'start_date', - 'end_date', 'request_date', 'start_point', 'end_point', + 'end_date', 'request_date', 'end_point', ]; $query = Mission::query(); if ($user->hasPermissionTo('manage-request-portal-city')) { - $query->where('edarate_shahri_id', '=', $user->edarate_shahri_id); + $query->where('edare_shahri_id', '=', $user->edarate_shahri_id); } elseif ($user->hasPermissionTo('manage-request-portal-province')) { $query->where('province_id', '=', $user->province_id); diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php index a8059658..3462e2b2 100644 --- a/app/Services/Cartables/Mission/TransportationUnitService.php +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -15,7 +15,7 @@ class TransportationUnitService $fields = [ 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'start_date', - 'end_date', 'request_date', 'start_point', 'end_point', + 'end_date', 'request_date', 'end_point', ]; $query = Mission::query() diff --git a/routes/v3.php b/routes/v3.php index e8b552bb..72d96e4d 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -431,6 +431,7 @@ Route::prefix('missions') ->name('missions.') ->group(function () { Route::name('requestPortal.') + ->prefix('request_portal') ->middleware('permission:manage-request-portal-city|manage-request-portal-province|manage-request-portal-country') ->controller(RequestPortalController::class) ->group(function () { @@ -441,6 +442,7 @@ Route::prefix('missions') Route::delete('/{mission}', 'destroy')->name('destroy'); }); Route::name('transportationUnit.') + ->prefix('transportation_unit') ->controller(TransportationUnitController::class) ->group(function () { Route::get('/', 'index')->name('index'); From 36ebfdadd42f747b055cdcf5e3c1219d609a7722 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 20 May 2025 10:30:27 +0330 Subject: [PATCH 5/5] add mutator for mission --- app/Enums/MissionStates.php | 2 +- .../V3/Dashboard/Mission/RequestPortalController.php | 4 ++-- app/Models/Mission.php | 8 ++++++++ .../2025_05_17_103927_create_missions_table.php | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/Enums/MissionStates.php b/app/Enums/MissionStates.php index 77dfaeaf..b72a5637 100644 --- a/app/Enums/MissionStates.php +++ b/app/Enums/MissionStates.php @@ -14,7 +14,7 @@ enum MissionStates: int public static function name(int $state): string { $mapArray = [ - 1 => 'درخواست ایجاد شد و در حال بررسی در توسط واحد نقلیه است', + 1 => 'درخواست ایجاد شد و در حال بررسی توسط واحد نقلیه است', 2 => 'خودرو اختصاص داده شد و درخواست توسط واحد کنترل در حال بررسی است', 3 => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود', 4 => 'اتمام ماموریت', diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index f93419ae..a1fbd21a 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -36,7 +36,7 @@ class RequestPortalController extends Controller 'edare_shahri_name'=> $user->edare_shahri_name ?? null, 'state_id' =>$state, 'state_name' => MissionStates::name($state), - 'requested_machines' => $request->requested_machines, + 'requested_machines' => json_encode($request->requested_machines), 'type' => $request->type, 'start_date' => $request->start_date, 'end_date' => $request->end_date, @@ -63,7 +63,7 @@ class RequestPortalController extends Controller $mission->update([ 'state_id' =>$state, 'state_name' => MissionStates::name($state), - 'requested_machines' => $request->requested_machines, + 'requested_machines' => json_encode($request->requested_machines), 'type' => $request->type, 'start_date' => $request->start_date, 'end_date' => $request->end_date, diff --git a/app/Models/Mission.php b/app/Models/Mission.php index 28ba82eb..7ff42e75 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\MorphToMany; @@ -12,6 +13,13 @@ class Mission extends Model protected $guarded = []; + protected function requestedMachines(): Attribute + { + return Attribute::make( + get: fn ($value) => json_decode($value) + ); + } + public function roadItems(): MorphToMany { return $this->morphedByMany(RoadItemsProject::class, 'missionable'); diff --git a/database/migrations/2025_05_17_103927_create_missions_table.php b/database/migrations/2025_05_17_103927_create_missions_table.php index 6f80171c..25a60291 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -23,7 +23,7 @@ return new class extends Migration $table->string('province_name'); $table->unsignedBigInteger('edare_shahri_id')->nullable(); $table->foreign('edare_shahri_id')->references('id')->on('edarate_shahri')->noActionOnDelete(); - $table->string('edare_shahri_name'); + $table->string('edare_shahri_name')->nullable(); $table->json('requested_machines'); $table->string('type'); $table->dateTime('start_date');