From d330908bd364ee2e73cc74d751a696f362185875 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sun, 18 May 2025 18:12:15 +0330 Subject: [PATCH 1/8] create controller --- .../Dashboard/Mission/CartableController.php | 79 ++++++++++--------- app/Http/Requests/V3/Mission/StoreRequest.php | 46 +++++++++++ .../Requests/V3/Mission/UpdateRequest.php | 28 +++++++ app/Services/Mission/CartableService.php | 52 ++++++++++++ 4 files changed, 169 insertions(+), 36 deletions(-) create mode 100644 app/Http/Requests/V3/Mission/StoreRequest.php create mode 100644 app/Http/Requests/V3/Mission/UpdateRequest.php create mode 100644 app/Services/Mission/CartableService.php diff --git a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php index 518bd4c8..853e91fa 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php @@ -2,62 +2,69 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; +use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Mission\StoreRequest; +use App\Http\Traits\ApiResponse; +use App\Models\CMMSMachine; +use App\Models\Mission; +use App\Models\Rahdaran; +use App\Services\Missions\CartableService; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class CartableController extends Controller { - /** - * Display a listing of the resource. - */ - public function index() + use ApiResponse; + public function index(Request $request,CartableService $cartableService): JsonResponse { - // + return response()->json($cartableService->datatable($request)); } - /** - * Show the form for creating a new resource. - */ - public function create() + public function store(StoreRequest $request): JsonResponse { - // + + $mission = Mission::query()->create([ + 'user_id'=> auth()->user()->id(), + 'state_id' => $request->state_id, + 'state_name' => $request->state_name, + 'requested_machine_type' =>$request->requested_machine_type, + 'requested_machine_numbers' =>$request->requested_machine_numbers, + '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, + ]); + + if ($request->filled('machine_id')) { + $mission->machines()->attach($request->machine_ids); + } + + if ($request->filled('rahdar_id')) { + $mission->rahdars()->attach($request->rahdar_ids); + } + + return $this->successResponse(); + } - /** - * Store a newly created resource in storage. - */ - public function store(Request $request) + + public function show(Request $request,Mission $mission,CartableService $cartableService): JsonResponse { - // + return response()->json($cartableService->getMission($request->user(), $mission)); } - /** - * Display the specified resource. - */ - public function show(string $id) - { - // - } - /** - * Show the form for editing the specified resource. - */ - public function edit(string $id) - { - // - } - - /** - * Update the specified resource in storage. - */ public function update(Request $request, string $id) { // } - /** - * Remove the specified resource from storage. - */ + public function destroy(string $id) { // diff --git a/app/Http/Requests/V3/Mission/StoreRequest.php b/app/Http/Requests/V3/Mission/StoreRequest.php new file mode 100644 index 00000000..ceaf036e --- /dev/null +++ b/app/Http/Requests/V3/Mission/StoreRequest.php @@ -0,0 +1,46 @@ +user(); + return $user->hasPermissionTo('mission-manage-country') || + ($user->hasPermissionTo('mission-manage-province') && $this->province_id == $user->province_id)|| + ($user->hasPermissionTo('mission-manage-city') && $this->province_id == $user->province_id && $this->city_id == $user->city_id); + + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'machine_id' => 'nullable|exists:cmms_machines|id', + 'machine_id.*' => 'exists:cmms_machines,id', + 'rahdar_id' => 'required|exists:rahdaran|id', + 'rahdar_id.*' => 'exists:rahdaran,id', + 'state_id' => 'required|exists:mission_states|id', + 'state_name' => 'required|string|max:255', + 'requested_machine_type' => 'required|string|max:255', + 'requested_machine_numbers'=> 'required|string|max:255', + 'type' => 'required'|'string'|'max:50', + 'start_date' => 'required|date', + 'end_date' => 'required|date', + 'request_date' => 'required|date', + 'description' => 'nullable|string', + 'start_point' => 'required|string|max:255', + 'end_point' => 'required|string|max:255', + ]; + } +} diff --git a/app/Http/Requests/V3/Mission/UpdateRequest.php b/app/Http/Requests/V3/Mission/UpdateRequest.php new file mode 100644 index 00000000..59fd052d --- /dev/null +++ b/app/Http/Requests/V3/Mission/UpdateRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + // + ]; + } +} diff --git a/app/Services/Mission/CartableService.php b/app/Services/Mission/CartableService.php new file mode 100644 index 00000000..0cd41492 --- /dev/null +++ b/app/Services/Mission/CartableService.php @@ -0,0 +1,52 @@ +user(); + $allowedFilters = ['*']; + $allowedSortings = ['*']; + + $query = Mission::query(); + + if ($user->hasPermissionTo('mission-manage-city')) { + $query->where('city_id', $user->edarate_shahri_id); + } + elseif ($user->hasPermissionTo('mission-manage-province')) { + $query->where('province_id', $user->province_id); + } + elseif ($user->hasPermissionTo('mission-manage-country')) { + + } + return DataTableFacade::run( + $query, + $request, + allowedFilters: $allowedFilters, + allowedSortings: $allowedSortings + ); + + } + public function getMission(User $user, Mission $mission): Mission + { + $allowed = + $user->hasPermissionTo('mission-manage-country') || + ($user->hasPermissionTo('mission-manage-province') && + $mission->province_id === $user->province_id) || + ($user->hasPermissionTo('mission-manage-city') && + $mission->city_id === $user->edarate_shahri_id); + + abort_unless($allowed, 403); + + return $mission->load(['machines','rahdars']); + } +} \ No newline at end of file From 62ed8d2973683c25f03bad78b48727b86b0b6832 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 19 May 2025 09:18:32 +0330 Subject: [PATCH 2/8] create transportation unit cartable --- .../Mission/TransportationUnitController.php | 36 ++++++++++++++ .../SafetyAndPrivacy/OperatorController.php | 10 ++-- .../OperatorReportController.php | 17 +++---- .../SafetyAndPrivacy/SupervisorController.php | 9 ++-- app/Models/Mission.php | 20 ++++++++ .../Mission/TransportationUnitService.php | 34 +++++++++++++ .../OperatorService.php} | 48 ++----------------- .../SafetyAndPrivacy/SupervisorService.php | 39 +++++++++++++++ ...025_05_17_103927_create_missions_table.php | 2 +- 9 files changed, 153 insertions(+), 62 deletions(-) create mode 100644 app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php create mode 100644 app/Services/Cartables/Mission/TransportationUnitService.php rename app/Services/Cartables/{SafetyAndPrivacyTableService.php => SafetyAndPrivacy/OperatorService.php} (78%) create mode 100644 app/Services/Cartables/SafetyAndPrivacy/SupervisorService.php diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php new file mode 100644 index 00000000..f735ab17 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -0,0 +1,36 @@ +json($transportationUnitService->dataTable($request)); + } + + public function allocate(Request $request, Mission $mission): JsonResponse + { + $mission->machines()->attach($request->machines); + + $mission->update([ + 'state' => '' + ]); + + return $this->successResponse(); + } + + public function deallocate() + { + + } +} diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php index b6726fe4..995233c1 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php @@ -17,7 +17,7 @@ use App\Http\Requests\V3\SafetyAndPrivacy\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\InfoItem; use App\Models\SafetyAndPrivacy; -use App\Services\Cartables\SafetyAndPrivacyTableService; +use App\Services\Cartables\SafetyAndPrivacy\OperatorService; use App\Services\NominatimService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -34,18 +34,18 @@ class OperatorController extends Controller /** * @throws Throwable */ - public function index(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse + public function index(Request $request, OperatorService $operatorService): JsonResponse { - return response()->json($safetyAndPrivacyTableService->operatorDatatable($request)); + return response()->json($operatorService->datatable($request)); } /** * @throws Throwable */ - public function excelReport(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse + public function excelReport(Request $request, OperatorService $operatorService): BinaryFileResponse { $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - $data = $safetyAndPrivacyTableService->operatorDatatable($request); + $data = $operatorService->datatable($request); return Excel::download(new OperatorCartableReport($data['data']), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReportController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReportController.php index 31b41c52..0e3c5e78 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReportController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReportController.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; use App\Models\Province; +use App\Services\Cartables\SafetyAndPrivacy\OperatorService; use App\Services\Cartables\SafetyAndPrivacyTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -18,34 +19,34 @@ class OperatorReportController extends Controller { use ApiResponse; - public function countryActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse + public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse { - $data = $safetyAndPrivacyTableService->countryActivity($request); + $data = $operatorService->countryActivity($request); return $this->successResponse([ 'activities' => $data, 'provinces' => Province::all(['id', 'name_fa']) ]); } - public function provinceActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse + public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse { - $data = $safetyAndPrivacyTableService->provinceActivity($request); + $data = $operatorService->provinceActivity($request); return $this->successResponse([ 'activities' => $data, 'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']), ]); } - public function countryExcelActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse + public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $safetyAndPrivacyTableService->countryActivity($request); + $data = $operatorService->countryActivity($request); $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; return Excel::download(new CountryActivityReport($data), $name); } - public function provinceExcelActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse + public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $safetyAndPrivacyTableService->provinceActivity($request); + $data = $operatorService->provinceActivity($request); $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; return Excel::download(new ProvinceActivityReport($data, $request), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php index fc026166..0cd984c5 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\V3\SafetyAndPrivacy\RejectRequest; use App\Http\Traits\ApiResponse; use App\Models\SafetyAndPrivacy; +use App\Services\Cartables\SafetyAndPrivacy\SupervisorService; use App\Services\Cartables\SafetyAndPrivacyTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -22,18 +23,18 @@ class SupervisorController extends Controller /** * @throws Throwable */ - public function index(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse + public function index(Request $request, SupervisorService $supervisorService): JsonResponse { - return response()->json($safetyAndPrivacyTableService->supervisorDataTable($request)); + return response()->json($supervisorService->dataTable($request)); } /** * @throws Throwable */ - public function excelReport(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse + public function excelReport(Request $request, SupervisorService $supervisorService): BinaryFileResponse { $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - $data = $safetyAndPrivacyTableService->supervisorDataTable($request); + $data = $supervisorService->dataTable($request); return Excel::download(new SupervisorCartableReport($data['data']), $name); } diff --git a/app/Models/Mission.php b/app/Models/Mission.php index a2184352..28ba82eb 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -26,4 +26,24 @@ class Mission extends Model { return $this->morphedByMany(RoadObserved::class, 'missionable'); } + + public function machines(): MorphToMany + { + return $this->morphToMany(CMMSMachine::class, + 'machinable', + 'machinables', + 'machinable_id', + 'machine_id' + ); + } + + public function rahdaran(): MorphToMany + { + return $this->morphToMany(Rahdaran::class, + 'rahdarable', + 'rahdarables', + 'rahdarable_id', + 'rahdar_id', + ); + } } diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php new file mode 100644 index 00000000..03c4d203 --- /dev/null +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -0,0 +1,34 @@ +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' + ]; + + throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); + + $query = Mission::query()->where('', '=', ''); + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: $fields + ); + } +} \ No newline at end of file diff --git a/app/Services/Cartables/SafetyAndPrivacyTableService.php b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php similarity index 78% rename from app/Services/Cartables/SafetyAndPrivacyTableService.php rename to app/Services/Cartables/SafetyAndPrivacy/OperatorService.php index b6331901..f41270fd 100644 --- a/app/Services/Cartables/SafetyAndPrivacyTableService.php +++ b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php @@ -1,24 +1,15 @@ user(); @@ -41,37 +32,6 @@ class SafetyAndPrivacyTableService ); } - /** - * @throws Throwable - */ - public function supervisorDataTable(Request $request) - { - $user = auth()->user(); - - $fields = [ - 'id','lat','lon', 'recognize_picture','action_picture','created_at','status', 'final_description', 'province_fa', - 'info_fa', 'activity_date_time', 'action_picture_document_upload_date', 'judiciary_document_upload_date', 'edare_shahri_name', - 'step_fa', 'axis_type_id', 'axis_type_name', 'action_date', 'is_finished', 'status_fa', 'supervisor_description', 'operator_description' - ]; - - $query = SafetyAndPrivacy::query(); - - if ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) - { - throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); - - $query = $query->where('province_id', '=', $user->province_id); - } - - return DataTableFacade::run( - $query, - $request, - allowedFilters: ['*'], - allowedSortings: ['*'], - allowedSelects: $fields - ); - } - public function countryActivity(Request $request): array { $activities = []; @@ -186,4 +146,4 @@ class SafetyAndPrivacyTableService return array_values($activities); } -} +} \ No newline at end of file diff --git a/app/Services/Cartables/SafetyAndPrivacy/SupervisorService.php b/app/Services/Cartables/SafetyAndPrivacy/SupervisorService.php new file mode 100644 index 00000000..0579bc8b --- /dev/null +++ b/app/Services/Cartables/SafetyAndPrivacy/SupervisorService.php @@ -0,0 +1,39 @@ +user(); + + $fields = [ + 'id','lat','lon', 'recognize_picture','action_picture','created_at','status', 'final_description', 'province_fa', + 'info_fa', 'activity_date_time', 'action_picture_document_upload_date', 'judiciary_document_upload_date', 'edare_shahri_name', + 'step_fa', 'axis_type_id', 'axis_type_name', 'action_date', 'is_finished', 'status_fa', 'supervisor_description', 'operator_description' + ]; + + $query = SafetyAndPrivacy::query(); + + if ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) + { + throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); + + $query = $query->where('province_id', '=', $user->province_id); + } + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: $fields + ); + } +} \ No newline at end of file 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 af2a3340..385e8a18 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -19,7 +19,7 @@ return new class extends Migration $table->foreignId('state_id')->constrained('mission_states'); $table->string('state_name'); $table->string('requested_machine_type'); - $table->string('requested_machine_numbers'); + $table->integer('requested_machine_numbers'); $table->string('type'); $table->dateTime('start_date'); $table->dateTime('end_date'); From b6d66b9191aef98a9965f5d53fa3f35ce989b4c6 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 19 May 2025 10:29:59 +0330 Subject: [PATCH 3/8] create mission state enum --- app/Enums/MissionStates.php | 28 ++++++++++++++++++ .../Mission/TransportationUnitController.php | 19 +++++++++--- .../TransportaionUnit/AllocateRequest.php | 29 +++++++++++++++++++ .../Mission/TransportationUnitService.php | 9 +++--- ...025_05_17_103927_create_missions_table.php | 12 +++++--- 5 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 app/Enums/MissionStates.php create mode 100644 app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php 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'); From f6f5bc4aa4f5fd02c7b71130602ffa10fbf24178 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 19 May 2025 09:23:45 +0330 Subject: [PATCH 4/8] compleate controller --- .../Dashboard/Mission/CartableController.php | 44 ++++++++++++------- app/Http/Requests/V3/Mission/StoreRequest.php | 24 ++++------ .../Requests/V3/Mission/UpdateRequest.php | 14 +++++- app/Services/Mission/CartableService.php | 13 ------ 4 files changed, 48 insertions(+), 47 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php index 853e91fa..fde01024 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Mission\StoreRequest; +use App\Http\Requests\V3\Mission\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\CMMSMachine; use App\Models\Mission; @@ -17,6 +18,7 @@ use Illuminate\Support\Facades\DB; class CartableController extends Controller { use ApiResponse; + public function index(Request $request,CartableService $cartableService): JsonResponse { return response()->json($cartableService->datatable($request)); @@ -40,33 +42,43 @@ class CartableController extends Controller 'end_point' =>$request->end_point, ]); - if ($request->filled('machine_id')) { - $mission->machines()->attach($request->machine_ids); - } - - if ($request->filled('rahdar_id')) { - $mission->rahdars()->attach($request->rahdar_ids); - } + $mission->rahdaran()->attach($request->rahdaran_id); return $this->successResponse(); } - - public function show(Request $request,Mission $mission,CartableService $cartableService): JsonResponse + public function show(Mission $mission): JsonResponse { - return response()->json($cartableService->getMission($request->user(), $mission)); + return $this->successResponse($mission); } - - public function update(Request $request, string $id) + public function update(UpdateRequest $request,Mission $mission) { - // + $mission->update([ + 'state_id' => $request->state_id, + 'state_name' => $request->state_name, + 'requested_machine_type' =>$request->requested_machine_type, + 'requested_machine_numbers' =>$request->requested_machine_numbers, + '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()->attach($request->rahdaran_id); + + return $this->successResponse(); + } - - public function destroy(string $id) + public function destroy(Mission $mission) { - // + $mission->delete(); + return $this->successResponse($mission); + } } diff --git a/app/Http/Requests/V3/Mission/StoreRequest.php b/app/Http/Requests/V3/Mission/StoreRequest.php index ceaf036e..ef3a86e3 100644 --- a/app/Http/Requests/V3/Mission/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/StoreRequest.php @@ -11,11 +11,7 @@ class StoreRequest extends FormRequest */ public function authorize(): bool { - $user = $this->user(); - return $user->hasPermissionTo('mission-manage-country') || - ($user->hasPermissionTo('mission-manage-province') && $this->province_id == $user->province_id)|| - ($user->hasPermissionTo('mission-manage-city') && $this->province_id == $user->province_id && $this->city_id == $user->city_id); - + return true; } /** @@ -26,21 +22,17 @@ class StoreRequest extends FormRequest public function rules(): array { return [ - 'machine_id' => 'nullable|exists:cmms_machines|id', - 'machine_id.*' => 'exists:cmms_machines,id', - 'rahdar_id' => 'required|exists:rahdaran|id', - 'rahdar_id.*' => 'exists:rahdaran,id', - 'state_id' => 'required|exists:mission_states|id', - 'state_name' => 'required|string|max:255', + 'rahdaran_id' => 'required|array', + 'rahdaran_id.*' => 'exists:rahdaran,id', 'requested_machine_type' => 'required|string|max:255', - 'requested_machine_numbers'=> 'required|string|max:255', - 'type' => 'required'|'string'|'max:50', + 'requested_machine_numbers'=> 'required|integer|max:255', + 'type' => 'required|string|max:50', 'start_date' => 'required|date', 'end_date' => 'required|date', 'request_date' => 'required|date', - 'description' => 'nullable|string', - 'start_point' => 'required|string|max:255', - 'end_point' => 'required|string|max:255', + 'description' => 'string', + 'start_point' => 'required|string', + 'end_point' => 'required|string', ]; } } diff --git a/app/Http/Requests/V3/Mission/UpdateRequest.php b/app/Http/Requests/V3/Mission/UpdateRequest.php index 59fd052d..fb913c6f 100644 --- a/app/Http/Requests/V3/Mission/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/UpdateRequest.php @@ -11,7 +11,7 @@ class UpdateRequest extends FormRequest */ public function authorize(): bool { - return false; + return true; } /** @@ -22,7 +22,17 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ - // + 'rahdaran_id' => 'required|array', + 'rahdaran_id.*' => 'exists:rahdaran,id', + 'requested_machine_type' => 'required|string|max:255', + 'requested_machine_numbers'=> 'required|integer|max:255', + 'type' => 'required|string|max:50', + 'start_date' => 'required|date', + 'end_date' => 'required|date', + 'request_date' => 'required|date', + 'description' => 'string', + 'start_point' => 'required|string', + 'end_point' => 'required|string', ]; } } diff --git a/app/Services/Mission/CartableService.php b/app/Services/Mission/CartableService.php index 0cd41492..36c72781 100644 --- a/app/Services/Mission/CartableService.php +++ b/app/Services/Mission/CartableService.php @@ -36,17 +36,4 @@ class CartableService ); } - public function getMission(User $user, Mission $mission): Mission - { - $allowed = - $user->hasPermissionTo('mission-manage-country') || - ($user->hasPermissionTo('mission-manage-province') && - $mission->province_id === $user->province_id) || - ($user->hasPermissionTo('mission-manage-city') && - $mission->city_id === $user->edarate_shahri_id); - - abort_unless($allowed, 403); - - return $mission->load(['machines','rahdars']); - } } \ No newline at end of file From 355941d1e1abb4f2ae40afdda947266f6affab82 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 19 May 2025 10:31:52 +0330 Subject: [PATCH 5/8] compleate controller and routs --- .../Dashboard/Mission/CartableController.php | 20 +++++++++---------- .../{ => RequestPortal}/StoreRequest.php | 6 +++--- .../{ => RequestPortal}/UpdateRequest.php | 6 +++--- routes/v3.php | 11 ++++++++++ 4 files changed, 26 insertions(+), 17 deletions(-) rename app/Http/Requests/V3/Mission/{ => RequestPortal}/StoreRequest.php (86%) rename app/Http/Requests/V3/Mission/{ => RequestPortal}/UpdateRequest.php (86%) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php index fde01024..1964af7c 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php @@ -2,18 +2,14 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; -use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\Mission\StoreRequest; -use App\Http\Requests\V3\Mission\UpdateRequest; +use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest; +use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest; use App\Http\Traits\ApiResponse; -use App\Models\CMMSMachine; use App\Models\Mission; -use App\Models\Rahdaran; use App\Services\Missions\CartableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; class CartableController extends Controller { @@ -42,7 +38,7 @@ class CartableController extends Controller 'end_point' =>$request->end_point, ]); - $mission->rahdaran()->attach($request->rahdaran_id); + $mission->rahdaran()->attach($request->rahdaran); return $this->successResponse(); @@ -53,7 +49,7 @@ class CartableController extends Controller return $this->successResponse($mission); } - public function update(UpdateRequest $request,Mission $mission) + public function update(UpdateRequest $request,Mission $mission): JsonResponse { $mission->update([ 'state_id' => $request->state_id, @@ -67,18 +63,20 @@ class CartableController extends Controller 'description' =>$request->description, 'start_point' =>$request->start_point, 'end_point' =>$request->end_point, + ]); - $mission->rahdaran()->attach($request->rahdaran_id); + $mission->rahdaran()->sync($request->rahdaran); return $this->successResponse(); } - public function destroy(Mission $mission) + public function destroy(Mission $mission): JsonResponse { + $mission->rahdaran()->detach(); $mission->delete(); - return $this->successResponse($mission); + return $this->successResponse(); } } diff --git a/app/Http/Requests/V3/Mission/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php similarity index 86% rename from app/Http/Requests/V3/Mission/StoreRequest.php rename to app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index ef3a86e3..62bd1984 100644 --- a/app/Http/Requests/V3/Mission/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -1,6 +1,6 @@ 'required|array', - 'rahdaran_id.*' => 'exists:rahdaran,id', + 'rahdaran' => 'required|array', + 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machine_type' => 'required|string|max:255', 'requested_machine_numbers'=> 'required|integer|max:255', 'type' => 'required|string|max:50', diff --git a/app/Http/Requests/V3/Mission/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php similarity index 86% rename from app/Http/Requests/V3/Mission/UpdateRequest.php rename to app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index fb913c6f..c463fc53 100644 --- a/app/Http/Requests/V3/Mission/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -1,6 +1,6 @@ 'required|array', - 'rahdaran_id.*' => 'exists:rahdaran,id', + 'rahdaran' => 'required|array', + 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machine_type' => 'required|string|max:255', 'requested_machine_numbers'=> 'required|integer|max:255', 'type' => 'required|string|max:50', diff --git a/routes/v3.php b/routes/v3.php index 4de8e0bc..5810034a 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -7,6 +7,7 @@ use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshController; 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\CartableController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\AccidentReceiptController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; @@ -424,3 +425,13 @@ 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(CartableController::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'); + }); From 3ee7a49ce9d3ab27a4de61e90006f59cc0e4536f Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 19 May 2025 11:53:09 +0330 Subject: [PATCH 6/8] improve all of the code --- .../Dashboard/Mission/CartableController.php | 82 ----------------- .../Mission/RequestPortalController.php | 87 +++++++++++++++++++ ...leService.php => RequestPortalService.php} | 19 ++-- routes/v3.php | 4 +- 4 files changed, 96 insertions(+), 96 deletions(-) delete mode 100644 app/Http/Controllers/V3/Dashboard/Mission/CartableController.php create mode 100644 app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php rename app/Services/Mission/{CartableService.php => RequestPortalService.php} (56%) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php b/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php deleted file mode 100644 index 1964af7c..00000000 --- a/app/Http/Controllers/V3/Dashboard/Mission/CartableController.php +++ /dev/null @@ -1,82 +0,0 @@ -json($cartableService->datatable($request)); - } - - public function store(StoreRequest $request): JsonResponse - { - - $mission = Mission::query()->create([ - 'user_id'=> auth()->user()->id(), - 'state_id' => $request->state_id, - 'state_name' => $request->state_name, - 'requested_machine_type' =>$request->requested_machine_type, - 'requested_machine_numbers' =>$request->requested_machine_numbers, - '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()->attach($request->rahdaran); - - return $this->successResponse(); - - } - - public function show(Mission $mission): JsonResponse - { - return $this->successResponse($mission); - } - - public function update(UpdateRequest $request,Mission $mission): JsonResponse - { - $mission->update([ - 'state_id' => $request->state_id, - 'state_name' => $request->state_name, - 'requested_machine_type' =>$request->requested_machine_type, - 'requested_machine_numbers' =>$request->requested_machine_numbers, - '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); - - return $this->successResponse(); - - } - - public function destroy(Mission $mission): JsonResponse - { - $mission->rahdaran()->detach(); - $mission->delete(); - return $this->successResponse(); - - } -} diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php new file mode 100644 index 00000000..9405561f --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -0,0 +1,87 @@ +json($requestPortalService->datatable($request)); + } + + public function store(StoreRequest $request): JsonResponse + { + DB::transaction(function () use ($request) { + $state = MissionStates::REQUEST_CREATED->value; + $mission = Mission::query()->create([ + 'user_id'=> auth()->user()->id, + 'state_id' =>$state, + 'state_name' => MissionStates::name($state), + 'requested_machine_type' => $request->requested_machine_type, + 'requested_machine_numbers' => $request->requested_machine_numbers, + '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()->attach($request->rahdaran); + }); + + return $this->successResponse(); + } + + public function show(Mission $mission): JsonResponse + { + return $this->successResponse($mission); + } + + public function update(UpdateRequest $request,Mission $mission): JsonResponse + { + DB::transaction(function () use ($mission, $request) { + $state = MissionStates::REQUEST_CREATED->value; + $mission->update([ + 'state_id' =>$state, + 'state_name' => MissionStates::name($state), + 'requested_machine_type' => $request->requested_machine_type, + 'requested_machine_numbers' => $request->requested_machine_numbers, + '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); + }); + + return $this->successResponse(); + } + + public function destroy(Mission $mission): JsonResponse + { + DB::transaction(function () use ($mission) { + $mission->rahdaran()->detach(); + $mission->delete(); + }); + return $this->successResponse(); + } +} diff --git a/app/Services/Mission/CartableService.php b/app/Services/Mission/RequestPortalService.php similarity index 56% rename from app/Services/Mission/CartableService.php rename to app/Services/Mission/RequestPortalService.php index 36c72781..3c5ec2f0 100644 --- a/app/Services/Mission/CartableService.php +++ b/app/Services/Mission/RequestPortalService.php @@ -1,6 +1,6 @@ user(); - $allowedFilters = ['*']; - $allowedSortings = ['*']; - $query = Mission::query(); if ($user->hasPermissionTo('mission-manage-city')) { - $query->where('city_id', $user->edarate_shahri_id); + $query->where('edarate_shahri_id', '=', $user->edarate_shahri_id); } elseif ($user->hasPermissionTo('mission-manage-province')) { - $query->where('province_id', $user->province_id); - } - elseif ($user->hasPermissionTo('mission-manage-country')) { - + $query->where('province_id', '=', $user->province_id); } return DataTableFacade::run( $query, $request, - allowedFilters: $allowedFilters, - allowedSortings: $allowedSortings + allowedFilters: ['*'], + allowedSortings: ['*'] ); } diff --git a/routes/v3.php b/routes/v3.php index 5810034a..ac3f0b46 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -7,7 +7,7 @@ use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshController; 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\CartableController; +use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\AccidentReceiptController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; @@ -427,7 +427,7 @@ Route::prefix('road_maintenance_station') }); Route::prefix('missions') ->name('missions.') - ->controller(CartableController::class) + ->controller(RequestPortalController::class) ->group(function () { Route::get('/', 'index')->name('index'); Route::post('/', 'store')->name('store'); From 186f31de3c2e41cc3b5ff7a0d06e91e8f0fefa4f Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 19 May 2025 13:32:02 +0330 Subject: [PATCH 7/8] improve update request --- app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index c463fc53..4498ea7b 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -11,7 +11,7 @@ class UpdateRequest extends FormRequest */ public function authorize(): bool { - return true; + return ($this->route('mission'))->user_id === auth()->id(); } /** From 699dcddcf5589c5e5abf71ab515c0f4a4711846c Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 19 May 2025 14:47:03 +0330 Subject: [PATCH 8/8] change plase mission service --- .../V3/Dashboard/Mission/RequestPortalController.php | 2 +- app/Services/{ => Cartables}/Mission/RequestPortalService.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename app/Services/{ => Cartables}/Mission/RequestPortalService.php (94%) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 9405561f..39fb5f36 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -8,7 +8,7 @@ use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest; use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\Mission; -use App\Services\Mission\RequestPortalService; +use App\Services\Cartables\Mission\RequestPortalService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; diff --git a/app/Services/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php similarity index 94% rename from app/Services/Mission/RequestPortalService.php rename to app/Services/Cartables/Mission/RequestPortalService.php index 3c5ec2f0..c1757019 100644 --- a/app/Services/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -1,6 +1,6 @@