diff --git a/app/Enums/MissionStates.php b/app/Enums/MissionStates.php new file mode 100644 index 00000000..9a389cb4 --- /dev/null +++ b/app/Enums/MissionStates.php @@ -0,0 +1,28 @@ + 'درخواست ایجاد شد و در حال بررسی در توسط واحد نقلیه است', + 2 => 'خودرو اختصاص داده شد و درخواست توسط واحد کنترل در حال بررسی است', + 3 => 'درخواست توسط واحد کنترل تایید شد و ماموریت آغاز می شود', + 4 => 'اتمام ماموریت', + 5 => 'عدم تخصیص خودرو توسط واحد نقلیه و بازگشت درخواست به کارتابل کاربر', + 6 => 'عدم تایید توسط واحد کنترل', + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php index f735ab17..1262df58 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -2,7 +2,9 @@ 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\Traits\ApiResponse; use App\Models\Mission; use App\Services\Cartables\Mission\TransportationUnitService; @@ -18,19 +20,28 @@ class TransportationUnitController extends Controller return response()->json($transportationUnitService->dataTable($request)); } - public function allocate(Request $request, Mission $mission): JsonResponse + public function allocate(AllocateRequest $request, Mission $mission): JsonResponse { $mission->machines()->attach($request->machines); + $state = MissionStates::PENDING_CONFIRMATION->value; $mission->update([ - 'state' => '' + 'state_id' => $state, + 'state_name' => MissionStates::name($state), ]); return $this->successResponse(); } - public function deallocate() + public function deallocate(Mission $mission): JsonResponse { - + $state = MissionStates::REJECT_BY_TRANSPORTATION->value; + + $mission->update([ + 'state_id' => $state, + 'state_name' => MissionStates::name($state), + ]); + + return $this->successResponse(); } } diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php new file mode 100644 index 00000000..bac0e6bd --- /dev/null +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php @@ -0,0 +1,29 @@ +mission->edare_shahri_id == auth()->user()->edarate_shahri_id; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'machines' => 'required|array', + 'machines.*' => 'required|integer|exists:cmms_machines,id', + ]; + } +} diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php index 03c4d203..0f9a56a3 100644 --- a/app/Services/Cartables/Mission/TransportationUnitService.php +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -2,6 +2,7 @@ namespace App\Services\Cartables\Mission; +use App\Enums\MissionStates; use App\Exceptions\ProhibitedAction; use App\Facades\DataTable\DataTableFacade; use App\Models\Mission; @@ -14,14 +15,12 @@ class TransportationUnitService $user = auth()->user(); $fields = [ - 'id','lat','lon', 'recognize_picture','action_picture','created_at','step', 'final_description', - 'info_fa', 'activity_date_time', 'action_picture_document_upload_date', 'judiciary_document_upload_date', - 'step_fa', 'axis_type_id', 'axis_type_name', 'action_date', 'is_finished', 'status_fa', 'supervisor_description', 'operator_description' + 'id', '', '', '', '' ]; - throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); +// throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); - $query = Mission::query()->where('', '=', ''); + $query = Mission::query()->where('state_id', '=', MissionStates::REQUEST_CREATED->value); return DataTableFacade::run( $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 385e8a18..adbad8a6 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -13,11 +13,15 @@ return new class extends Migration { Schema::create('missions', function (Blueprint $table) { $table->id(); - $table->foreignId('user_id')->constrained('users'); - $table->foreignId('machine_id')->nullable()->constrained('cmms_machines'); - $table->foreignId('rahdar_id')->constrained('rahdaran'); - $table->foreignId('state_id')->constrained('mission_states'); + $table->foreignId('user_id')->constrained('users')->cascadeOnDelete(); + $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')->constrained('provinces')->noActionOnDelete(); + $table->string('province_name'); + $table->foreignId('edare_shahri_id')->constrained('edarate_shahri')->noActionOnDelete(); + $table->string('edare_shahri_name'); $table->string('requested_machine_type'); $table->integer('requested_machine_numbers'); $table->string('type');