From 1bdd9abab3f862d1ac7412d1eb78f3e82756817f Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 18 Oct 2025 10:41:49 +0330 Subject: [PATCH 01/54] change format for fill column harim --- .env.example | 10 +-- .../Harim/PanjareVahedController.php | 66 +++++++++++-------- .../ConfirmGuaranteeLetterNeedListener.php | 27 +++++--- .../Harim/ConfirmNoRoadAccessNeedListener.php | 27 +++++--- .../ConfirmRoadAccessEditNeedListener.php | 27 +++++--- .../Harim/ConfirmRoadAccessNeedListener.php | 27 +++++--- .../Dashboard/Harim/RejectRequestListener.php | 27 +++++--- 7 files changed, 130 insertions(+), 81 deletions(-) diff --git a/.env.example b/.env.example index 3ebfeaa3..af200645 100644 --- a/.env.example +++ b/.env.example @@ -71,23 +71,23 @@ FMS_ERROR_RATE_URL= FMS_ERROR_RATE_PASSWORD= FMS_ERROR_RATE_USERNAME= -HARIM_NEED_ACCESS_URL= +HARIM_NEED_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response', HARIM_NEED_ACCESS_PASSWORD= HARIM_NEED_ACCESS_USERNAME= -HARIM_REJECT_URL= +HARIM_REJECT_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_REJECT_PASSWORD= HARIM_REJECT_USERNAME= -HARIM_NO_NEED_ACCESS_URL= +HARIM_NO_NEED_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_NO_NEED_ACCESS_PASSWORD= HARIM_NO_NEED_ACCESS_USERNAME= -HARIM_EDIT_ACCESS_URL= +HARIM_EDIT_ACCESS_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_EDIT_ACCESS_PASSWORD= HARIM_EDIT_ACCESS_USERNAME= -HARIM_NEED_GUARANTEE_LETTER_URL= +HARIM_NEED_GUARANTEE_LETTER_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_NEED_GUARANTEE_LETTER_PASSWORD= HARIM_NEED_GUARANTEE_LETTER_USERNAME= diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 8f9a6c43..466eb884 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -12,13 +12,14 @@ use App\Http\Traits\ApiResponse; use App\Models\City; use App\Models\Harim; use Illuminate\Database\Eloquent\ModelNotFoundException; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; class PanjareVahedController extends Controller { use ApiResponse; - public function receiveNewRequest(ReceiveNewRequest $request) + public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse { $wkt = 'POLYGON((' . implode(',', array_map(fn($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])) . '))'; $result = DB::selectOne("SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point", [$wkt]); @@ -43,7 +44,7 @@ class PanjareVahedController extends Controller $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; - Harim::query()->create([ + $harim = Harim::query()->create([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'panjare_vahed_id' => $request->request_id, @@ -66,55 +67,68 @@ class PanjareVahedController extends Controller 'token' => $request->data['token'], ]); - return $this->successResponse([ + return response()->json([ + 'id' => $harim->id, 'city' => $city->edarateShahri()->first()->name_fa, 'province' => $city->province()->first()->name_fa, + 'statusCode' => 200, ]); } - public function getAccessRoad(GetAccessRoadRequest $request) + public function getAccessRoad(GetAccessRoadRequest $request): JsonResponse { $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; - Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->request_id) - ->update([ + $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); + + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'access_road' => json_encode($request->access_road), ]); - return $this->successResponse(); + return response()->json([ + 'id' => $harim->id, + 'statusCode' => 200, + ]); } - public function getRejectRequest(GetRejectRequest $request) + public function getRejectRequest(GetRejectRequest $request): JsonResponse { $state = HarimStates::MOKHALEFAT_BA_DASTGAH->value; - Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->request_id) - ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); + $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - return $this->successResponse(); + + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + + return response()->json([ + 'id' => $harim->id, + 'statusCode' => 200, + ]); } - public function getFinalPolygons(GetFinalPolygonsRequest $request) + public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse { $state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; - Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->request_id) - ->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - 'final_area' => json_encode($request->final_area), - 'final_plan' => json_encode($request->final_plan), - ]); + $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - return $this->successResponse(); + + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + 'final_area' => json_encode($request->final_area), + 'final_plan' => json_encode($request->final_plan), + ]); + + return response()->json([ + 'id' => $harim->id, + 'statusCode' => 200, + ]); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php index 37ba0b85..9a11afc0 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php @@ -32,15 +32,22 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue */ public function handle(ConfirmGuaranteeLetterNeedEvent $event): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + $encodedData = openssl_decrypt($event->harim->data); + + $data = [ + 'data' => [ + 'actionId' => $encodedData['actionId'], + 'ruleId' => $encodedData['ruleId'], + 'activityId' => $encodedData['activityId'], + 'requestId' => $encodedData['requestId'], + 'taskId' => $encodedData['taskId'], + 'code' => $encodedData['code'], + 'warrantStatus' => $encodedData['warrantStatus'], + 'amountPaid' => $encodedData['amountPaid'], + ], + 'token' => $encodedData['token'] + ]; + + Http::post($this->url, json_encode($data))->throw(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php index 5b03bdeb..74ec1676 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php @@ -32,15 +32,22 @@ class ConfirmNoRoadAccessNeedListener implements ShouldQueue */ public function handle(ConfirmNoRoadAccessNeedEvent $event): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + $encodedData = openssl_decrypt($event->harim->data); + + $data = [ + 'data' => [ + 'actionId' => $encodedData['actionId'], + 'ruleId' => $encodedData['ruleId'], + 'activityId' => $encodedData['activityId'], + 'requestId' => $encodedData['requestId'], + 'taskId' => $encodedData['taskId'], + 'code' => $encodedData['code'], + 'resultStatus' => $encodedData['resultStatus'], + 'Description' => $encodedData['Description'], + ], + 'token' => $encodedData['token'] + ]; + + Http::post($this->url, json_encode($data))->throw(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php index 431f52cf..cf77c02f 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php @@ -32,15 +32,22 @@ class ConfirmRoadAccessEditNeedListener implements ShouldQueue */ public function handle(ConfirmRoadAccessEditNeedEvent $event): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + $encodedData = openssl_decrypt($event->harim->data); + + $data = [ + 'data' => [ + 'actionId' => $encodedData['actionId'], + 'ruleId' => $encodedData['ruleId'], + 'activityId' => $encodedData['activityId'], + 'requestId' => $encodedData['requestId'], + 'taskId' => $encodedData['taskId'], + 'code' => $encodedData['code'], + 'resultStatus' => $encodedData['resultStatus'], + 'Description' => $encodedData['Description'], + ], + 'token' => $encodedData['token'] + ]; + + Http::post($this->url, json_encode($data))->throw(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php index 3167bea6..ce54b281 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php @@ -34,15 +34,22 @@ class ConfirmRoadAccessNeedListener implements ShouldQueue */ public function handle(ConfirmRoadAccessNeedEvent $event): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + $encodedData = openssl_decrypt($event->harim->data); + + $data = [ + 'data' => [ + 'actionId' => $encodedData['actionId'], + 'ruleId' => $encodedData['ruleId'], + 'activityId' => $encodedData['activityId'], + 'requestId' => $encodedData['requestId'], + 'taskId' => $encodedData['taskId'], + 'code' => $encodedData['code'], + 'resultStatus' => $encodedData['resultStatus'], + 'Description' => $encodedData['Description'], + ], + 'token' => $encodedData['token'] + ]; + + Http::post($this->url, json_encode($data))->throw(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php index 008c66c1..0d5a1da7 100644 --- a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php +++ b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php @@ -32,15 +32,22 @@ class RejectRequestListener implements ShouldQueue */ public function handle(RejectRequestEvent $event): void { - Http::post($this->url, - array( - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - '' => $event->harim->id, - ))->throw(); + $encodedData = openssl_decrypt($event->harim->data); + + $data = [ + 'data' => [ + 'actionId' => $encodedData['actionId'], + 'ruleId' => $encodedData['ruleId'], + 'activityId' => $encodedData['activityId'], + 'requestId' => $encodedData['requestId'], + 'taskId' => $encodedData['taskId'], + 'code' => $encodedData['code'], + 'resultStatus' => $encodedData['resultStatus'], + 'Description' => $encodedData['Description'], + ], + 'token' => $encodedData['token'] + ]; + + Http::post($this->url, json_encode($data))->throw(); } } From 3d09b5b4d1939335da53e7f547a29bee19e86b49 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 18 Oct 2025 11:50:44 +0330 Subject: [PATCH 02/54] add nullable for token in harim --- .../migrations/2025_10_15_085149_add_column_to_harims_table.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/2025_10_15_085149_add_column_to_harims_table.php b/database/migrations/2025_10_15_085149_add_column_to_harims_table.php index 06bbcf76..71037b4c 100644 --- a/database/migrations/2025_10_15_085149_add_column_to_harims_table.php +++ b/database/migrations/2025_10_15_085149_add_column_to_harims_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::table('harims', function (Blueprint $table) { $table->longText('data')->nullable(); - $table->string('token', 255); + $table->string('token', 255)->nullable(); }); } From bcd051b3e081131897c22723959ec7b4ec5d8904 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 19 Oct 2025 10:18:21 +0330 Subject: [PATCH 03/54] create api for show all state harim --- .../V3/Dashboard/Harim/DetailController.php | 29 +++++++++++++++++++ routes/v3.php | 10 +++++++ 2 files changed, 39 insertions(+) create mode 100644 app/Http/Controllers/V3/Dashboard/Harim/DetailController.php diff --git a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php new file mode 100644 index 00000000..76c2e94c --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php @@ -0,0 +1,29 @@ +select(['id', 'name']); + + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + ); + + return response()->json($data); + } +} diff --git a/routes/v3.php b/routes/v3.php index 77c84bb2..8da6303d 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -523,6 +523,13 @@ Route::prefix('missions') Route::prefix('harim') ->name('harim.') ->group(function () { + Route::prefix('detail') + ->name('detail.') + ->controller(DetailController::class) + ->group(function () { + Route::get('/states', 'states')->name('states'); + }); + Route::prefix('province_office') ->name('province_office.') ->controller(ProvinceOfficeController::class) @@ -531,6 +538,7 @@ Route::prefix('harim') Route::post('/feedback/{harim}', 'feedback')->name('feedback'); Route::get('/{harim}', 'show')->name('show'); }); + Route::prefix('harim_office') ->name('harim_office.') ->controller(HarimOfficeController::class) @@ -543,6 +551,7 @@ Route::prefix('harim') Route::post('/file_rejected/{harim}', 'fileRejected')->name('fileRejected'); Route::get('/{harim}', 'show')->name('show'); }); + Route::prefix('technical_deputy') ->name('technical_deputy.') ->controller(TechnicalDeputyController::class) @@ -554,6 +563,7 @@ Route::prefix('harim') Route::post('/refer_road_access/{harim}', 'referRoadAccess')->name('referRoadAccess'); Route::get('/{harim}', 'show')->name('show'); }); + Route::prefix('general_manager') ->name('general_manager.') ->controller(GeneralManagerController::class) From c03668abd47a11c89d539bb5a4aa33989b68ee73 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 19 Oct 2025 10:26:38 +0330 Subject: [PATCH 04/54] fix route --- routes/v3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/v3.php b/routes/v3.php index 8da6303d..4496e71f 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -525,7 +525,7 @@ Route::prefix('harim') ->group(function () { Route::prefix('detail') ->name('detail.') - ->controller(DetailController::class) + ->controller(\App\Http\Controllers\V3\Dashboard\Harim\DetailController::class) ->group(function () { Route::get('/states', 'states')->name('states'); }); From 697fd9e2fc8989a8fa7a7f7dfb53a151d8c80fdc Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 19 Oct 2025 15:17:15 +0330 Subject: [PATCH 05/54] change something form harim controller --- .../V3/Dashboard/Harim/DetailController.php | 11 +---------- .../V3/Dashboard/Harim/PanjareVahedController.php | 6 ++++++ .../Harim/PanjareVahed/GetAccessRoadRequest.php | 1 + .../Harim/PanjareVahed/GetFinalPolygonsRequest.php | 1 + .../Dashboard/Harim/PanjareVahed/GetRejectRequest.php | 1 + 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php index 76c2e94c..8ac02b8e 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php @@ -15,15 +15,6 @@ class DetailController extends Controller public function states(Request $request): JsonResponse { - $query = HarimState::query()->select(['id', 'name']); - - $data = DataTableFacade::run( - $query, - $request, - allowedFilters: ['*'], - allowedSortings: ['*'], - ); - - return response()->json($data); + return $this->successResponse(HarimState::query()->get(['id', 'name'])); } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 466eb884..fa583bc1 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -85,6 +85,8 @@ class PanjareVahedController extends Controller 'state_id' => $state, 'state_name' => HarimStates::name($state), 'access_road' => json_encode($request->access_road), + 'data' => $request->data['data'], + 'token' => $request->data['token'], ]); return response()->json([ @@ -103,6 +105,8 @@ class PanjareVahedController extends Controller $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), + 'data' => $request->data['data'], + 'token' => $request->data['token'], ]); return response()->json([ @@ -124,6 +128,8 @@ class PanjareVahedController extends Controller 'state_name' => HarimStates::name($state), 'final_area' => json_encode($request->final_area), 'final_plan' => json_encode($request->final_plan), + 'data' => $request->data['data'], + 'token' => $request->data['token'], ]); return response()->json([ diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index 09758ca8..388856f2 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -27,6 +27,7 @@ class GetAccessRoadRequest extends FormRequest 'access_road' => 'required|array', 'access_road.type' => 'required|string', 'access_road.coordinates' => 'required|array', + 'data' => 'required|array', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php index 0080dd86..37bb54f3 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php @@ -30,6 +30,7 @@ class GetFinalPolygonsRequest extends FormRequest 'final_plan' => 'required|array', 'final_plan.type' => 'required|string', 'final_plan.coordinates' => 'required|array', + 'data' => 'required|array', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php index 701cf5b1..e5a4ace5 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php @@ -24,6 +24,7 @@ class GetRejectRequest extends FormRequest { return [ 'request_id' => 'required|exists:harims,panjare_vahed_id', + 'data' => 'required|array', ]; } } From afb94681de666b4b4b12560b6653047e6ee337bb Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 19 Oct 2025 16:54:39 +0330 Subject: [PATCH 06/54] create new culumn in machine and add in controller and createe enum for this --- app/Enums/MachineStates.php | 19 +++++++++++++ .../Controllers/V3/CMMSMachinesController.php | 6 ++-- ...2736_add_status_to_cmms_machines_table.php | 28 +++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 app/Enums/MachineStates.php create mode 100644 database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php diff --git a/app/Enums/MachineStates.php b/app/Enums/MachineStates.php new file mode 100644 index 00000000..ccdd6e2e --- /dev/null +++ b/app/Enums/MachineStates.php @@ -0,0 +1,19 @@ + 'اماده به کار', + self::REZERV => 'رزرو', + self::DAR_HAL_MAMOREAT => 'در حال ماموریت', + }; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/V3/CMMSMachinesController.php b/app/Http/Controllers/V3/CMMSMachinesController.php index b74be799..d0819a1a 100644 --- a/app/Http/Controllers/V3/CMMSMachinesController.php +++ b/app/Http/Controllers/V3/CMMSMachinesController.php @@ -22,13 +22,13 @@ class CMMSMachinesController extends Controller $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type'] + allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type', 'status'], )); } public function list(): JsonResponse { - $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type']); + $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type', 'status']); return $this->successResponse($machinesList); } @@ -37,7 +37,7 @@ class CMMSMachinesController extends Controller { $matchedSearchedMachines = CMMSMachine::query() ->where('machine_code', 'LIKE', "%{$request->machine_code}%") - ->get(['machine_code', 'id', 'plak_number', 'car_name']); + ->get(['machine_code', 'id', 'plak_number', 'car_name', 'status']); return $this->successResponse($matchedSearchedMachines); } diff --git a/database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php b/database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php new file mode 100644 index 00000000..60dbf9f3 --- /dev/null +++ b/database/migrations/2025_10_19_152736_add_status_to_cmms_machines_table.php @@ -0,0 +1,28 @@ +integer('status')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cmms_machines', function (Blueprint $table) { + $table->dropColumn('status'); + }); + } +}; From 0e63192172f25d0878d532e44d6f222c752b569f Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 20 Oct 2025 09:05:57 +0330 Subject: [PATCH 07/54] customize the response message --- .../V3/Dashboard/Harim/PanjareVahedController.php | 10 ++++++++-- .../Harim/PanjareVahed/GetAccessRoadRequest.php | 13 +++++++++++++ .../Harim/PanjareVahed/GetFinalPolygonsRequest.php | 13 +++++++++++++ .../Harim/PanjareVahed/GetRejectRequest.php | 13 +++++++++++++ .../Harim/PanjareVahed/ReceiveNewRequest.php | 13 +++++++++++++ 5 files changed, 60 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 466eb884..6f7fb6da 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -68,10 +68,12 @@ class PanjareVahedController extends Controller ]); return response()->json([ + 'request_id' => $request->request_id, 'id' => $harim->id, 'city' => $city->edarateShahri()->first()->name_fa, 'province' => $city->province()->first()->name_fa, 'statusCode' => 200, + 'message' => 'successful', ]); } @@ -88,8 +90,10 @@ class PanjareVahedController extends Controller ]); return response()->json([ + 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, + 'message' => 'successful', ]); } @@ -99,19 +103,19 @@ class PanjareVahedController extends Controller $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), ]); return response()->json([ + 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, + 'message' => 'successful', ]); } - public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse { $state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; @@ -127,8 +131,10 @@ class PanjareVahedController extends Controller ]); return response()->json([ + 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, + 'message' => 'successful', ]); } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index 09758ca8..5147e6a1 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class GetAccessRoadRequest extends FormRequest { @@ -29,4 +31,15 @@ class GetAccessRoadRequest extends FormRequest 'access_road.coordinates' => 'required|array', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php index 0080dd86..a2884cd3 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class GetFinalPolygonsRequest extends FormRequest { @@ -32,4 +34,15 @@ class GetFinalPolygonsRequest extends FormRequest 'final_plan.coordinates' => 'required|array', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php index 701cf5b1..47df0130 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class GetRejectRequest extends FormRequest { @@ -26,4 +28,15 @@ class GetRejectRequest extends FormRequest 'request_id' => 'required|exists:harims,panjare_vahed_id', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index f74449b8..d5bc528d 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -3,7 +3,9 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Http\Exceptions\HttpResponseException; class ReceiveNewRequest extends FormRequest { @@ -39,4 +41,15 @@ class ReceiveNewRequest extends FormRequest 'data' => 'required|array', ]; } + + protected function failedValidation(Validator $validator) + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + + throw new HttpResponseException($response); + } } From e72d6eb308ba62a97dbedcd197ad15af9bb11766 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 22 Oct 2025 13:09:33 +0330 Subject: [PATCH 08/54] create form request ane new item for harim --- .../Harim/GeneralManagerController.php | 4 +-- .../Dashboard/Harim/HarimOfficeController.php | 27 +++++++++++++++- .../Harim/TechnicalDeputyController.php | 2 +- .../Dashboard/Harim/Deputy/ConfirmRequest.php | 2 +- .../Harim/Deputy/ConfirmRoadAccessRequest.php | 2 +- .../Dashboard/Harim/Deputy/ReferRequest.php | 2 +- .../Harim/Deputy/ReferRoadAccessRequest.php | 2 +- .../V3/Dashboard/Harim/Deputy/ShowRequest.php | 2 +- .../ConfirmGuaranteeLetterNeedRequest.php | 2 +- .../ConfirmNoRoadAccessNeedRequest.php | 2 +- .../ConfirmRoadAccessEditNeedRequest.php | 2 +- .../ConfirmRoadAccessNeedRequest.php | 2 +- .../Harim/GeneralManager/ReferFileRequest.php | 5 +-- .../Harim/GeneralManager/ReferRequest.php | 5 +-- .../Harim/GeneralManager/RejectRequest.php | 5 +-- .../Harim/GeneralManager/ShowRequest.php | 2 +- .../Harim/HarimOffice/FileAcceptedRequest.php | 2 +- .../Harim/HarimOffice/FileRejectedRequest.php | 2 +- .../HarimOffice/NeedRoadAccessRequest.php | 2 +- .../Harim/HarimOffice/ReferRequest.php | 31 +++++++++++++++++++ .../Harim/HarimOffice/RejectRequest.php | 2 +- .../Harim/HarimOffice/ShowRequest.php | 2 +- .../HarimOffice/WithoutRoadAccessRequest.php | 2 +- routes/v3.php | 1 + 24 files changed, 86 insertions(+), 26 deletions(-) create mode 100644 app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index 73685ed5..f2e2971f 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -32,9 +32,9 @@ class GeneralManagerController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + ->where('province_id', '=', auth()->user()->province_id); - $data = DataTableFacade::run( + $data = DataTableFacade::run( $query, $request, allowedFilters: ['*'], diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 242aa8d7..f739317a 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -8,6 +8,7 @@ use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileAcceptedRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\RejectRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ShowRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest; @@ -26,7 +27,7 @@ class HarimOfficeController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + ->where('province_id', '=', auth()->user()->province_id); $data = DataTableFacade::run( $query, @@ -64,6 +65,30 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + public function referRequest(ReferRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request,$harim) { + $action = HarimAction::REFER->value; + + $harim->histories()->create([ + 'expert_id' => auth()->user()->id, + 'previous_state_id' => $harim->state_id, + 'previous_state_name' => $harim->state_name, + 'expert_description' => $request->expert_description, + 'action_id' => $action, + 'action_name' => HarimAction::name($action), + ]); + + $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; + + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + + return $this->successResponse(); + } public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index b9004306..646a87b8 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -23,7 +23,7 @@ class TechnicalDeputyController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('edareh_shahri_id', '=', auth()->user()->edarate_shahri_id); + ->where('province_id', '=', auth()->user()->province_id); $data = DataTableFacade::run( $query, diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php index f754eb14..732e9418 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php @@ -12,7 +12,7 @@ class ConfirmRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MOAVEN->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php index 119e6524..667b6e72 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php @@ -13,7 +13,7 @@ class ConfirmRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php index 335de432..267b9347 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php @@ -12,7 +12,7 @@ class ReferRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MOAVEN->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php index 3cd3e81c..18209903 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php @@ -12,7 +12,7 @@ class ReferRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php index f23097b6..5e91af0c 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php @@ -12,7 +12,7 @@ class ShowRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; + return $this->harim->province_id == auth()->user()->province_id; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php index 6c943ebe..8bbc5e5d 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php @@ -12,7 +12,7 @@ class ConfirmGuaranteeLetterNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php index 94a60116..8a43cb52 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php @@ -12,7 +12,7 @@ class ConfirmNoRoadAccessNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php index 5d4649f5..d42fd1ad 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php @@ -12,7 +12,7 @@ class ConfirmRoadAccessEditNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php index 9176609a..8763cc5f 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php @@ -12,7 +12,7 @@ class ConfirmRoadAccessNeedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php index ea8ab9ed..4ab18be5 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferFileRequest extends FormRequest @@ -12,14 +13,14 @@ class ReferFileRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php index 931578ee..7d881cc6 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRequest extends FormRequest @@ -12,14 +13,14 @@ class ReferRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php index 1d90ab5d..92bd37e0 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/RejectRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RejectRequest extends FormRequest @@ -12,14 +13,14 @@ class RejectRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_MODIR_KOL->value; } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php index 22904351..a432ac99 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php @@ -12,7 +12,7 @@ class ShowRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; + return $this->harim->province_id == auth()->user()->province_id; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php index 018d7de9..51c33c30 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php @@ -12,7 +12,7 @@ class FileAcceptedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php index 5a95a458..9fb3966f 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php @@ -12,7 +12,7 @@ class FileRejectedRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php index e7dd187a..927fbd74 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php @@ -12,7 +12,7 @@ class NeedRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php new file mode 100644 index 00000000..fa12cae2 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ReferRequest.php @@ -0,0 +1,31 @@ +harim->province_id === auth()->user()->province_id && + $this->harim->state_id === HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php index b072d879..37805379 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php @@ -12,7 +12,7 @@ class RejectRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php index 375a5581..332743a1 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php @@ -13,7 +13,7 @@ class ShowRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; + return $this->harim->province_id == auth()->user()->province_id; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php index 17cb99e1..619bd34c 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php @@ -12,7 +12,7 @@ class WithoutRoadAccessRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id && + return $this->harim->province_id == auth()->user()->province_id && $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } diff --git a/routes/v3.php b/routes/v3.php index 4496e71f..ae1d584f 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -550,6 +550,7 @@ Route::prefix('harim') Route::post('/file_accepted/{harim}', 'fileAccepted')->name('fileAccepted'); Route::post('/file_rejected/{harim}', 'fileRejected')->name('fileRejected'); Route::get('/{harim}', 'show')->name('show'); + Route::post('/refer_request/{harim}', 'referRequest')->name('referRequest'); }); Route::prefix('technical_deputy') From 6dfb6bafd57a3d4d637ada6a289fefec6a1e6d09 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 22 Oct 2025 14:58:50 +0330 Subject: [PATCH 09/54] create 3 enum for harim --- app/Enums/HarimPosition.php | 17 +++++++++++++++++ app/Enums/HarimRoadType.php | 19 +++++++++++++++++++ app/Enums/HarimTerafic.php | 22 ++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 app/Enums/HarimPosition.php create mode 100644 app/Enums/HarimRoadType.php create mode 100644 app/Enums/HarimTerafic.php diff --git a/app/Enums/HarimPosition.php b/app/Enums/HarimPosition.php new file mode 100644 index 00000000..0d54933b --- /dev/null +++ b/app/Enums/HarimPosition.php @@ -0,0 +1,17 @@ + 1.0, + self::FASELEH_AZ_MARKAZ_SHAHR_5_KM => 1.5, + }; + } +} diff --git a/app/Enums/HarimRoadType.php b/app/Enums/HarimRoadType.php new file mode 100644 index 00000000..2f86d44c --- /dev/null +++ b/app/Enums/HarimRoadType.php @@ -0,0 +1,19 @@ + 1.0, + self::ASLI_VA_BOZORGRAH => 1.5, + self::AZADRAH => 2.0, + }; + } +} \ No newline at end of file diff --git a/app/Enums/HarimTerafic.php b/app/Enums/HarimTerafic.php new file mode 100644 index 00000000..304aebf3 --- /dev/null +++ b/app/Enums/HarimTerafic.php @@ -0,0 +1,22 @@ + 1.0, + self::MOTEVASET => 1.5, + self::SANGIN => 2.0, + }; + } +} + From 0b3ade503ba8288d121f0cb45fe20efdf87e7128 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 22 Oct 2025 15:14:57 +0330 Subject: [PATCH 10/54] change name enum --- app/Enums/HarimPosition.php | 2 +- app/Enums/HarimRoadType.php | 2 +- app/Enums/HarimTerafic.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Enums/HarimPosition.php b/app/Enums/HarimPosition.php index 0d54933b..d28968c8 100644 --- a/app/Enums/HarimPosition.php +++ b/app/Enums/HarimPosition.php @@ -7,7 +7,7 @@ enum HarimPosition : string case FASELEH_AZ_MARKAZ_OSTAN_10_KM = 'به فاصله 10 کیلومتری از مراکز استان ها'; case FASELEH_AZ_MARKAZ_SHAHR_5_KM = 'به فاصله 5 کیلومتری از سایر شهر ها'; - public function value(): float + public function amount(): float { return match ($this) { self::FASELEH_AZ_MARKAZ_OSTAN_10_KM => 1.0, diff --git a/app/Enums/HarimRoadType.php b/app/Enums/HarimRoadType.php index 2f86d44c..cc1ae0c8 100644 --- a/app/Enums/HarimRoadType.php +++ b/app/Enums/HarimRoadType.php @@ -8,7 +8,7 @@ enum HarimRoadType : string case ASLI_VA_BOZORGRAH = 'اصلی و بزرگراه'; case AZADRAH = 'آزادراه'; - public function value(): float + public function amount(): float { return match ($this) { self::FARE_VA_RAH_AHAN => 1.0, diff --git a/app/Enums/HarimTerafic.php b/app/Enums/HarimTerafic.php index 304aebf3..f841223d 100644 --- a/app/Enums/HarimTerafic.php +++ b/app/Enums/HarimTerafic.php @@ -10,7 +10,7 @@ enum HarimTerafic : string - public function value(): float + public function amount(): float { return match ($this) { self::SABOK => 1.0, From a542914cc3943640672be4ef13ca48ce1fa646bb Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 25 Oct 2025 10:35:08 +0330 Subject: [PATCH 11/54] create new option for this project and dependency for this object --- .../V3/Dashboard/RoleManagementController.php | 71 ++++++++++++++++ .../V3/Dashboard/UserManagementController.php | 85 ++----------------- .../Dashboard/RoleManageMent/StoreRequest.php | 30 +++++++ .../RoleManageMent/UpdateRequest.php | 30 +++++++ app/Services/Cartables/Role/RoleService.php | 25 ++++++ routes/v3.php | 11 +++ 6 files changed, 172 insertions(+), 80 deletions(-) create mode 100644 app/Http/Controllers/V3/Dashboard/RoleManagementController.php create mode 100644 app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php create mode 100644 app/Services/Cartables/Role/RoleService.php diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php new file mode 100644 index 00000000..66e1c2db --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -0,0 +1,71 @@ +dataTable($request); + return response()->json($data); + } + + public function store(StoreRequest $request) + { + auth()->user()->addActivityComplete(1043); + + $role = Role::create([ + 'name' => time(), + 'name_fa' => $request->role_name, + 'description' => $request->description + ]); + + $permissions = $request->permissions; + + $role->givePermissionTo($permissions); + + return $this->successResponse($role); + + } + public function update(UpdateRequest $request, Role $role) + { + auth()->user()->addActivityComplete(1044); + + $updateRole = $role->update([ + 'name_fa' => $request->role_name, + 'description' => $request->description + ]); + + $permissions = $request->permissions; + + $role->syncPermissions($permissions); + + return $this->successResponse($role); + + } + + public function show(Role $role) + { + + return $this->successResponse($role); + + } + + public function delete(Role $role) + { + auth()->user()->addActivityComplete(1045); + + + return $this->successResponse($role); + + } +} diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index d56b0753..c4f3474a 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -35,9 +35,7 @@ class UserManagementController extends Controller // } public function indexUser(Request $request) { - if (auth()->user()) { - auth()->user()->addActivityComplete(1038); - } + auth()->user()->addActivityComplete(1038); $province = $request->province ?? null; $city = $request->city ?? null; @@ -85,16 +83,13 @@ class UserManagementController extends Controller 'message' => 'Forbidden' ], 403); } - - return response()->json([ - 'status' => '200', - 'message' => 'success', - 'data' => $users, - ], 200); + return $this->successResponse($users); } public function store(StoreRequest $request): jsonResponse { + auth()->user()->addActivityComplete(1039); + User::query()->create([ 'username' => $request->username, 'national_code' => $request->national_code, @@ -139,78 +134,8 @@ class UserManagementController extends Controller $user->national_code = $request->national_code; $user->save(); - if (auth()->user()) { - auth()->user()->addActivityComplete(1039, $user); - } - return response()->json([ - 'message' => 'success', - 'data' => $user - ], 200); - } - - public function editRole(Request $request, $id) - { - $request->validate([ - 'role_name' => 'required|string', - 'permissions' => 'required' - ], [ - 'permissions.required' => 'انتخاب دسترسی‌ها الزامی است.', - 'role_name.required' => 'نام نقش الزامی است.' - ]); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1044); - } - $role = Role::find($id); - - - $updateRole = $role->update([ - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); - - $permissions = $request->permissions; - // $permissions = explode(",", $request->permissions); - - $role->syncPermissions($permissions); - - return response()->json([ - 'message' => 'success', - 'data' => $role - ]); - } - - - public function createRole(Request $request) - { - $request->validate([ - 'role_name' => 'required|string', - 'permissions' => 'required' - ], [ - 'permissions.required' => 'انتخاب دسترسی‌ها الزامی است.', - 'role_name.required' => 'نام نقش الزامی است.' - ]); - - if (auth()->user()) { - auth()->user()->addActivityComplete(1043); - } - - $role = Role::create([ - 'name' => time(), - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); - - $permissions = $request->permissions; - - // $permissions = explode(",", $request->permissions); - $role->givePermissionTo($permissions); - - return response()->json([ - 'message' => 'success', - 'data' => $role - ]); + return $this->successResponse($user); } public function show(User $user) diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php new file mode 100644 index 00000000..8db12433 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'role_name' => 'required|string', + 'permissions' => 'required' + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php new file mode 100644 index 00000000..1aaffa2b --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'role_name' => 'required|string', + 'permissions' => 'required' + ]; + } +} diff --git a/app/Services/Cartables/Role/RoleService.php b/app/Services/Cartables/Role/RoleService.php new file mode 100644 index 00000000..6ae4bdf6 --- /dev/null +++ b/app/Services/Cartables/Role/RoleService.php @@ -0,0 +1,25 @@ +name('changePassword'); Route::post('delete-role/{id}', 'deleteRole')->name('deleteRole'); }); +Route::prefix('role') + ->name('role.') + ->controller(RoleManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + Route::get('/{role}', 'show')->name('show'); + Route::post('/', 'store')->name('store'); + Route::post('/{role}', 'update')->name('update'); + Route::delete('/{role}', 'destroy')->name('destroy'); + }); Route::get('/test', function () { $csvExporter = new \Laracsv\Export(); From 0272aa0c9fcda0f2871122034ac4d886a9aa5ca5 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 25 Oct 2025 15:00:38 +0330 Subject: [PATCH 12/54] fix and improve the code --- .../V3/Dashboard/RoleManagementController.php | 76 ++++++++++++------- .../Dashboard/RoleManageMent/StoreRequest.php | 8 +- .../RoleManageMent/UpdateRequest.php | 9 ++- app/Services/Cartables/Role/RoleService.php | 4 +- routes/v3.php | 2 +- 5 files changed, 65 insertions(+), 34 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php index 66e1c2db..1461bb54 100644 --- a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -2,70 +2,92 @@ namespace App\Http\Controllers\V3\Dashboard; +use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\RoleManageMent\StoreRequest; use App\Http\Requests\V3\Dashboard\RoleManageMent\UpdateRequest; +use App\Http\Traits\ApiResponse; use App\Models\Role; use App\Services\Cartables\Role\RoleService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; +use Throwable; class RoleManagementController extends Controller { - public function index(Request $request ,RoleService $roleService): JsonResponse + use ApiResponse; + + public function index(Request $request): JsonResponse { - $data = $roleService->dataTable($request); + $data = DataTableFacade::run( + Role::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'name', 'name_fa', 'description', 'for_report'] + ); return response()->json($data); } - public function store(StoreRequest $request) + /** + * @throws Throwable + */ + public function store(StoreRequest $request): JsonResponse { auth()->user()->addActivityComplete(1043); - $role = Role::create([ - 'name' => time(), - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); + $role = DB::transaction(function () use ($request) + { + $role = Role::create([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'guard_name' => 'web', + 'for_report' => $request->for_report, + ]); - $permissions = $request->permissions; - - $role->givePermissionTo($permissions); + $role->givePermissionTo($request->permissions); + }); return $this->successResponse($role); - } - public function update(UpdateRequest $request, Role $role) + + /** + * @throws Throwable + */ + public function update(UpdateRequest $request, Role $role): JsonResponse { auth()->user()->addActivityComplete(1044); - $updateRole = $role->update([ - 'name_fa' => $request->role_name, - 'description' => $request->description - ]); + DB::transaction(function () use ($request, $role) + { + $role->update([ + 'name' => $request->name, + 'name_fa' => $request->name_fa, + 'description' => $request->description, + 'guard_name' => 'web', + 'for_report' => $request->for_report, + ]); - $permissions = $request->permissions; - - $role->syncPermissions($permissions); + $role->syncPermissions($request->permissions); + }); return $this->successResponse($role); - } - public function show(Role $role) + public function show(Role $role): JsonResponse { - return $this->successResponse($role); - } - public function delete(Role $role) + public function delete(Role $role): JsonResponse { auth()->user()->addActivityComplete(1045); + $role->delete(); - return $this->successResponse($role); - + return $this->successResponse(); } } diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php index 8db12433..27e725b6 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -23,8 +23,12 @@ class StoreRequest extends FormRequest public function rules(): array { return [ - 'role_name' => 'required|string', - 'permissions' => 'required' + 'name' => 'required|string|unique:roles,name', + 'name_fa' => 'required|string', + 'description' =>'string', + 'for_report' => 'in:0,1', + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id' ]; } } diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php index 1aaffa2b..615b3ff6 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\V3\Dashboard\RoleManageMent; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class UpdateRequest extends FormRequest { @@ -23,8 +24,12 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ - 'role_name' => 'required|string', - 'permissions' => 'required' + 'name' => ['required', 'string', 'max:255',Rule::unique('roles','name')->ignore($this->role->id)], + 'name_fa' => 'required|string', + 'description' =>'string', + 'for_report' => 'in:0,1', + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id' ]; } } diff --git a/app/Services/Cartables/Role/RoleService.php b/app/Services/Cartables/Role/RoleService.php index 6ae4bdf6..c43adb95 100644 --- a/app/Services/Cartables/Role/RoleService.php +++ b/app/Services/Cartables/Role/RoleService.php @@ -12,14 +12,14 @@ use Illuminate\Support\Facades\DB; class RoleService { - public function dataTable(Request $request) + public function dataTable(Request $request): array { return DataTableFacade::run( Role::query(), $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['*'] + allowedSelects: ['id', 'name', 'name_fa', 'guard_name', 'description', 'for_report'] ); } } diff --git a/routes/v3.php b/routes/v3.php index 187c66fd..e53bbf69 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -613,8 +613,8 @@ Route::prefix('role') ->controller(RoleManagementController::class) ->group(function () { Route::get('/', 'index')->name('index'); - Route::get('/{role}', 'show')->name('show'); Route::post('/', 'store')->name('store'); + Route::get('/{role}', 'show')->name('show'); Route::post('/{role}', 'update')->name('update'); Route::delete('/{role}', 'destroy')->name('destroy'); }); From 3a18048ceed8f1857309c3557b2130f06f25e424 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 25 Oct 2025 15:04:18 +0330 Subject: [PATCH 13/54] fix and improve the code --- .../V3/Dashboard/RoleManagementController.php | 4 +-- .../Dashboard/RoleManageMent/StoreRequest.php | 1 - .../RoleManageMent/UpdateRequest.php | 1 - app/Services/Cartables/Role/RoleService.php | 25 ------------------- 4 files changed, 1 insertion(+), 30 deletions(-) delete mode 100644 app/Services/Cartables/Role/RoleService.php diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php index 1461bb54..ccc3caac 100644 --- a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -26,7 +26,7 @@ class RoleManagementController extends Controller $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['id', 'name', 'name_fa', 'description', 'for_report'] + allowedSelects: ['id', 'name', 'name_fa', 'description'] ); return response()->json($data); } @@ -45,7 +45,6 @@ class RoleManagementController extends Controller 'name_fa' => $request->name_fa, 'description' => $request->description, 'guard_name' => 'web', - 'for_report' => $request->for_report, ]); $role->givePermissionTo($request->permissions); @@ -68,7 +67,6 @@ class RoleManagementController extends Controller 'name_fa' => $request->name_fa, 'description' => $request->description, 'guard_name' => 'web', - 'for_report' => $request->for_report, ]); $role->syncPermissions($request->permissions); diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php index 27e725b6..4f628943 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -26,7 +26,6 @@ class StoreRequest extends FormRequest 'name' => 'required|string|unique:roles,name', 'name_fa' => 'required|string', 'description' =>'string', - 'for_report' => 'in:0,1', 'permissions' => 'array', 'permissions.*' => 'integer|exists:permissions,id' ]; diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php index 615b3ff6..c2ced356 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -27,7 +27,6 @@ class UpdateRequest extends FormRequest 'name' => ['required', 'string', 'max:255',Rule::unique('roles','name')->ignore($this->role->id)], 'name_fa' => 'required|string', 'description' =>'string', - 'for_report' => 'in:0,1', 'permissions' => 'array', 'permissions.*' => 'integer|exists:permissions,id' ]; diff --git a/app/Services/Cartables/Role/RoleService.php b/app/Services/Cartables/Role/RoleService.php deleted file mode 100644 index c43adb95..00000000 --- a/app/Services/Cartables/Role/RoleService.php +++ /dev/null @@ -1,25 +0,0 @@ - Date: Sat, 25 Oct 2025 15:32:16 +0330 Subject: [PATCH 14/54] fix code --- .../Controllers/V3/Dashboard/RoleManagementController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php index ccc3caac..e6fb35a9 100644 --- a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -72,7 +72,7 @@ class RoleManagementController extends Controller $role->syncPermissions($request->permissions); }); - return $this->successResponse($role); + return $this->successResponse(); } public function show(Role $role): JsonResponse @@ -80,7 +80,7 @@ class RoleManagementController extends Controller return $this->successResponse($role); } - public function delete(Role $role): JsonResponse + public function destroy(Role $role): JsonResponse { auth()->user()->addActivityComplete(1045); From 71f5001477c3e40c9d9645225b8847e17fc0a767 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 26 Oct 2025 14:14:05 +0330 Subject: [PATCH 15/54] create new userManagement --- .../V3/Dashboard/UserManagementController.php | 245 ++++++------------ .../UserManagement/GivePermissionRequest.php | 30 +++ .../UserManagement/GiveRoleRequest.php | 30 +++ .../UserManagement/UpdateRequest.php | 3 +- app/Models/Harim.php | 2 +- app/Models/User.php | 5 +- routes/v3.php | 17 +- 7 files changed, 158 insertions(+), 174 deletions(-) create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index c4f3474a..49f27396 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers\V3\Dashboard; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; use App\Http\Requests\V3\Dashboard\UserManagement\PermissionUpdateRequest; use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest; use App\Http\Requests\V3\Dashboard\UserManagement\UpdateRequest; @@ -25,15 +27,8 @@ use Illuminate\Support\Facades\Storage; class UserManagementController extends Controller { use ApiResponse; -// public function index() -// { -// if (Auth::user()->can('full-user-managment') || Auth::user()->can('limited-user-management')) { -// return view('version2.dashboard_pages.user_management.list'); -// } -// -// abort(403); -// } - public function indexUser(Request $request) + + public function index(Request $request) { auth()->user()->addActivityComplete(1038); @@ -88,25 +83,28 @@ class UserManagementController extends Controller public function store(StoreRequest $request): jsonResponse { - auth()->user()->addActivityComplete(1039); + $user = auth()->user(); + + $user ->addActivityComplete(1039); User::query()->create([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'city_id' => $request->city_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); - $user = new User(); - $user->username = $request->username; - - $user->province_id = $request->province_id == 0 ? null : $request->province_id; $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_id = $request->city_id == 0 ? null : $request->city_id; $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; if ($request->edarate_ostani_id != 'null') { @@ -132,8 +130,6 @@ class UserManagementController extends Controller $user->password = Hash::make($request->password); $user->national_code = $request->national_code; - $user->save(); - return $this->successResponse($user); } @@ -141,39 +137,37 @@ class UserManagementController extends Controller public function show(User $user) { $user = User::where('id', $user->id)->with(['roles', 'permissions'])->get(); - return response()->json([ - 'status' => '200', - 'message' => 'success', - 'data' => $user - ], 200); + return $this->successResponse($user); } public function update(UpdateRequest $request, User $user): JsonResponse { + auth()->user()->addActivityComplete(1040); + $user->update([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'city_id' => $request->city_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); - $user->province_id = $request->province_id == 0 ? null : $request->province_id; $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_id = $request->city_id == 0 ? null : $request->city_id; $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; - if ($request->edarate_ostani_id != "null") { + if ($request->edarate_ostani_id != 'null') { $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; $user->edarate_ostani_id = $request->edarate_ostani_id; $user->edarate_ostani_name = $temp; - - $user->edarate_shahri_id = null; - $user->edarate_shahri_name = null; - if ($request->province_id == 0) { $user->name = $temp .' '. $user->province_fa; } else { @@ -183,8 +177,7 @@ class UserManagementController extends Controller $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; $user->edarate_shahri_id = $request->edarate_shahri_id; $user->edarate_shahri_name = $temp; - $user->edarate_ostani_id = null; - $user->edarate_ostani_name = null; + if ($request->province_id == 0) { $user->name = $temp .' '. $user->province_fa; } else { @@ -192,40 +185,58 @@ class UserManagementController extends Controller } } - $user->first_name = $request->first_name; - $user->last_name = $request->last_name; - $user->position = $request->position; - $user->mobile = $request->mobile; - $user->degree = $request->degree; - $user->major = $request->major; - $user->national_code = $request->national_code; - if (!is_null($request->password)) { - $request->validate([ - 'password' => ['string'] - ]); $user->password = Hash::make($request->password); } - if (! $request->permissions == null) { + if (!is_null($request->permissions)) { $user->syncPermissions(explode(",", $request->permissions)); } - $roles = $request->only('roles'); - if (! $roles == null) { - $user->syncRoles($roles); + if ($request->filled('roles')) { + $user->syncRoles($request->roles); } $user->save(); - if (auth()->user()) { - auth()->user()->addActivityComplete(1040, $user); - } + return $this->successResponse($user); + } - return response()->json([ - 'message' => 'success', - 'data' => $user - ]); + public function destroy(User $user) + { + $user->delete(); + return $this->successResponse(); + } + + public function givePermissionsTo(GivePermissionRequest $request,User $user): JsonResponse + { + + $user->givePermissionTo($request->permissions); + + return $this->successResponse($user->load('permissions')); + } + + public function givePermissionsToRole(GivePermissionRequest $request, Role $role): JsonResponse + { + $permissionId = $request->permissions; + $role->syncPermissions($permissionId); + + return $this->successResponse($role->load('permissions')); + } + public function giveRolesToUser(GiveRoleRequest $request, User $user): JsonResponse + { + $roles = $request->roles; + + $user->assignRole($roles); + + return $this->successResponse($user->load('roles')); + } + + public function getUserPermissions(): JsonResponse + { + $userPermissions = Auth::user()->getUserPermissions(); + + return $this->successResponse($userPermissions); } public function activityReport() @@ -254,9 +265,8 @@ class UserManagementController extends Controller User::whereIn('id', $user_ids)->update([ 'confirmed' => $request->confirm ]); - return response()->json([ - 'status' => 'succeed', - ]); + return $this->successResponse(); + } public function changePassword(User $user, Request $request) @@ -266,70 +276,9 @@ class UserManagementController extends Controller ]); $user->password = Hash::make($request->password); $user->save(); - return response()->json(['message' => "password changed successfully!!!!"], 200); + return $this->successResponse(); } - public function givePermissionsTo(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - 'permission_ids' => 'required', - ]); - - $user_ids = explode(",", $request->user_ids); - $permission_ids = $request->permission_ids; - - User::whereIn('id', $user_ids)->get()->each(function ($user) use ($permission_ids) { - $user->syncPermissions($permission_ids); - }); - - return response()->json([ - 'status' => 'succeed', - 'message' => 'permissions assigned to users succussfully.' - ]); - } - - public function destroy(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - ]); - - $user_ids = explode(',', $request->user_ids); - - foreach ($user_ids as $id) { - $user = User::find($id); - - if ($user->avatar) { - if (Storage::disk('public')->exists(str_replace('storage/', '', $user->avatar))) { - Storage::disk('public')->delete(str_replace('storage/', '', $user->avatar)); - } - } - - if ($user->photo) { - if (Storage::disk('public')->exists(str_replace('storage/', '', $user->photo))) { - Storage::disk('public')->delete(str_replace('storage/', '', $user->photo)); - } - } - - $user->delete(); - } - - return response()->json([ - 'status' => 200, - 'message' => 'The users deleted succussfully.' - ]); - } - - public function getUserPermissions() - { - $userPermissions = Auth::user()->getUserPermissions(); - - return response()->json([ - 'message' => 'success', - 'data' => $userPermissions - ]); - } public function getUserSummaryReport(Request $request, User $user) { @@ -650,43 +599,15 @@ class UserManagementController extends Controller ]); } - public function showAllRoles(Request $request) - { - $roles = Role::where('for_report', 0)->get(); - - return response()->json([ - 'message' => 'success', - 'data' => $roles - ]); - } - - public function deleteRole(Request $request, $id) - { - if (auth()->user()) { - auth()->user()->addActivityComplete(1045); - } - $role = Role::find($id)->delete(); - - return response()->json([ - 'message' => 'success', - 'data' => 1 - ]); - } public function changeUserEnabeld(User $user) { if (Auth::user()->checkUserHasPermission('full-user-management')) { $user->enabled = !$user->enabled; - $user->save(); - return response()->json([ - 'message' => 'success' - ], 200); + return $this->successResponse($user); } elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) { $user->enabled = !$user->enabled; - $user->save(); - return response()->json([ - 'message' => 'success' - ], 200); + return $this->successResponse(); } else { return response()->json([ 'message' => 'Forbidden' diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php new file mode 100644 index 00000000..9688af47 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'permissions' => 'array', + 'permissions.*' => 'integer|exists:permissions,id' + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php new file mode 100644 index 00000000..b31b77c9 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'roles' => 'array', + 'roles.*' => 'integer|exists:permissions,id' + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index d831991c..7cf11e76 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 96bc4cc2..8e68d219 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -17,7 +17,7 @@ class Harim extends Model return $this->hasMany(HarimHistory::class); } - protected function polygon(): Attribute + protected function primaryArea(): Attribute { return Attribute::make( get: fn($value) => json_decode($value) diff --git a/app/Models/User.php b/app/Models/User.php index fd7d404d..f640db88 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -26,7 +26,10 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', 'email', 'major', 'password', 'username', 'first_name', 'last_name', 'position', 'mobile', 'province_id', 'city_id', 'confirmed', 'enabled', 'avatar', 'city_fa', 'province_fa', 'degree' + 'name', 'email', 'major', 'password', 'username', 'first_name', 'last_name', 'position', 'mobile', 'province_id', 'city_id', 'confirmed', 'enabled', 'avatar', 'city_fa', 'province_fa', 'degree', + 'national_code', + 'edarate_ostani_id', + 'edarate_shahri_id' ]; /** diff --git a/routes/v3.php b/routes/v3.php index e53bbf69..3e66d40b 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -587,7 +587,14 @@ Route::prefix('user_management') ->controller(UserManagementController::class) ->group(function () { // Route::get('/', 'index')->name('index'); - Route::get('/index_user', 'indexUser')->name('indexUser'); + Route::get('/', 'index')->name('index'); + Route::post('/', 'store')->name('store'); + Route::get('/{user}', 'show')->name('show'); + Route::post('/{user}', 'update')->name('update'); + Route::delete('/{user}', 'destroy')->name('destroy'); + Route::post('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo'); + Route::post('/give_permissions_to_role', 'givePermissionsToRole')->name('givePermissionsToRole'); + Route::post('/give_roles_to_user','giveRolesToUser')->name('giveRolesToUser'); Route::get('/activity_report', 'activityReport')->name('activityReport'); Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs'); Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus'); @@ -597,16 +604,8 @@ Route::prefix('user_management') Route::get('/print_group', 'printGroup')->name('printGroup'); Route::get('/user_permission', 'userPermission')->name('userPermission'); Route::get('/assign_permission', 'assignPermission')->name('assignPermission'); - Route::get('/show_all_roles', 'showAllRoles')->name('showAllRoles'); Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld'); - Route::post('/','store')->name('store'); - Route::post('/create_role','createRole')->name('createRole'); - Route::post('/edit_role','editRole')->name('editRole'); - Route::get('/{user}', 'show')->name('show'); - Route::post('/{user}', 'update')->name('update'); - Route::delete('/{user}', 'destroy')->name('destroy'); Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); - Route::post('delete-role/{id}', 'deleteRole')->name('deleteRole'); }); Route::prefix('role') ->name('role.') From b155db758aff0753354e204f1abe1e111185b20d Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 27 Oct 2025 13:20:14 +0330 Subject: [PATCH 16/54] improve code in controller and form request for V3 whit pint package --- .../RoadObservation/CountryCartableReport.php | 2 +- .../ProvinceCartableReport.php | 2 +- .../Controllers/V3/Auth/LogoutController.php | 5 +- .../V3/DamageManagementController.php | 16 +- .../Accident/AccidentReceiptController.php | 35 +-- .../AccidentReceiptReportController.php | 8 +- .../Dashboard/Azmayesh/AzmayeshController.php | 14 +- .../Azmayesh/AzmayeshSampleController.php | 7 +- .../Azmayesh/AzmayeshTypeController.php | 25 +- .../V3/Dashboard/Harim/DetailController.php | 1 - .../Harim/GeneralManagerController.php | 31 +-- .../Dashboard/Harim/HarimOfficeController.php | 34 +-- .../Harim/PanjareVahedController.php | 8 +- .../Harim/ProvinceOfficeController.php | 7 +- .../Harim/TechnicalDeputyController.php | 23 +- .../Mission/ControlUnitController.php | 9 +- .../V3/Dashboard/Mission/DetailController.php | 3 +- .../Mission/RequestPortalController.php | 29 +-- .../Mission/TransportationUnitController.php | 10 +- .../V3/Dashboard/ObservedItemController.php | 7 +- .../V3/Dashboard/OtpManagementController.php | 1 - .../Dashboard/RoadItem/DetailController.php | 1 - .../Dashboard/RoadItem/OperatorController.php | 28 +-- .../Dashboard/RoadItem/ReportController.php | 26 ++- .../RoadItem/SupervisorController.php | 7 +- .../RoadMaintenanceStationController.php | 29 ++- .../RoadObservation/OperatorController.php | 19 +- .../RoadObservation/ReportController.php | 26 ++- .../RoadObservation/SupervisorController.php | 5 +- .../Dashboard/RoadPatrol/DetailController.php | 8 +- .../RoadPatrol/OperatorController.php | 26 +-- .../Dashboard/RoadPatrol/ReportController.php | 23 +- .../RoadPatrol/SupervisorController.php | 3 +- .../V3/Dashboard/RoleManagementController.php | 11 +- .../SafetyAndPrivacy/OperatorController.php | 17 +- .../AccessRoadActivityController.php | 8 +- .../ConstructionActivityController.php | 8 +- .../UtilityPassingActivityController.php | 7 +- .../SafetyAndPrivacy/SupervisorController.php | 4 +- .../SupervisorReportController.php | 13 -- .../V3/Dashboard/UserManagementController.php | 214 +++++++++--------- .../V3/FMSVehicleManagementController.php | 7 +- .../V3/Harim/DivarkeshiController.php | 12 +- .../V3/LogListManagementController.php | 4 +- .../Controllers/V3/NotificationController.php | 49 ++-- .../V3/PermissionManagementController.php | 2 + app/Http/Controllers/V3/ProfileController.php | 24 +- .../Controllers/V3/RahdaranController.php | 10 +- .../V3/WebServices/RoadItemController.php | 1 + .../RoadMaintenanceStationController.php | 9 +- .../AccidentReceipt/ChangeStatusRequest.php | 4 +- .../ConfirmPaymentInfoRequest.php | 10 +- .../V3/AccidentReceipt/StoreRequest.php | 5 +- .../AccidentReceipt/SubmitInvoiceRequest.php | 3 +- .../V3/AccidentReceipt/UpdateRequest.php | 3 +- .../Requests/V3/Azmayesh/StoreRequest.php | 3 +- .../Requests/V3/Azmayesh/UpdateRequest.php | 3 +- .../V3/AzmayeshSample/StoreRequest.php | 3 +- .../V3/AzmayeshSample/UpdateRequest.php | 3 +- .../Requests/V3/AzmayeshType/StoreRequest.php | 3 +- .../V3/AzmayeshType/UpdateRequest.php | 3 +- app/Http/Requests/V3/Damage/StoreRequest.php | 9 +- app/Http/Requests/V3/Damage/UpdateRequest.php | 6 +- .../Dashboard/Harim/Deputy/ConfirmRequest.php | 3 +- .../Dashboard/Harim/Deputy/ReferRequest.php | 3 +- .../Harim/Deputy/ReferRoadAccessRequest.php | 3 +- .../V3/Dashboard/Harim/Deputy/ShowRequest.php | 4 +- .../ConfirmGuaranteeLetterNeedRequest.php | 3 +- .../ConfirmNoRoadAccessNeedRequest.php | 3 +- .../ConfirmRoadAccessEditNeedRequest.php | 3 +- .../ConfirmRoadAccessNeedRequest.php | 3 +- .../Harim/GeneralManager/ShowRequest.php | 4 +- .../Harim/HarimOffice/FileAcceptedRequest.php | 3 +- .../Harim/HarimOffice/FileRejectedRequest.php | 3 +- .../HarimOffice/NeedRoadAccessRequest.php | 3 +- .../Harim/HarimOffice/RejectRequest.php | 4 +- .../Harim/HarimOffice/ShowRequest.php | 2 - .../HarimOffice/WithoutRoadAccessRequest.php | 3 +- .../Harim/ProvinceOffice/FeedBackRequest.php | 3 +- .../Harim/ProvinceOffice/ShowRequest.php | 5 +- .../Dashboard/RoleManageMent/StoreRequest.php | 4 +- .../RoleManageMent/UpdateRequest.php | 6 +- .../UserManagement/GivePermissionRequest.php | 2 +- .../UserManagement/GiveRoleRequest.php | 2 +- .../Dashboard/UserManagement/StoreRequest.php | 3 +- .../UserManagement/UpdateRequest.php | 4 +- .../V3/Harim/Divarkeshi/StoreRequest.php | 8 +- app/Http/Requests/V3/LogList/StoreRequest.php | 9 +- .../Requests/V3/LogList/UpdateRequest.php | 3 +- .../V3/Mission/ControlUnit/StartRequest.php | 4 +- .../RequestPortal/ContinueMissionRequest.php | 9 +- .../RequestPortal/NoProcessRequest.php | 2 +- .../V3/Mission/RequestPortal/StoreRequest.php | 10 +- .../Mission/RequestPortal/UpdateRequest.php | 8 +- .../TransportaionUnit/AllocateRequest.php | 3 +- .../TransportaionUnit/DeallocateRequest.php | 3 +- .../Requests/V3/ObservedItem/StoreRequest.php | 3 +- .../Requests/V3/Otp/GetOtpTokenRequest.php | 5 +- .../Requests/V3/Permission/StoreRequest.php | 3 +- .../Requests/V3/Permission/UpdateRequest.php | 3 +- .../V3/Profile/ChangePasswordRequest.php | 3 +- app/Http/Requests/V3/Profile/EditRequest.php | 5 +- .../V3/RoadItem/Operator/StoreRequest.php | 4 +- .../V3/RoadItem/Operator/UpdateRequest.php | 4 +- .../RoadMaintenanceStation/StoreRequest.php | 9 +- .../RoadMaintenanceStation/UpdateRequest.php | 3 +- .../ModifyRegisterationRequest.php | 3 +- .../V3/RoadObservation/ReferRequest.php | 3 +- .../V3/RoadObservation/RegisterRequest.php | 3 +- .../V3/RoadObservation/RestoreRequest.php | 3 +- .../VerifyBySupervisorRequest.php | 15 +- .../Requests/V3/RoadPatrol/DeleteRequest.php | 5 +- .../V3/SafetyAndPrivacy/FinishRequest.php | 3 +- .../FirstStepStoreRequest.php | 3 +- .../V3/SafetyAndPrivacy/RejectRequest.php | 3 +- .../SecondStepStoreRequest.php | 3 +- .../ThirdStepStoreRequest.php | 3 +- .../V3/SafetyAndPrivacy/UpdateRequest.php | 3 +- 118 files changed, 604 insertions(+), 559 deletions(-) diff --git a/app/Exports/V3/RoadObservation/CountryCartableReport.php b/app/Exports/V3/RoadObservation/CountryCartableReport.php index e46a48ac..ecfa24b0 100644 --- a/app/Exports/V3/RoadObservation/CountryCartableReport.php +++ b/app/Exports/V3/RoadObservation/CountryCartableReport.php @@ -17,7 +17,7 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class CountryCartableReport implements FromView, ShouldAutoSize, WithEvents, WithDrawings { - public function __construct(private Collection $data){} + public function __construct(private array $data){} public function view(): View { diff --git a/app/Exports/V3/RoadObservation/ProvinceCartableReport.php b/app/Exports/V3/RoadObservation/ProvinceCartableReport.php index 57daad87..1d82ae04 100644 --- a/app/Exports/V3/RoadObservation/ProvinceCartableReport.php +++ b/app/Exports/V3/RoadObservation/ProvinceCartableReport.php @@ -17,7 +17,7 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class ProvinceCartableReport implements FromView, ShouldAutoSize, WithEvents, WithDrawings { - public function __construct(private Collection $data){} + public function __construct(private array $data){} public function view(): View { diff --git a/app/Http/Controllers/V3/Auth/LogoutController.php b/app/Http/Controllers/V3/Auth/LogoutController.php index 62c31d08..ab2f77bf 100644 --- a/app/Http/Controllers/V3/Auth/LogoutController.php +++ b/app/Http/Controllers/V3/Auth/LogoutController.php @@ -10,12 +10,13 @@ use Illuminate\Http\Request; class LogoutController extends Controller { use AuthenticatesUsers; + /** * Handle the incoming request. */ public function __invoke(Request $request): JsonResponse { - if($request->session()->exists('last_login')){ + if ($request->session()->exists('last_login')) { $user = auth()->user(); $user->last_login = $request->session()->get('last_login'); $user->save(); @@ -29,7 +30,7 @@ class LogoutController extends Controller $request->session()->regenerateToken(); return response()->json([ - 'message' => 'logged out' + 'message' => 'logged out', ]); } } diff --git a/app/Http/Controllers/V3/DamageManagementController.php b/app/Http/Controllers/V3/DamageManagementController.php index dc075c61..44b97aad 100644 --- a/app/Http/Controllers/V3/DamageManagementController.php +++ b/app/Http/Controllers/V3/DamageManagementController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\V3; use App\Exports\V3\Damage\DamageCartableReport; -use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Damage\StoreRequest; use App\Http\Requests\V3\Damage\UpdateRequest; @@ -19,22 +18,24 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class DamageManagementController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ - public function index(Request $request ,DamageService $damageService): JsonResponse + public function index(Request $request, DamageService $damageService): JsonResponse { $data = $damageService->dataTable($request); + return response()->json($data); } public function list(): JsonResponse { $damages = Damage::query()->where('status', '=', 1)->get(); + return $this->successResponse($damages); } - /** * Store a newly created resource in storage. */ @@ -45,7 +46,7 @@ class DamageManagementController extends Controller 'unit' => $request->unit, 'base_price' => $request->base_price, 'status' => 1, - 'update_time' => now() + 'update_time' => now(), ]); return $this->successResponse(); @@ -55,7 +56,6 @@ class DamageManagementController extends Controller * Display the specified resource. */ public function show(Damage $damage): JsonResponse - { return $this->successResponse($damage); } @@ -63,14 +63,13 @@ class DamageManagementController extends Controller /** * Show the form for editing the specified resource. */ - public function update(UpdateRequest $request, Damage $damage): JsonResponse { $damage->update([ 'title' => $request->title, 'unit' => $request->unit, 'base_price' => $request->base_price, - 'update_time' => now() + 'update_time' => now(), ]); return $this->successResponse(); @@ -92,8 +91,9 @@ class DamageManagementController extends Controller */ public function excel(Request $request, DamageService $damageService): BinaryFileResponse { - $name = 'آیتم خسارات وارده بر ابنیه فنی' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'آیتم خسارات وارده بر ابنیه فنی'.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $damageService->datatable($request); + return Excel::download(new DamageCartableReport($data['data']), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index ce0ae4a6..54e4fa80 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -46,8 +46,9 @@ class AccidentReceiptController extends Controller public function excelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { auth()->user()->addActivityComplete(1126); - $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $accidentReceiptTableService->dataTable($request, true); + return Excel::download(new DataTableReport($data['data']), $name); } @@ -64,7 +65,7 @@ class AccidentReceiptController extends Controller $city = City::query()->where('id', '=', $request->city_id)->first(); $accidentData = [ - 'is_foreign' => $request->is_foreign, + 'is_foreign' => $request->is_foreign, 'province_id' => $province->id, 'province_fa' => $province->name_fa, 'city_id' => $city->id, @@ -103,12 +104,12 @@ class AccidentReceiptController extends Controller $sum += $item['amount']; } - $ojrate_nasb = $sum/100*20; + $ojrate_nasb = $sum / 100 * 20; $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; $accidentData['sum'] = $sum; - $accidentData['driver_share_amount'] = ($sum * $request->driver_rate)/100; + $accidentData['driver_share_amount'] = ($sum * $request->driver_rate) / 100; $accident = Accident::query()->create($accidentData); $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); @@ -137,7 +138,7 @@ class AccidentReceiptController extends Controller $city = City::query()->where('id', '=', $request->city_id)->first(); $accidentData = [ - 'is_foreign' => $request->is_foreign, + 'is_foreign' => $request->is_foreign, 'province_id' => $province->id, 'province_fa' => $province->name_fa, 'city_id' => $city->id, @@ -166,7 +167,9 @@ class AccidentReceiptController extends Controller } if ($request->has('police_file')) { - if ($accident->police_file) {FileFacade::delete($accident->police_file, true);} + if ($accident->police_file) { + FileFacade::delete($accident->police_file, true); + } $accidentData['police_file'] = FileFacade::save($request->file('police_file'), "receipts_files/{$accident->id}/"); } @@ -193,12 +196,12 @@ class AccidentReceiptController extends Controller $sum += $item['amount']; } - $ojrate_nasb = $sum/100*20; + $ojrate_nasb = $sum / 100 * 20; $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; $accidentData['sum'] = $sum; - $accidentData['driver_share_amount'] = ($sum * $request->driver_rate)/100; + $accidentData['driver_share_amount'] = ($sum * $request->driver_rate) / 100; $accident->update($accidentData); @@ -246,7 +249,7 @@ class AccidentReceiptController extends Controller return $this->successResponse([ $account_data, - $accident->load('damages') + $accident->load('damages'), ]); } @@ -254,7 +257,7 @@ class AccidentReceiptController extends Controller { DB::transaction(function () use ($request, $accident) { - $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); + $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.')); @@ -282,13 +285,13 @@ class AccidentReceiptController extends Controller public function submitInvoice(Accident $accident, PaymentService $paymentService, SubmitInvoiceRequest $request): JsonResponse { $lock = Cache::lock("accidentPayment-{$accident->id}", 10); - throw_if(!$lock->get(), new ProhibitedAction('امکان درخواست مجدد تا 10 ثانیه دیگر وجود ندارد')); + throw_if(! $lock->get(), new ProhibitedAction('امکان درخواست مجدد تا 10 ثانیه دیگر وجود ندارد')); $final_amount = $accident->final_amount; $bill_code = $paymentService->invoiceBillApi($accident->driver_national_code, $final_amount); - DB::transaction(function () use ($bill_code, $final_amount, $accident) { + DB::transaction(function () use ($bill_code, $accident) { $accident->update([ 'bill_code' => $bill_code, @@ -312,9 +315,9 @@ class AccidentReceiptController extends Controller { DB::transaction(function () use ($accident, $paymentService) { - $response = json_decode($paymentService->callPaymentStatusBillApi(explode("/", $accident->bill_code)[0])); + $response = json_decode($paymentService->callPaymentStatusBillApi(explode('/', $accident->bill_code)[0])); - throw_if(!$response->isPayed, new ProhibitedAction('پرداخت انجام نشده است')); + throw_if(! $response->isPayed, new ProhibitedAction('پرداخت انجام نشده است')); $accident->update([ 'status' => AccidentStates::PARDAKHT_FACTOR->value, @@ -327,9 +330,9 @@ class AccidentReceiptController extends Controller return $this->successResponse($accident); } - public function generatePoliceDocument(Request $request, Accident $accident): JsonResponse + public function generatePoliceDocument(Accident $accident): JsonResponse { - DB::transaction(function () use ($request, $accident) { + DB::transaction(function () use ($accident) { $accident->update([ 'status' => AccidentStates::SODOR_NAME_POLICE_RAH->value, diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php index 1d4d8920..397f6f9c 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php @@ -22,6 +22,7 @@ class AccidentReceiptReportController extends Controller public function countryReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): JsonResponse { $data = $accidentReceiptTableService->countryReport($request); + return $this->successResponse([ 'activities' => $data['data'], 'provinces' => Province::all(['id', 'name_fa']), @@ -31,6 +32,7 @@ class AccidentReceiptReportController extends Controller public function provinceReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): JsonResponse { $data = $accidentReceiptTableService->provinceReport($request); + return $this->successResponse([ 'activities' => $data['data'], 'cities' => City::query()->where('province_id', '=', $request->province_id) @@ -46,7 +48,8 @@ class AccidentReceiptReportController extends Controller public function countryExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { $data = $accidentReceiptTableService->countryReport($request); - $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new CountryReport($data), $name); } @@ -57,7 +60,8 @@ class AccidentReceiptReportController extends Controller public function provinceExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { $data = $accidentReceiptTableService->provinceReport($request); - $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از خسارات وارده به ابنیه فنی و تاسیسات راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new ProvinceReport([ 'report' => $data, 'cities' => City::query()->where('province_id', '=', $request->province_id) diff --git a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php index 72a3bd70..a5cd12e8 100644 --- a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php @@ -17,12 +17,13 @@ use Illuminate\Http\Request; class AzmayeshController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ public function index(Request $request): JsonResponse { - $columns = array( + $columns = [ 'id', 'request_date', 'report_date', @@ -37,8 +38,8 @@ class AzmayeshController extends Controller 'updated_at', 'created_at', 'user_name', - 'contract_subitem_id' - ); + 'contract_subitem_id', + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -81,7 +82,7 @@ class AzmayeshController extends Controller 'province_name' => $province->name_fa, 'user_id' => $user->id, 'user_name' => $user->name, - 'contract_subitem_id' => $request->contract_subitem_id + 'contract_subitem_id' => $request->contract_subitem_id, ]); $user->addActivityComplete(1158); @@ -121,7 +122,7 @@ class AzmayeshController extends Controller 'applicant' => $request->applicant ?? '-', 'province_id' => $province->id, 'province_name' => $province->name_fa, - 'contract_subitem_id' => $request->contract_subitem_id + 'contract_subitem_id' => $request->contract_subitem_id, ]); auth()->user()->addActivityComplete(1159); @@ -140,8 +141,7 @@ class AzmayeshController extends Controller auth()->user()->addActivityComplete(1160); return $this->successResponse(); - } - catch (QueryException $exception) { + } catch (QueryException $exception) { return $this->errorResponse('امکان حذف وجود ندارد'); } } diff --git a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php index c5ea04ec..adef5d64 100644 --- a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshSampleController.php @@ -15,14 +15,15 @@ use Illuminate\Http\Request; class AzmayeshSampleController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ public function index(Request $request, string $azmayesh_id): JsonResponse { - $columns = array( - 'id', 'updated_at', 'created_at' - ); + $columns = [ + 'id', 'updated_at', 'created_at', + ]; $allowedFilters = $columns; $allowedSortings = $columns; diff --git a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php index ef7d5f79..c9a1c21c 100644 --- a/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshTypeController.php @@ -20,9 +20,9 @@ class AzmayeshTypeController extends Controller public function index(Request $request): JsonResponse { - $columns = array( - 'id', 'name', 'updated_at', 'created_at' - ); + $columns = [ + 'id', 'name', 'updated_at', 'created_at', + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -52,16 +52,14 @@ class AzmayeshTypeController extends Controller public function store(StoreRequest $request): JsonResponse { - DB::transaction(function () use ($request) - { + DB::transaction(function () use ($request) { $azmayeshType = AzmayeshType::query()->create([ - 'name' => $request->name + 'name' => $request->name, ]); $fieldsID = []; - foreach ($request->fields as $field) - { + foreach ($request->fields as $field) { $azmayeshField = AzmayeshField::query()->firstOrCreate($field, $field); $fieldsID[] = $azmayeshField->id; } @@ -87,16 +85,14 @@ class AzmayeshTypeController extends Controller */ public function update(UpdateRequest $request, AzmayeshType $azmayeshType): JsonResponse { - DB::transaction(function () use ($request, $azmayeshType) - { + DB::transaction(function () use ($request, $azmayeshType) { $azmayeshType->update([ - 'name' => $request->name + 'name' => $request->name, ]); $fieldsID = []; - foreach ($request->fields as $field) - { + foreach ($request->fields as $field) { $azmayeshField = AzmayeshField::query()->updateOrCreate($field, $field); $fieldsID[] = $azmayeshField->id; } @@ -120,8 +116,7 @@ class AzmayeshTypeController extends Controller auth()->user()->addActivityComplete(1164); return $this->successResponse(); - } - catch (QueryException $exception) { + } catch (QueryException $exception) { return $this->errorResponse('امکان حذف وجود ندارد. ابتدا آزمایش های مرتبط با این نوع را حذف نمایید'); } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php index 8ac02b8e..6d0b0fb0 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers\V3\Dashboard\Harim; -use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\HarimState; diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index f2e2971f..de8b903c 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -11,10 +11,10 @@ use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest; -use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmGuaranteeLetterNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmNoRoadAccessNeedRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferFileRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\RejectRequest; @@ -34,7 +34,7 @@ class GeneralManagerController extends Controller $query = Harim::query() ->where('province_id', '=', auth()->user()->province_id); - $data = DataTableFacade::run( + $data = DataTableFacade::run( $query, $request, allowedFilters: ['*'], @@ -46,8 +46,7 @@ class GeneralManagerController extends Controller public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::CONFIRM->value; $harim->histories()->create([ @@ -74,12 +73,11 @@ class GeneralManagerController extends Controller public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::REFER->value; $harim->histories()->create([ - 'expert_id'=> auth()->user()->id, + 'expert_id' => auth()->user()->id, 'previous-state_id' => $harim->state_id, 'previous_state_name' => $harim->state_name, 'export_description' => $request->export_description, @@ -100,12 +98,11 @@ class GeneralManagerController extends Controller public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::REFER->value; $harim->histories()->create([ - 'expert_id'=> auth()->user()->id, + 'expert_id' => auth()->user()->id, 'previous-state_id' => $harim->state_id, 'previous_state_name' => $harim->state_name, 'export_description' => $request->export_description, @@ -126,8 +123,7 @@ class GeneralManagerController extends Controller public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::CONFIRM->value; $harim->histories()->create([ @@ -154,8 +150,7 @@ class GeneralManagerController extends Controller public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::CONFIRM->value; $harim->histories()->create([ @@ -183,8 +178,7 @@ class GeneralManagerController extends Controller public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::CONFIRM->value; $harim->histories()->create([ @@ -211,8 +205,7 @@ class GeneralManagerController extends Controller public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) - { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::CONFIRM->value; $harim->histories()->create([ diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index f739317a..9eaa7460 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -6,12 +6,12 @@ use App\Enums\HarimAction; use App\Enums\HarimStates; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileAcceptedRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\RejectRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ShowRequest; -use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\WithoutRoadAccessRequest; use App\Http\Traits\ApiResponse; use App\Models\Harim; @@ -22,7 +22,7 @@ use Illuminate\Support\Facades\DB; class HarimOfficeController extends Controller { - use ApiResponse ; + use ApiResponse; public function index(Request $request): JsonResponse { @@ -39,7 +39,6 @@ class HarimOfficeController extends Controller return response()->json($data); } - public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -67,7 +66,7 @@ class HarimOfficeController extends Controller public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::REFER->value; $harim->histories()->create([ @@ -75,7 +74,7 @@ class HarimOfficeController extends Controller 'previous_state_id' => $harim->state_id, 'previous_state_name' => $harim->state_name, 'expert_description' => $request->expert_description, - 'action_id' => $action, + 'action_id' => $action, 'action_name' => HarimAction::name($action), ]); @@ -92,7 +91,7 @@ class HarimOfficeController extends Controller public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::YES->value; $harim->histories()->create([ 'expert_id' => auth()->user()->id, @@ -105,12 +104,12 @@ class HarimOfficeController extends Controller $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - $harim ->update([ + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'is_possible' => true, 'need_access_road' => true, - 'need_payment' => $request->need_payment + 'need_payment' => $request->need_payment, ]); }); @@ -119,7 +118,7 @@ class HarimOfficeController extends Controller public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::YES->value; $harim->histories()->create([ 'expert_id' => auth()->user()->id, @@ -132,20 +131,21 @@ class HarimOfficeController extends Controller $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - $harim ->update([ + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'is_possible' => true, 'need_access_road' => false, - 'need_payment' => $request->need_payment + 'need_payment' => $request->need_payment, ]); }); return $this->successResponse(); } + public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::YES->value; $harim->histories()->create([ 'expert_id' => auth()->user()->id, @@ -158,7 +158,7 @@ class HarimOfficeController extends Controller $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; - $harim ->update([ + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'access_road_allowed' => true, @@ -167,9 +167,10 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::NO->value; $harim->histories()->create([ 'expert_id' => auth()->user()->id, @@ -182,7 +183,7 @@ class HarimOfficeController extends Controller $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; - $harim ->update([ + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'access_road_allowed' => false, @@ -191,6 +192,7 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + public function show(ShowRequest $request, Harim $harim): JsonResponse { return $this->successResponse($harim->load('histories')); diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 92ee6912..dbbb9128 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -21,8 +21,8 @@ class PanjareVahedController extends Controller public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse { - $wkt = 'POLYGON((' . implode(',', array_map(fn($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])) . '))'; - $result = DB::selectOne("SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point", [$wkt]); + $wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))'; + $result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]); preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches); try { @@ -32,8 +32,7 @@ class PanjareVahedController extends Controller ST_GeomFromText('POINT($matches[1] $matches[2])', 4326))" ) ->firstOrFail(['id', 'name_fa', 'province_id']); - } - catch (ModelNotFoundException $exception){ + } catch (ModelNotFoundException $exception) { $city = City::query() ->orderByRaw("ST_Distance( geometry, @@ -126,7 +125,6 @@ class PanjareVahedController extends Controller $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); - $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index f4e38618..d81169f2 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -30,12 +30,14 @@ class ProvinceOfficeController extends Controller allowedFilters: ['*'], allowedSortings: ['*'], ); + return response()->json($data); } + public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::FEEDBACK->value; $harim->histories()->create([ @@ -49,12 +51,13 @@ class ProvinceOfficeController extends Controller $state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; - $harim ->update([ + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'forbidden_area' => $request->input('forbidden_area'), ]); }); + return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index 646a87b8..3a1fcdbc 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -20,23 +20,25 @@ use Illuminate\Support\Facades\DB; class TechnicalDeputyController extends Controller { use ApiResponse; + public function index(Request $request): JsonResponse { $query = Harim::query() ->where('province_id', '=', auth()->user()->province_id); $data = DataTableFacade::run( - $query, - $request, - allowedFilters: ['*'], - allowedSortings: ['*'], + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], ); return response()->json($data); } + public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::CONFIRM->value; $harim->histories()->create([ @@ -44,13 +46,13 @@ class TechnicalDeputyController extends Controller 'previous_state_id' => $harim->state_id, 'previous_state_name' => $harim->state_name, 'expert_description' => $request->expert_description, - 'action_id' => $action, + 'action_id' => $action, 'action_name' => HarimAction::name($action), ]); $state = HarimStates::BARESI_TAVASOT_MODIR_KOL->value; - $harim ->update([ + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), ]); @@ -58,9 +60,10 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request,$harim) { + DB::transaction(function () use ($request, $harim) { $action = HarimAction::REFER->value; $harim->histories()->create([ @@ -68,7 +71,7 @@ class TechnicalDeputyController extends Controller 'previous_state_id' => $harim->state_id, 'previous_state_name' => $harim->state_name, 'expert_description' => $request->expert_description, - 'action_id' => $action, + 'action_id' => $action, 'action_name' => HarimAction::name($action), ]); @@ -82,6 +85,7 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + public function confirmRoadAccess(ConfirmRoadAccessRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -129,6 +133,7 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + public function show(ShowRequest $request, Harim $harim): JsonResponse { return $this->successResponse($harim->load('histories')); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index d9ca292f..afda7a93 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -18,6 +18,7 @@ use Illuminate\Support\Facades\DB; class ControlUnitController extends Controller { use ApiResponse; + public function index(Request $request, ControlUnitService $controlUnitService): JsonResponse { return response()->json($controlUnitService->datatable($request)); @@ -25,7 +26,7 @@ class ControlUnitController extends Controller public function start(StartRequest $request, Mission $mission): JsonResponse { - DB::transaction(function () use ($request, $mission) { + DB::transaction(function () use ($mission) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -36,7 +37,7 @@ class ControlUnitController extends Controller $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'start_time' => now() + 'start_time' => now(), ]); }); @@ -45,7 +46,7 @@ class ControlUnitController extends Controller public function finish(FinishRequest $request, Mission $mission): JsonResponse { - DB::transaction(function () use ($request, $mission) { + DB::transaction(function () use ($mission) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -63,7 +64,7 @@ class ControlUnitController extends Controller }); if ($mission->category_id == 2) { - $rpc = new OperatorController(); + $rpc = new OperatorController; $rpc->store($mission); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index 2c5a5946..cf1b2dd1 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\Mission; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class DetailController extends Controller { @@ -28,7 +27,7 @@ class DetailController extends Controller 'code' => $rahdar->code, 'is_driver' => (bool) $rahdar->pivot->is_driver, ]; - }); + }); return $this->successResponse($rahdaran); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index f8d632cb..e412de82 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -8,8 +8,8 @@ use App\Enums\MissionTypes; use App\Enums\MissionZones; use App\Http\Controllers\Controller; use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController; -use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest; use App\Http\Requests\V3\Mission\RequestPortal\ContinueMissionRequest; +use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest; use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest; use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest; use App\Http\Traits\ApiResponse; @@ -66,7 +66,7 @@ class RequestPortalController extends Controller $mission->rahdaran()->sync($request->rahdaran); - if ($category == 3){ + if ($category == 3) { RoadObserved::query() ->find($request->road_observed_id) ->missions() @@ -82,11 +82,11 @@ class RequestPortalController extends Controller return $this->successResponse($mission); } - public function continueMission(ContinueMissionRequest $request , Mission $mission): JsonResponse + public function continueMission(ContinueMissionRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { $user = auth()->user(); - + $mission->update([ 'finish_time' => now(), 'state_id' => MissionStates::END_MISSION->value, @@ -118,18 +118,18 @@ class RequestPortalController extends Controller 'category_id' => $category, 'category_name' => MissionCategory::name($category), 'explanation' => $request->explanation, - 'start_time' => now() + 'start_time' => now(), ]); - $newMission->rahdaran()->sync($request->rahdaran); - $newMission->machines()->attach($request->machines); - $newMission->rahdaran()->attach($request->driver, ['is_driver' => true]); + $newMission->rahdaran()->sync($request->rahdaran); + $newMission->machines()->attach($request->machines); + $newMission->rahdaran()->attach($request->driver, ['is_driver' => true]); - if ($category == 3){ + if ($category == 3) { RoadObserved::query() ->find($request->road_observed_id) ->missions() - ->attach( $newMission->id); + ->attach($newMission->id); } }); @@ -159,7 +159,7 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->sync($request->rahdaran); - if ($request->category_id == 3){ + if ($request->category_id == 3) { RoadObserved::query() ->find($request->road_observed_id) ->missions() @@ -169,14 +169,17 @@ class RequestPortalController extends Controller return $this->successResponse(); } + public function destroy(Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { $mission->rahdaran()->detach(); $mission->delete(); }); + return $this->successResponse(); } + public function noProcess(NoProcessRequest $request): JsonResponse { DB::transaction(function () use ($request) { @@ -185,7 +188,7 @@ class RequestPortalController extends Controller $end = Carbon::parse($request->end_date); $type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value; $user = auth()->user(); - $zone= $request->zone; + $zone = $request->zone; $state = MissionStates::END_MISSION->value; $mission = Mission::query()->create([ @@ -218,7 +221,7 @@ class RequestPortalController extends Controller $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); if ($mission->category_id == 2) { - $rpc = new OperatorController(); + $rpc = new OperatorController; $rpc->store($mission); } }); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php index 79f9b66c..422aa794 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -27,19 +27,19 @@ class TransportationUnitController extends Controller { DB::transaction(function () use ($request, $mission) { $mission->machines()->attach($request->machines); - $mission->rahdaran()->attach($request->driver, ['is_driver'=>true]); + $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, - 'previous_state_name' => $mission->state_name + 'previous_state_name' => $mission->state_name, ]); $state = MissionStates::PENDING_CONFIRMATION->value; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'km' => $request->km + 'km' => $request->km, ]); }); @@ -53,7 +53,7 @@ class TransportationUnitController extends Controller 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, 'previous_state_name' => $mission->state_name, - 'user_description' => $request->description + 'user_description' => $request->description, ]); $state = MissionStates::REJECT_BY_TRANSPORTATION->value; @@ -61,7 +61,7 @@ class TransportationUnitController extends Controller $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'description' => $request->description + 'description' => $request->description, ]); }); diff --git a/app/Http/Controllers/V3/Dashboard/ObservedItemController.php b/app/Http/Controllers/V3/Dashboard/ObservedItemController.php index b261a049..a1a391f5 100644 --- a/app/Http/Controllers/V3/Dashboard/ObservedItemController.php +++ b/app/Http/Controllers/V3/Dashboard/ObservedItemController.php @@ -16,6 +16,7 @@ use Illuminate\Validation\ValidationException; class ObservedItemController extends Controller { use ApiResponse; + public function show(ObservedItem $observedItem): JsonResponse { return $this->successResponse($observedItem); @@ -23,9 +24,9 @@ class ObservedItemController extends Controller public function filter(Request $request): JsonResponse { - $columns = array( + $columns = [ 'id', 'item_id', 'road_patrol_id', 'roadPatrol.start_time', 'roadPatrol.end_time', - ); + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -76,7 +77,7 @@ class ObservedItemController extends Controller $item_end_coordinates = null; if ($info_item->needs_end_point) { - if (!isset($item['end_point'])) { + if (! isset($item['end_point'])) { throw ValidationException::withMessages([ "observed_items.$index.end_point" => __('validation.required', ['attribute' => 'end_point']), ]); diff --git a/app/Http/Controllers/V3/Dashboard/OtpManagementController.php b/app/Http/Controllers/V3/Dashboard/OtpManagementController.php index 307dc05d..6ceb64ec 100644 --- a/app/Http/Controllers/V3/Dashboard/OtpManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/OtpManagementController.php @@ -7,7 +7,6 @@ use App\Http\Controllers\Controller; use App\Http\Requests\V3\Otp\GetOtpTokenRequest; use App\Http\Traits\ApiResponse; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class OtpManagementController extends Controller { diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php index dc6d3efd..9dd1ed13 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/DetailController.php @@ -6,7 +6,6 @@ use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\RoadItemsProject; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class DetailController extends Controller { diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php index b62da19b..3f407048 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php @@ -11,12 +11,10 @@ use App\Http\Requests\V3\RoadItem\Operator\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; use App\Models\InfoItem; -use App\Models\Mission; use App\Models\ObservedItem; use App\Models\RoadItemsProject; use App\Services\Cartables\RoadItem\OperatorService; use App\Services\NominatimService; -use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -29,24 +27,28 @@ use Throwable; class OperatorController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ public function index(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->dataTable($request); + return response()->json($data); } public function excel(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از کارتابل عملیات فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل عملیات فعالیت روزانه '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->dataTable($request, true); + return Excel::download(new OperatorCartableReport($data['data']), $name); } /** * Store a newly created resource in storage. + * * @throws Throwable */ public function store(StoreRequest $request, NominatimService $nominatimService): JsonResponse @@ -55,13 +57,13 @@ class OperatorController extends Controller ->where('sub_item', $request->sub_item_id) ->firstOrFail(); - if ($info_item->needs_end_point && !$request->end_point) { + if ($info_item->needs_end_point && ! $request->end_point) { throw ValidationException::withMessages([ 'end_point' => __('validation.required', ['attribute' => 'end_point']), ]); } - if ((!$request->before_image || !$request->after_image) && $info_item->needs_image) { + if ((! $request->before_image || ! $request->after_image) && $info_item->needs_image) { throw ValidationException::withMessages([ 'before_image' => __('validation.required', ['attribute' => 'before_image']), 'after_image' => __('validation.required', ['attribute' => 'after_image']), @@ -72,8 +74,7 @@ class OperatorController extends Controller $end_coordinates = $info_item->needs_end_point ? explode(',', $request->end_point) : null; DB::transaction(function () use ($request, $nominatimService, - $start_coordinates, $end_coordinates, $info_item) - { + $start_coordinates, $end_coordinates, $info_item) { $user = auth()->user(); $road_item = RoadItemsProject::query()->create([ 'user_id' => $user->id, @@ -103,7 +104,7 @@ class OperatorController extends Controller 'edarat_name' => $user->edarate_shahri_name, 'activity_date' => $request->activity_date, 'activity_time' => $request->activity_time, - 'activity_date_time' => $request->activity_date." ".$request->activity_time, + 'activity_date_time' => $request->activity_date.' '.$request->activity_time, 'is_new' => 1, 'mission_id' => $request->mission_id, ]); @@ -111,13 +112,13 @@ class OperatorController extends Controller if ($request->has('after_image')) { $road_item->files()->create([ 'path' => FileFacade::save($request->file('after_image'), - "/road_items_projects_new/{$road_item->id}/after") + "/road_items_projects_new/{$road_item->id}/after"), ]); } if ($request->has('before_image')) { $road_item->files()->create([ 'path' => FileFacade::save($request->file('before_image'), - "/road_items_projects_new/{$road_item->id}/before") + "/road_items_projects_new/{$road_item->id}/before"), ]); } @@ -152,7 +153,7 @@ class OperatorController extends Controller $end_coordinates = null; if ($info_item->needs_end_point) { - if (!$request->end_point) { + if (! $request->end_point) { throw ValidationException::withMessages([ 'end_point' => __('validation.required', ['attribute' => 'end_point']), ]); @@ -166,14 +167,14 @@ class OperatorController extends Controller FileFacade::delete($roadItemsProject->files[0]->path, true); $roadItemsProject->files[0]->update([ 'path' => FileFacade::save($request->file('after_image'), - "/road_items_projects_new/{$roadItemsProject->id}/after") + "/road_items_projects_new/{$roadItemsProject->id}/after"), ]); } if ($request->has('before_image')) { FileFacade::delete($roadItemsProject->files[1]->path, true); $roadItemsProject->files[1]->update([ 'path' => FileFacade::save($request->file('before_image'), - "/road_items_projects_new/{$roadItemsProject->id}/before") + "/road_items_projects_new/{$roadItemsProject->id}/before"), ]); } } @@ -193,7 +194,6 @@ class OperatorController extends Controller $roadItemsProject->cmmsMachines()->sync($request->machines_id); $roadItemsProject->missions()->sync($request->mission_id); - auth()->user()->addActivityComplete(1155); }); diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php index 448ec873..3c1a12ad 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php @@ -94,8 +94,9 @@ class ReportController extends Controller public function countryActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $activities = $reportService->countryActivityPerItem($request); + return Excel::download(new CountryActivityPerItemReport([ 'activities' => $activities, 'provinces' => Province::all(['id', 'name_fa']), @@ -106,8 +107,9 @@ class ReportController extends Controller public function provinceActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $activities = $reportService->provinceActivityPerItem($request); + return Excel::download(new ProvinceActivityPerItemReport([ 'activities' => $activities, 'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']), @@ -118,7 +120,7 @@ class ReportController extends Controller public function countryActivityExcelPerSubItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 2 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $activities = $reportService->countryActivityPerSubItem($request); $subItems = InfoItem::query() ->where('item', $request->item) @@ -127,7 +129,7 @@ class ReportController extends Controller return Excel::download(new CountryActivityPerSubItemReport([ 'activities' => $activities, 'provinces' => Province::all(['id', 'name_fa']), - 'subItems' => $subItems + 'subItems' => $subItems, ]), $name); } @@ -135,7 +137,7 @@ class ReportController extends Controller { auth()->user()->addActivityComplete(1034); $activities = $reportService->provinceActivityPerSubItem($request); - $name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 2 '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $subItems = InfoItem::query() ->where('item', $request->item) ->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']); @@ -154,16 +156,16 @@ class ReportController extends Controller $subId = $request->sub_id; $item = $request->item; $status = $request->status; - $dateFrom = $request->date_from ? $request->date_from . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); - $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); + $dateFrom = $request->date_from ? $request->date_from.' 00:00:00' : now()->startOfDay()->toDateTimeString(); + $dateTo = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); $data = RoadItemsProject::query() ->where('is_new', '=', 1) - ->when($provinceId, fn($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId)) - ->when($cityId, fn($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId)) - ->when($subId, fn($query, $subId) => $query->where('sub_items', 'like', '%' . $subId . '%')) - ->when($item, fn($query, $item) => $query->where('item', '=', $item)) - ->when(!is_null($status), fn($query, $status) => $query->where('status', '=', $status)) + ->when($provinceId, fn ($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId)) + ->when($cityId, fn ($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId)) + ->when($subId, fn ($query, $subId) => $query->where('sub_items', 'like', '%'.$subId.'%')) + ->when($item, fn ($query, $item) => $query->where('item', '=', $item)) + ->when(! is_null($status), fn ($query, $status) => $query->where('status', '=', $status)) ->leftJoin('users', 'users.id', '=', 'road_items_projects.user_id') ->whereBetween('road_items_projects.activity_date', [$dateFrom, $dateTo]) ->select('road_items_projects.id as i', 'start_lat as l', 'start_lng as g', 'status') diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php index 42cdb28c..5272a05b 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/SupervisorController.php @@ -7,11 +7,9 @@ use App\Exports\V3\RoadItemsProjects\SupervisorCartableReport; use App\Http\Controllers\Controller; use App\Http\Requests\V3\RoadItem\Supervisor\ConfirmRequest; use App\Http\Requests\V3\RoadItem\Supervisor\RejectRequest; -use App\Http\Requests\V3\RoadItem\VerifyBySupervisorRequest; use App\Http\Traits\ApiResponse; use App\Models\RoadItemsProject; use App\Services\Cartables\RoadItem\SupervisorService; -use App\Services\Cartables\RoadItemTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -47,8 +45,9 @@ class SupervisorController extends Controller */ public function excel(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از کارتابل ارزیابی فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل ارزیابی فعالیت روزانه '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $supervisorService->dataTable($request, true); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } @@ -107,7 +106,7 @@ class SupervisorController extends Controller 'supervisor_id' => null, 'supervisor_description' => null, 'supervising_time' => null, - 'supervisor_name' => null, + 'supervisor_name' => null, ]); auth()->user()->addActivityComplete(1150); }); diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index 91f6d0dc..01f05b43 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -13,9 +13,8 @@ use App\Models\City; use App\Models\Province; use App\Models\RahdariPoint; use App\Models\RahdariPointHistory; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; - +use Illuminate\Http\Request; class RoadMaintenanceStationController extends Controller { @@ -27,7 +26,7 @@ class RoadMaintenanceStationController extends Controller $user->addActivityComplete(1019); $query = RahdariPoint::query() - ->when($user->hasPermissionTo('show-tollhouse-province') && !$user->hasPermissionTo('show-tollhouse'), + ->when($user->hasPermissionTo('show-tollhouse-province') && ! $user->hasPermissionTo('show-tollhouse'), fn ($query) => $query->where('province_id', $user->province_id) ); @@ -56,7 +55,7 @@ class RoadMaintenanceStationController extends Controller 'name' => $request->name, 'status' => $request->status, 'type' => $request->type, - 'type_fa' =>RoadMaintenanceStationTypes::name($request->type), + 'type_fa' => RoadMaintenanceStationTypes::name($request->type), 'team_num' => $request->team_num, 'staff_num' => $request->staff_num, 'phone' => $request->phone, @@ -85,7 +84,7 @@ class RoadMaintenanceStationController extends Controller foreach ($uploadPaths as $field => $path) { if ($request->hasFile($field)) { $station->files()->create([ - 'path' => FileFacade::save($request->$field, $path) + 'path' => FileFacade::save($request->$field, $path), ]); } } @@ -112,17 +111,17 @@ class RoadMaintenanceStationController extends Controller RahdariPointHistory::query()->create([ 'user_id' => $request->user()->id, - 'point_id' => $rahdariPoint->id, + 'point_id' => $rahdariPoint->id, 'previous_province_id' => $province->id, 'previous_province_name' => $province->name_fa, 'previous_city_id' => $city->id, 'previous_city_name' => $city->name_fa, - 'previous_name' => $rahdariPoint->name, - 'previous_status' => $rahdariPoint->status, - 'previous_type' => $rahdariPoint->type, + 'previous_name' => $rahdariPoint->name, + 'previous_status' => $rahdariPoint->status, + 'previous_type' => $rahdariPoint->type, 'previous_team_num' => $rahdariPoint->team_num, 'previous_staff_num' => $rahdariPoint->staff_num, - 'previous_phone' => $rahdariPoint->phone, + 'previous_phone' => $rahdariPoint->phone, 'previous_responsible_name' => $rahdariPoint->responsible_name, 'previous_responsible_mobile' => $rahdariPoint->responsible_mobile, 'previous_successor_name' => $rahdariPoint->successor_name, @@ -130,21 +129,21 @@ class RoadMaintenanceStationController extends Controller 'previous_machines_light' => $rahdariPoint->machines_light, 'previous_machines_sheavy' => $rahdariPoint->machines_sheavy, 'previous_machines_heavy' => $rahdariPoint->machines_heavy, - 'previous_lat' => $rahdariPoint->lat, - 'previous_lng' => $rahdariPoint->lng, + 'previous_lat' => $rahdariPoint->lat, + 'previous_lng' => $rahdariPoint->lng, 'new_files' => json_encode($rahdariPoint->files), 'area' => json_encode($rahdariPoint->area), ]); - $rahdariPoint->update([ + $rahdariPoint->update([ 'province_id' => $province->id, 'province_name' => $province->name_fa, 'city_id' => $city->id, 'city_name' => $city->name_fa, 'name' => $request->input('name'), 'status' => $request->input('status'), - 'type' => $request->input('type',), - 'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa, + 'type' => $request->input('type'), + 'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa, 'team_num' => $request->input('team_num'), 'staff_num' => $request->input('staff_num'), 'phone' => $request->input('phone'), diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php index f4f2807f..6f67641d 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/OperatorController.php @@ -36,8 +36,9 @@ class OperatorController public function cartableReport(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از کارتابل عملیات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل عملیات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->cartableIndex($request); + return Excel::download(new OperatorCartableReport($data['data']), $name); } @@ -54,8 +55,9 @@ class OperatorController */ public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از رسیدگی به شکایات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->complaintsIndex($request); + return Excel::download(new ComplaintsReport($data['data']), $name); } @@ -79,7 +81,7 @@ class OperatorController 'previous_rms_start_latlng' => $roadObserved->rms_start_latlng, 'previous_rms_end_latlng' => $roadObserved->rms_end_latlng, 'previous_rms_description' => $roadObserved->rms_description, - 'new_files' => json_encode([]) + 'new_files' => json_encode([]), ]; $files_path = []; @@ -132,7 +134,7 @@ class OperatorController 'previous_rms_start_latlng' => $roadObserved->rms_start_latlng, 'previous_rms_end_latlng' => $roadObserved->rms_end_latlng, 'previous_rms_description' => $roadObserved->rms_description, - 'new_files' => json_encode([]) + 'new_files' => json_encode([]), ]; if ($request->rms_status == 1) { @@ -195,7 +197,7 @@ class OperatorController 'from_edareh' => $roadObserved->edarate_shahri_id, 'to_edareh' => $request->edarate_shahri_id, 'from_province' => $roadObserved->province_id, - 'to_province' => $province->id + 'to_province' => $province->id, ]); $roadObserved->update([ @@ -218,7 +220,7 @@ class OperatorController ->orderBy('created_at', 'desc') ->get([ 'created_at', 'description', 'from_edareh', 'to_edareh', - 'from_province', 'to_province', 'user_id' + 'from_province', 'to_province', 'user_id', ]); foreach ($data as $key => $value) { @@ -227,8 +229,9 @@ class OperatorController $data[$key]->from_province = Province::query()->find($value->from_province)->name_fa ?? null; $data[$key]->to_province = Province::query()->find($value->to_province)->name_fa ?? null; $user = User::query()->find($value->user_id); - $data[$key]->user = $user->first_name . ' ' . $user->last_name; + $data[$key]->user = $user->first_name.' '.$user->last_name; } + return $this->successResponse($data); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php index 4b00f238..3b37d5af 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/ReportController.php @@ -8,7 +8,6 @@ use App\Exports\V3\RoadObservation\ProvinceCartableReport; use App\Facades\DataTable\DataTableFacade; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; -use App\Models\Province; use App\Models\RoadObserved; use App\Services\Cartables\RoadObservation\ReportService; use App\Services\Cartables\SafetyAndPrivacy\OperatorService; @@ -24,13 +23,15 @@ class ReportController public function index(Request $request, ReportService $reportService): JsonResponse { $data = $reportService->index($request); + return response()->json($data['data']); } public function excel(Request $request, ReportService $reportService): BinaryFileResponse { - $name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش رسیدگی به شکایات واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $reportService->index($request); + return Excel::download(new ReportComplaintsExport($data), $name); } @@ -48,6 +49,7 @@ class ReportController public function countryActivity(Request $request, ReportService $reportService): JsonResponse { $data = $reportService->countryActivity($request); + return $this->successResponse($data); } @@ -59,22 +61,26 @@ class ReportController return $this->successResponse([ 'activities' => $data, - 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), + 'edarateShahri' => EdarateShahri::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } - public function countryActivityExcel(Request $request, OperatorService $operatorService): BinaryFileResponse + + public function countryActivityExcel(Request $request, ReportService $reportService): BinaryFileResponse { - $data = $operatorService->countryActivity($request); - $name = 'گزارش رسیدگی به شکایات واکنش سریع' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $data = $reportService->countryActivity($request); + $name = 'گزارش رسیدگی به شکایات واکنش سریع'.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new CountryCartableReport($data), $name); } - public function provinceActivityExcel(Request $request, OperatorService $operatorService): BinaryFileResponse + public function provinceActivityExcel(Request $request, ReportService $reportService): BinaryFileResponse { - $data = $operatorService->provinceActivity( + $data = $reportService->provinceActivity( province_id: $request->input('province_id') ); - $name = 'گزارش رسیدگی به شکایات واکنش سریع' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new ProvinceCartableReport($data, $request), $name); + + $name = 'گزارش رسیدگی به شکایات واکنش سریع'.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new ProvinceCartableReport($data), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php index 02e48f63..52e473c3 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservation/SupervisorController.php @@ -10,7 +10,6 @@ use App\Http\Traits\ApiResponse; use App\Models\RoadObservationHistory; use App\Models\RoadObserved; use App\Services\Cartables\RoadObservation\SupervisorService; -use App\Services\Cartables\RoadObservationTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -48,7 +47,7 @@ class SupervisorController public function report(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل ارزیابی واکنش سریع '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $supervisorService->index($request); return Excel::download(new SupervisorCartableReport($data['data']), $name); @@ -89,4 +88,4 @@ class SupervisorController return $this->successResponse(); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php index e3b6ac5a..42d7c505 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/DetailController.php @@ -9,12 +9,11 @@ use App\Models\RoadPatrol; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; - class DetailController extends Controller { use ApiResponse; - public function map(Request $request): JsonResponse + public function map(Request $request): JsonResponse { $province = $request->province_id; $edare_shahri = $request->edare_shahri_id; @@ -25,12 +24,12 @@ class DetailController extends Controller $date_from = $request->from_date.' 00:00:00'; $date_to = $request->date_to.' 23:59:59'; } else { - $date_from = Date('Y-m-d'); + $date_from = date('Y-m-d'); $date_to = new \DateTime('tomorrow'); $date_to = $date_to->format('Y-m-d'); } - $projects = RoadObserved::query()->select(['id', 'lng', 'lat','status']) + $projects = RoadObserved::query()->select(['id', 'lng', 'lat', 'status']) ->whereBetween('created_at', [$date_from, $date_to]) ->when($province, function ($query) use ($province) { return $query->where('province_id', '=', $province); @@ -49,6 +48,7 @@ class DetailController extends Controller return $query->where('status', '=', $status); }) ->get(); + return $this->successResponse($projects); } diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php index 230bb22a..07913960 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php @@ -2,9 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard\RoadPatrol; - use App\Exports\V3\RoadPatrols\OperatorCartableReport; -use App\Facades\Sms\Sms; use App\Http\Controllers\Controller; use App\Http\Requests\V3\RoadPatrol\DeleteRequest; use App\Http\Traits\ApiResponse; @@ -18,7 +16,6 @@ use Illuminate\Support\Facades\Storage; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; - class OperatorController extends Controller { use ApiResponse; @@ -26,12 +23,15 @@ class OperatorController extends Controller public function index(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->dataTable($request); + return response()->json($data); } + public function excel(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از کارتابل عملیات گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل عملیات گشت راهداری '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $operatorService->dataTable($request, true); + return Excel::download(new OperatorCartableReport($data['data']), $name); } @@ -42,15 +42,15 @@ class OperatorController extends Controller $road_patrol = RoadPatrol::query()->create([ 'operator_id' => $user->id, - 'status' => 0, - 'status_fa' => 'در حال بررسی', + 'status' => 0, + 'status_fa' => 'در حال بررسی', 'province_id' => $mission->province_id, 'province_fa' => $mission->province_name, - 'edare_id' => $mission->edare_shahri_id, - 'edare_name' => $mission->edare_shahri_name, - 'start_time' => $mission->start_time, - 'end_time' => $mission->finish_time, - 'mission_id' => $mission->id, + 'edare_id' => $mission->edare_shahri_id, + 'edare_name' => $mission->edare_shahri_name, + 'start_time' => $mission->start_time, + 'end_time' => $mission->finish_time, + 'mission_id' => $mission->id, ]); auth()->user()->addActivityComplete(1147); @@ -74,8 +74,8 @@ class OperatorController extends Controller $road_item = $observed_item->roadItemProject; if ($road_item->files()->exists()) { - Storage::delete('public/' . $road_item->files[0]->path); - Storage::delete('public/' . $road_item->files[1]->path); + Storage::delete('public/'.$road_item->files[0]->path); + Storage::delete('public/'.$road_item->files[1]->path); $road_item->files()->delete(); } diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php index a4fd027f..e2b85254 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/ReportController.php @@ -18,16 +18,17 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class ReportController extends Controller { use ApiResponse; + public function activitiesOnMap(Request $request): JsonResponse { - $date_from = $request->from_date ? $request->from_date .' 00:00:00' : now()->startOfDay()->toDateTimeString(); + $date_from = $request->from_date ? $request->from_date.' 00:00:00' : now()->startOfDay()->toDateTimeString(); $date_to = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); $provinceId = $request->province_id; $edareId = $request->edare_id; $data = RoadPatrol::query() - ->when($provinceId, fn($query, $provinceId) => $query->where('province_id', '=', $provinceId)) - ->when($edareId, fn($query, $edareId) => $query->where('edare_id', '=', $edareId)) + ->when($provinceId, fn ($query, $provinceId) => $query->where('province_id', '=', $provinceId)) + ->when($edareId, fn ($query, $edareId) => $query->where('edare_id', '=', $edareId)) ->whereBetween('created_at', [$date_from, $date_to]) ->select('id', 'start_lat', 'start_lon') ->get(); @@ -51,11 +52,11 @@ class ReportController extends Controller 'officer_name' => $roadPatrol->officer_name, 'officer_plaque' => $roadPatrol->officer_plaque, 'officer_phone_number' => $roadPatrol->officer_phone_number, - 'created_at' => $roadPatrol->created_at + 'created_at' => $roadPatrol->created_at, ]; - $observed_items = array(); - if($roadPatrol->observedItems) { + $observed_items = []; + if ($roadPatrol->observedItems) { foreach ($roadPatrol->observedItems as $index => $observed_item) { $observed_items[] = [ 'item' => $observed_item->item_name, @@ -68,8 +69,10 @@ class ReportController extends Controller } $data['observed_items'] = $observed_items; + return $this->successResponse($data); } + public function countryPatrolActivity(Request $request, ReportService $reportService): JsonResponse { $activities = $reportService->countryActivity($request); @@ -78,13 +81,13 @@ class ReportController extends Controller return $this->successResponse([ 'activities' => $activities['data'], - 'provinces' => $provinces + 'provinces' => $provinces, ]); } public function provincePatrolActivity(Request $request, ReportService $reportService): JsonResponse { - $request->validate(["province_id" => "required",]); + $request->validate(['province_id' => 'required']); $activities = $reportService->provinceActivity($request); @@ -101,7 +104,7 @@ class ReportController extends Controller $activities = $reportService->countryActivity($request); $provinces = Province::all(['id', 'name_fa']); - $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از گشت راهداری و ترابری '.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new CountryActivity([ 'activities' => $activities, @@ -114,7 +117,7 @@ class ReportController extends Controller $activities = $reportService->provinceActivity($request); $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); - $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از گشت راهداری و ترابری '.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new ProvinceActivity([ 'activities' => $activities, diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php index 6b5a9a91..b48cca4b 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/SupervisorController.php @@ -40,8 +40,9 @@ class SupervisorController extends Controller */ public function excel(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از کارتابل ارزیابی گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $name = 'گزارش از کارتابل ارزیابی گشت راهداری '.verta()->now()->format('Y-m-d H:i').'.xlsx'; $data = $supervisorService->dataTable($request, true); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php index e6fb35a9..224852bf 100644 --- a/app/Http/Controllers/V3/Dashboard/RoleManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/RoleManagementController.php @@ -8,13 +8,11 @@ use App\Http\Requests\V3\Dashboard\RoleManageMent\StoreRequest; use App\Http\Requests\V3\Dashboard\RoleManageMent\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\Role; -use App\Services\Cartables\Role\RoleService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Throwable; - class RoleManagementController extends Controller { use ApiResponse; @@ -27,7 +25,8 @@ class RoleManagementController extends Controller allowedFilters: ['*'], allowedSortings: ['*'], allowedSelects: ['id', 'name', 'name_fa', 'description'] - ); + ); + return response()->json($data); } @@ -38,8 +37,7 @@ class RoleManagementController extends Controller { auth()->user()->addActivityComplete(1043); - $role = DB::transaction(function () use ($request) - { + $role = DB::transaction(function () use ($request) { $role = Role::create([ 'name' => $request->name, 'name_fa' => $request->name_fa, @@ -60,8 +58,7 @@ class RoleManagementController extends Controller { auth()->user()->addActivityComplete(1044); - DB::transaction(function () use ($request, $role) - { + DB::transaction(function () use ($request, $role) { $role->update([ 'name' => $request->name, 'name_fa' => $request->name_fa, diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php index cf03a4ae..e3cc6934 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorController.php @@ -44,8 +44,9 @@ class OperatorController extends Controller */ public function excelReport(Request $request, OperatorService $operatorService): BinaryFileResponse { - $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از نگهداری حریم راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $operatorService->datatable($request); + return Excel::download(new OperatorCartableReport($data['data']), $name); } @@ -59,8 +60,7 @@ class OperatorController extends Controller ->where('item', 17) ->firstOrFail(); - DB::transaction(function () use ($request, $coordinates, $item, $nominatimService, $user) - { + DB::transaction(function () use ($request, $coordinates, $item, $nominatimService, $user) { $step = SafetyAndPrivacySteps::SHENASAEI->value; $safety_and_privacy = SafetyAndPrivacy::query()->create([ 'lat' => $coordinates[0], @@ -73,7 +73,7 @@ class OperatorController extends Controller 'info_fa' => $item->sub_item_str, 'city_id' => $user->city_id, 'city_fa' => $user->city_fa, - 'activity_date_time' => $request->activity_date." ".$request->activity_time, + 'activity_date_time' => $request->activity_date.' '.$request->activity_time, 'edare_shahri_id' => $user->edarate_shahri_id, 'edare_shahri_name' => $user->edarate_shahri_name, 'way_id' => $nominatimService->get_way_id_from_nominatim($coordinates[0], $coordinates[1]), @@ -145,13 +145,13 @@ class OperatorController extends Controller 'step_fa' => SafetyAndPrivacySteps::name($step), 'status' => $status_id, 'status_fa' => SafetyAndPrivacyStatus::name($status_id), - 'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"), - 'finish_picture' => FileFacade::save($request->finish_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/finish_picture"), + 'action_picture' => FileFacade::save($request->action_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/action_picture"), + 'finish_picture' => FileFacade::save($request->finish_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/finish_picture"), 'evidence_picture' => FileFacade::save($request->evidence_picture, "safety_and_privacy/{$safetyAndPrivacy->id}/evidence_picture"), 'action_picture_document_upload_date' => now(), 'action_date' => $request->action_date, 'is_finished' => true, - 'final_description' => 'پیام سیستمی : این عملیات پس از طی تمامی گام ها خاتمه یافت' + 'final_description' => 'پیام سیستمی : این عملیات پس از طی تمامی گام ها خاتمه یافت', ]); $user->addActivityComplete(1136); @@ -183,8 +183,7 @@ class OperatorController extends Controller { FileFacade::deleteDirectory("safety_and_privacy/{$safetyAndPrivacy->id}"); - DB::transaction(function () use ($safetyAndPrivacy) - { + DB::transaction(function () use ($safetyAndPrivacy) { auth()->user()->addActivityComplete(1155); $safetyAndPrivacy->delete(); }); diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php index 7283dcf2..30db7766 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php @@ -41,10 +41,12 @@ class AccessRoadActivityController extends Controller 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } + public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(90, $request); - $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new ExcelReport($data), $name); } @@ -54,8 +56,8 @@ class AccessRoadActivityController extends Controller $request, 90, ); - $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new AccessRoadReport($data, $request), $name); } - } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php index 0db03253..1698d694 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class ConstructionActivityController extends Controller { use ApiResponse; + public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->countryActivity(89, $request); @@ -27,7 +28,8 @@ class ConstructionActivityController extends Controller 'provinces' => Province::all(['id', 'name_fa']), ]); } - public function provinceActivity(Request $request, OperatorService $operatorService,): JsonResponse + + public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->provinceActivity( $request, @@ -47,7 +49,7 @@ class ConstructionActivityController extends Controller public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(89, $request); - $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز'.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new ExcelReport($data), $name); } @@ -62,7 +64,7 @@ class ConstructionActivityController extends Controller $request, 89, ); - $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز'.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new ConstructionReport($data, $request), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php index 3e92c834..e54efdbf 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php @@ -27,6 +27,7 @@ class UtilityPassingActivityController extends Controller 'provinces' => Province::all(['id', 'name_fa']), ]); } + public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse { $data = $operatorService->provinceActivity( @@ -39,11 +40,13 @@ class UtilityPassingActivityController extends Controller 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } + public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(91, $request); - $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + return Excel::download(new ExcelReport($data), $name); } @@ -53,7 +56,7 @@ class UtilityPassingActivityController extends Controller $request, 91, ); - $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز '.verta()->now()->format('Y-m-d H-i').'.xlsx'; return Excel::download(new UtilityPassingReport($data, $request), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php index 0cd984c5..e11c6ad9 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorController.php @@ -9,7 +9,6 @@ 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; use Maatwebsite\Excel\Facades\Excel; @@ -33,8 +32,9 @@ class SupervisorController extends Controller */ public function excelReport(Request $request, SupervisorService $supervisorService): BinaryFileResponse { - $name = 'گزارش از نگهداری حریم راه ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = 'گزارش از نگهداری حریم راه '.verta()->now()->format('Y-m-d H-i').'.xlsx'; $data = $supervisorService->dataTable($request); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php index 601a0384..4e48dea3 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/SupervisorReportController.php @@ -2,21 +2,8 @@ namespace App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy; -use App\Enums\SafetyAndPrivacyStatus; -use App\Exports\V3\SafetyAndPrivacy\CountryActivityReport; -use App\Exports\V3\SafetyAndPrivacy\ProvinceActivityReport; -use App\Exports\V3\SafetyAndPrivacy\SupervisorCartableReport; use App\Http\Controllers\Controller; -use App\Http\Requests\V3\SafetyAndPrivacy\RejectRequest; use App\Http\Traits\ApiResponse; -use App\Models\EdarateShahri; -use App\Models\Province; -use App\Models\SafetyAndPrivacy; -use App\Services\Cartables\SafetyAndPrivacyTableService; -use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; -use Maatwebsite\Excel\Facades\Excel; -use Symfony\Component\HttpFoundation\BinaryFileResponse; class SupervisorReportController extends Controller { diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index 49f27396..23cd821f 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -5,14 +5,12 @@ namespace App\Http\Controllers\V3\Dashboard; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; -use App\Http\Requests\V3\Dashboard\UserManagement\PermissionUpdateRequest; use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest; use App\Http\Requests\V3\Dashboard\UserManagement\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\City; use App\Models\EdarateOstani; use App\Models\EdarateShahri; -use App\Models\Permission; use App\Models\Province; use App\Models\Role; use App\Models\User; @@ -22,7 +20,6 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Facades\Storage; class UserManagementController extends Controller { @@ -75,9 +72,10 @@ class UserManagementController extends Controller ->get(); } else { return response()->json([ - 'message' => 'Forbidden' + 'message' => 'Forbidden', ], 403); } + return $this->successResponse($users); } @@ -85,36 +83,36 @@ class UserManagementController extends Controller { $user = auth()->user(); - $user ->addActivityComplete(1039); + $user->addActivityComplete(1039); User::query()->create([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id ?: null, - 'city_id' => $request->city_id ?: null, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, - 'first_name' => $request->first_name, - 'last_name' => $request->last_name, - 'position' => $request->position, - 'mobile' => $request->mobile, - 'degree' => $request->degree, - 'major' => $request->major, + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; + $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; if ($request->edarate_ostani_id != 'null') { $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; $user->edarate_ostani_id = $request->edarate_ostani_id; $user->edarate_ostani_name = $temp; if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; + $user->name = $temp.' '.$user->province_fa; } else { - $user->name = $temp .' استان '. $user->province_fa; + $user->name = $temp.' استان '.$user->province_fa; } } else { $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; @@ -122,9 +120,9 @@ class UserManagementController extends Controller $user->edarate_shahri_name = $temp; if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; + $user->name = $temp.' '.$user->province_fa; } else { - $user->name = $temp .' استان '. $user->province_fa; + $user->name = $temp.' استان '.$user->province_fa; } } @@ -137,6 +135,7 @@ class UserManagementController extends Controller public function show(User $user) { $user = User::where('id', $user->id)->with(['roles', 'permissions'])->get(); + return $this->successResponse($user); } @@ -145,33 +144,33 @@ class UserManagementController extends Controller auth()->user()->addActivityComplete(1040); $user->update([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id ?: null, - 'city_id' => $request->city_id ?: null, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, - 'first_name' => $request->first_name, - 'last_name' => $request->last_name, - 'position' => $request->position, - 'mobile' => $request->mobile, - 'degree' => $request->degree, - 'major' => $request->major, + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, ]); $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa ; + $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; if ($request->edarate_ostani_id != 'null') { $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; $user->edarate_ostani_id = $request->edarate_ostani_id; $user->edarate_ostani_name = $temp; if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; + $user->name = $temp.' '.$user->province_fa; } else { - $user->name = $temp .' استان '. $user->province_fa; + $user->name = $temp.' استان '.$user->province_fa; } } else { $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; @@ -179,18 +178,18 @@ class UserManagementController extends Controller $user->edarate_shahri_name = $temp; if ($request->province_id == 0) { - $user->name = $temp .' '. $user->province_fa; + $user->name = $temp.' '.$user->province_fa; } else { - $user->name = $temp .' استان '. $user->province_fa; + $user->name = $temp.' استان '.$user->province_fa; } } - if (!is_null($request->password)) { + if (! is_null($request->password)) { $user->password = Hash::make($request->password); } - if (!is_null($request->permissions)) { - $user->syncPermissions(explode(",", $request->permissions)); + if (! is_null($request->permissions)) { + $user->syncPermissions(explode(',', $request->permissions)); } if ($request->filled('roles')) { @@ -205,10 +204,11 @@ class UserManagementController extends Controller public function destroy(User $user) { $user->delete(); + return $this->successResponse(); } - public function givePermissionsTo(GivePermissionRequest $request,User $user): JsonResponse + public function givePermissionsTo(GivePermissionRequest $request, User $user): JsonResponse { $user->givePermissionTo($request->permissions); @@ -223,6 +223,7 @@ class UserManagementController extends Controller return $this->successResponse($role->load('permissions')); } + public function giveRolesToUser(GiveRoleRequest $request, User $user): JsonResponse { $roles = $request->roles; @@ -257,14 +258,15 @@ class UserManagementController extends Controller { $request->validate([ 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - 'confirm' => 'required|in:0,1' + 'confirm' => 'required|in:0,1', ]); - $user_ids = explode(",", $request->user_ids); + $user_ids = explode(',', $request->user_ids); User::whereIn('id', $user_ids)->update([ - 'confirmed' => $request->confirm + 'confirmed' => $request->confirm, ]); + return $this->successResponse(); } @@ -276,14 +278,14 @@ class UserManagementController extends Controller ]); $user->password = Hash::make($request->password); $user->save(); + return $this->successResponse(); } - public function getUserSummaryReport(Request $request, User $user) { - $request->fromDate = $request->fromDate ? $request->fromDate . " 00:00:00" : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00'); - $request->toDate = $request->toDate ? $request->toDate . " 23:59:59" : Carbon::now()->format('Y-m-d 23:59:59'); + $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00'); + $request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59'); $data = []; $ids_list = ''; @@ -300,7 +302,7 @@ class UserManagementController extends Controller HOUR (created_at) AS hh, user_id FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') ) user_activity_distinct GROUP BY yy, mm, @@ -308,7 +310,7 @@ class UserManagementController extends Controller hh, user_id ) user_activity_by_hour_and_ - GROUP BY user_id) AS calculated_table;"; + GROUP BY user_id) AS calculated_table;'; $temp_sql_for_activity_list = " SELECT *, @@ -318,29 +320,28 @@ class UserManagementController extends Controller description, log_unique_code FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') ) user_activity_distinct GROUP BY log_unique_code - ORDER BY cnt desc"; + ORDER BY cnt desc'; $number_of_active_days = " SELECT COUNT(*) AS cnt FROM ( SELECT mm,dd FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') GROUP BY mm,dd ) active_days - ORDER BY cnt desc"; - + ORDER BY cnt desc'; $number_of_activities = " SELECT COUNT(*) AS cnt FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.") - ORDER BY cnt desc"; + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$user->id.') + ORDER BY cnt desc'; $number_of_active_days = (DB::select($number_of_active_days)[0]->cnt ? DB::select($number_of_active_days)[0]->cnt : -1); $activity_time = DB::select($temp_sql_for_activity_time)[0]->activity; @@ -349,20 +350,21 @@ class UserManagementController extends Controller 'number_of_active_days' => $number_of_active_days, 'activity_time' => $user->id ? $activity_time : null, - 'average_activity_time' => round(($user->id ? $activity_time : 0) / $number_of_active_days, 2) , - 'number_of_activities' => $number_of_activities , - 'average_activity_number' => round(($user->id ? $number_of_activities : 0) / $number_of_active_days, 2) , + 'average_activity_time' => round(($user->id ? $activity_time : 0) / $number_of_active_days, 2), + 'number_of_activities' => $number_of_activities, + 'average_activity_number' => round(($user->id ? $number_of_activities : 0) / $number_of_active_days, 2), 'activity_list' => $user->id ? DB::select($temp_sql_for_activity_list) : null, 'last_login' => $user->last_login, ]; + return $data; } public function printGroup(User $user, Request $request) { - $request->fromDate = $request->fromDate ? $request->fromDate . " 00:00:00" : Carbon::now()->format('Y-m-d 00:00:00') ; - $request->toDate = $request->toDate ? $request->toDate . " 23:59:59" : Carbon::now()->format('Y-m-d 23:59:59'); + $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->format('Y-m-d 00:00:00'); + $request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59'); $data = []; @@ -370,21 +372,20 @@ class UserManagementController extends Controller // $users = $role->users()->select("*")->get()->toArray(); // foreach ($user as $index => $item) { $user_activity_quantity_temp[$user->id] = [ - "majmoe" => 0, - "name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name." (".$user->username.")", + 'majmoe' => 0, + 'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.' ('.$user->username.')', ]; $user_activity_time_temp[$user->id] = [ - "majmoe" => 0, - "name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name."(".$user->username.")", + 'majmoe' => 0, + 'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.'('.$user->username.')', ]; $user_activity_top_5_temp[$user->id] = [ - "activity_list" => [], - "name" => $user->first_name ? $user->first_name." ".$user->last_name." (".$user->username.")" : $user->name."(".$user->username.")", + 'activity_list' => [], + 'name' => $user->first_name ? $user->first_name.' '.$user->last_name.' ('.$user->username.')' : $user->name.'('.$user->username.')', ]; - // if (!$index) { $ids_list = $user->id; // } else { @@ -399,7 +400,7 @@ class UserManagementController extends Controller COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, @@ -407,18 +408,18 @@ class UserManagementController extends Controller hh, user_id ) user_activity_by_hour_and_ - GROUP BY user_id) AS calculated_table;"; + GROUP BY user_id) AS calculated_table;'; $quantitative_activity_chart_sql = " SELECT created_at, COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, - dd ;"; + dd ;'; $hourly_activity_chart_sql = " SELECT @@ -430,7 +431,7 @@ class UserManagementController extends Controller hh, COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, dd, @@ -440,14 +441,13 @@ class UserManagementController extends Controller GROUP BY yy, mm, - dd;"; + dd;'; $total_activity_quantity_sql = " SELECT COUNT(*) AS total_activity_quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") - "; - + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') + '; $top_10_activity_list_sql = " SELECT *, @@ -457,13 +457,12 @@ class UserManagementController extends Controller description, log_unique_code FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') ) user_activity_distinct GROUP BY log_unique_code ORDER BY quantity desc - LIMIT 10"; - + LIMIT 10'; $user_activity_quantity_sql = " SELECT *, @@ -476,10 +475,10 @@ class UserManagementController extends Controller user_name, username FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') ) user_activity_distinct GROUP BY user_id - ORDER BY quantity desc"; + ORDER BY quantity desc'; $active_user_count_sql = " SELECT COUNT(*) AS active_user_count @@ -487,9 +486,9 @@ class UserManagementController extends Controller SELECT user_id FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY user_id - ) grpuped_by_user_id"; + ) grpuped_by_user_id'; $user_activity_time_sql = " select @@ -504,7 +503,7 @@ class UserManagementController extends Controller user_id, COUNT(*) AS quantity FROM user_activity_logs - WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.") + WHERE created_at between '{$request->fromDate}' and '{$request->toDate}' and user_id IN(".$ids_list.') GROUP BY yy, mm, dd, @@ -512,19 +511,19 @@ class UserManagementController extends Controller user_id ) user_activity_by_hour_and_ GROUP BY user_id - ORDER BY majmoe desc;"; + ORDER BY majmoe desc;'; foreach (DB::select($user_activity_quantity_sql) as $key => $value) { $user_activity_quantity_temp[$value->user_id] = [ - "majmoe" => $value->quantity ?? 0, - "name" => $value->user_first_name ? $value->user_first_name." ".$value->user_last_name." (".$value->username.")" : $value->user_name." (".$value->username.")", + 'majmoe' => $value->quantity ?? 0, + 'name' => $value->user_first_name ? $value->user_first_name.' '.$value->user_last_name.' ('.$value->username.')' : $value->user_name.' ('.$value->username.')', ]; } foreach (DB::select($user_activity_time_sql) as $key => $value) { $user_activity_time_temp[$value->user_id] = [ - "majmoe" => $value->majmoe ?? 0, - "name" => $value->user_first_name ? $value->user_first_name." ".$value->user_last_name." (".$value->username.")" : $value->user_name." (".$value->username.")", + 'majmoe' => $value->majmoe ?? 0, + 'name' => $value->user_first_name ? $value->user_first_name.' '.$value->user_last_name.' ('.$value->username.')' : $value->user_name.' ('.$value->username.')', ]; } @@ -546,9 +545,9 @@ class UserManagementController extends Controller $sum += (int) $item->quantity; } $user_activity_top_5_temp[$key] = [ - "sum" => $sum, - "name" => $value['name'], - "activity_list" => $activity_list, + 'sum' => $sum, + 'name' => $value['name'], + 'activity_list' => $activity_list, ]; } arsort($user_activity_top_5_temp); @@ -564,19 +563,21 @@ class UserManagementController extends Controller 'total_activity_time' => $ids_list ? DB::select($total_activity_time_sql)[0]->activity : null, 'top_10_activity_list' => $ids_list ? DB::select($top_10_activity_list_sql) : null, 'user_activity_quantity' => $ids_list ? $user_activity_quantity_temp : null, - 'group_name' => $user->first_name." ".$user->last_name, - 'average' => round(($ids_list ? DB::select($total_activity_time_sql)[0]->activity : 0) / 1, 2) , + 'group_name' => $user->first_name.' '.$user->last_name, + 'average' => round(($ids_list ? DB::select($total_activity_time_sql)[0]->activity : 0) / 1, 2), 'user_activity_top_5_temp' => $user_activity_top_5_temp, 'total_user_count' => 1, 'active_user_count' => $ids_list ? DB::select($active_user_count_sql)[0]->active_user_count : null, - 'group_id' => $user->id + 'group_id' => $user->id, ]; return View('word.user-activity-individual', compact('data')); } + public function userPermission($id) { $user = User::find($id); + return response()->json([ 'message' => 'success', 'data' => $user->permissions, @@ -588,29 +589,30 @@ class UserManagementController extends Controller if (auth()->user()) { auth()->user()->addActivityComplete(1042); } - $permissions = explode(",", $request->permissions); + $permissions = explode(',', $request->permissions); if (! $permissions == null) { $user->syncPermissions($permissions); } return response()->json([ 'message' => 'status', - 'data' => User::where('id', $user->id)->with(['permissions'])->get() + 'data' => User::where('id', $user->id)->with(['permissions'])->get(), ]); } - public function changeUserEnabeld(User $user) { if (Auth::user()->checkUserHasPermission('full-user-management')) { - $user->enabled = !$user->enabled; + $user->enabled = ! $user->enabled; + return $this->successResponse($user); } elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) { - $user->enabled = !$user->enabled; + $user->enabled = ! $user->enabled; + return $this->successResponse(); } else { return response()->json([ - 'message' => 'Forbidden' + 'message' => 'Forbidden', ], 403); } } diff --git a/app/Http/Controllers/V3/FMSVehicleManagementController.php b/app/Http/Controllers/V3/FMSVehicleManagementController.php index 898ede9d..3008353a 100644 --- a/app/Http/Controllers/V3/FMSVehicleManagementController.php +++ b/app/Http/Controllers/V3/FMSVehicleManagementController.php @@ -19,12 +19,13 @@ class FMSVehicleManagementController extends Controller public function getActivity(Request $request, GetVehicleActivityService $getVehicleActivityService): JsonResponse { $getVehicleActivityService->setInputParameters([ - "machineCode" => $request->machineCode, - "startDT" => $request->startDT, - "endDT" => $request->endDT, + 'machineCode' => $request->machineCode, + 'startDT' => $request->startDT, + 'endDT' => $request->endDT, ]); $data = $getVehicleActivityService->run(); + return $this->successResponse($data); } } diff --git a/app/Http/Controllers/V3/Harim/DivarkeshiController.php b/app/Http/Controllers/V3/Harim/DivarkeshiController.php index 2e67a8ad..937799fd 100644 --- a/app/Http/Controllers/V3/Harim/DivarkeshiController.php +++ b/app/Http/Controllers/V3/Harim/DivarkeshiController.php @@ -2,14 +2,13 @@ namespace App\Http\Controllers\V3\Harim; +use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; -use Illuminate\Http\Request; -use App\Models\Harim\Divarkeshi; use App\Http\Requests\V3\Harim\Divarkeshi\StoreRequest; use App\Http\Traits\ApiResponse; +use App\Models\Harim\Divarkeshi; use Illuminate\Http\JsonResponse; -use App\Facades\DataTable\DataTableFacade; - +use Illuminate\Http\Request; class DivarkeshiController extends Controller { @@ -17,7 +16,7 @@ class DivarkeshiController extends Controller public function index(Request $request): JsonResponse { - $columns = array( + $columns = [ 'dabirkhaneh_number', 'nameh_date', 'nameh_date_fa', @@ -72,7 +71,7 @@ class DivarkeshiController extends Controller 'shomare_daftarkhaneh', 'description', 'ronevesht', - ); + ]; $allowedFilters = $columns; $allowedSortings = $columns; @@ -160,5 +159,4 @@ class DivarkeshiController extends Controller { return $this->successResponse($divarkeshi); } - } diff --git a/app/Http/Controllers/V3/LogListManagementController.php b/app/Http/Controllers/V3/LogListManagementController.php index c351fca6..15105588 100644 --- a/app/Http/Controllers/V3/LogListManagementController.php +++ b/app/Http/Controllers/V3/LogListManagementController.php @@ -8,8 +8,8 @@ use App\Http\Requests\V3\LogList\StoreRequest; use App\Http\Requests\V3\LogList\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\LogList; -use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; class LogListManagementController extends Controller { @@ -52,12 +52,14 @@ class LogListManagementController extends Controller 'log_unique_code' => $request->log_unique_code, 'action_type' => $request->action_type, ]); + return $this->successResponse(); } public function destroy(LogList $logList): JsonResponse { $logList->delete(); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/NotificationController.php b/app/Http/Controllers/V3/NotificationController.php index b05f9f72..cf00a3d9 100644 --- a/app/Http/Controllers/V3/NotificationController.php +++ b/app/Http/Controllers/V3/NotificationController.php @@ -11,7 +11,6 @@ use App\Models\Mission; use App\Models\RoadItemsProject; use App\Models\RoadObserved; use App\Models\SafetyAndPrivacy; -use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Throwable; @@ -22,6 +21,7 @@ class NotificationController extends Controller /** * Handle the incoming request. + * * @throws Throwable */ public function __invoke(Request $request): JsonResponse @@ -41,7 +41,7 @@ class NotificationController extends Controller { $user = auth()->user(); $road_items = [ - 'total' => 0 + 'total' => 0, ]; if ($user->hasPermissionTo('create-road-item')) { @@ -60,9 +60,8 @@ class NotificationController extends Controller ->count(); $road_items['total'] += $road_items['supervise_cnt']; - } - elseif ($user->hasPermissionTo('supervise-road-item-province')) { - throw_if(is_null($user->province_id) || !$user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); + } elseif ($user->hasPermissionTo('supervise-road-item-province')) { + throw_if(is_null($user->province_id) || ! $user->province_id, new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $road_items['supervise_cnt'] = RoadItemsProject::query() ->where('is_new', '=', 1) @@ -71,20 +70,20 @@ class NotificationController extends Controller ->count(); $road_items['total'] += $road_items['supervise_cnt']; - } - elseif ($user->hasPermissionTo('supervise-road-item-by-edareostani')) { - throw_if(is_null($user->edarate_ostani_id) || !$user->edarate_ostani_id, new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); + } elseif ($user->hasPermissionTo('supervise-road-item-by-edareostani')) { + throw_if(is_null($user->edarate_ostani_id) || ! $user->edarate_ostani_id, new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $confirmableItems = EdarateOstani::query()->where('id', '=', $user->edarate_ostani_id)->value('items_for_confirm'); $road_items['supervise_cnt'] = RoadItemsProject::query() ->where('is_new', '=', 1) ->where('province_id', '=', $user->province_id) - ->whereIn('item', explode(",", $confirmableItems)) + ->whereIn('item', explode(',', $confirmableItems)) ->where('status', '=', 0) ->count(); $road_items['total'] += $road_items['supervise_cnt']; } + return $road_items; } @@ -94,15 +93,14 @@ class NotificationController extends Controller private function safetyAndPrivacyNotifications(): JsonResponse|array { $user = auth()->user(); - $safety_and_privacy = array(); + $safety_and_privacy = []; if ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable')) { $safety_and_privacy['supervise_cnt'] = SafetyAndPrivacy::query() ->where('is_finished', '=', 1) ->where('status', '=', 0) ->count(); - } - elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) { + } elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-province')) { throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $safety_and_privacy['supervise_cnt'] = SafetyAndPrivacy::query() @@ -110,8 +108,7 @@ class NotificationController extends Controller ->where('is_finished', '=', 1) ->where('status', '=', 0) ->count(); - } - elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-edarate-shahri')) { + } elseif ($user->hasPermissionTo('show-safety-and-privacy-operator-cartable-edarate-shahri')) { throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $activity = SafetyAndPrivacy::query() @@ -142,45 +139,43 @@ class NotificationController extends Controller 'total' => 0, 'operation_cnt' => 0, 'complaint_cnt' => 0, - 'supervise_cnt' => 0 + 'supervise_cnt' => 0, ]; if ($user->hasPermissionTo('show-fast-react')) { $road_observations['supervise_cnt'] = RoadObserved::query()->where([ ['rms_status', '<>', 0], - ['status', '=', 0] + ['status', '=', 0], ])->count(); $road_observations['complaint_cnt'] = RoadObserved::query()->where('rms_status', '=', 0) ->whereNotNull('edarate_shahri_id') ->count(); - } - elseif ($user->hasPermissionTo('show-fast-react-province')) { + } elseif ($user->hasPermissionTo('show-fast-react-province')) { throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $road_observations['supervise_cnt'] = RoadObserved::query()->where([ ['rms_status', '<>', 0], ['status', '=', 0], - ['province_id', '=', $user->province_id] + ['province_id', '=', $user->province_id], ])->count(); $road_observations['complaint_cnt'] = RoadObserved::query()->where([ ['rms_status', '=', 0], - ['province_id', '=', $user->province_id] + ['province_id', '=', $user->province_id], ])->count(); - } - elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) { + } elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) { throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $road_observations['operation_cnt'] = RoadObserved::query()->where([ ['rms_status', '<>', 0], ['status', '=', 2], - ['edarate_shahri_id', '=', $user->edarate_shahri_id] + ['edarate_shahri_id', '=', $user->edarate_shahri_id], ])->count(); $road_observations['complaint_cnt'] = RoadObserved::query()->where([ ['rms_status', '=', 0], - ['edarate_shahri_id', '=', $user->edarate_shahri_id] + ['edarate_shahri_id', '=', $user->edarate_shahri_id], ])->count(); } @@ -196,7 +191,7 @@ class NotificationController extends Controller 'request_portal' => Mission::query() ->where([ ['state_id', '=', MissionStates::REJECT_BY_TRANSPORTATION->value], - ['user_id', '=', $user->id] + ['user_id', '=', $user->id], ])->count(), 'transportation' => 0, 'control' => 0, @@ -205,13 +200,13 @@ class NotificationController extends Controller if ($user->hasPermissionTo('manage-transportation-unit')) { $missions['transportation'] = Mission::query()->where([ ['state_id', '=', MissionStates::REQUEST_CREATED->value], - ['edare_shahri_id', '=', $user->edarate_shahri_id] + ['edare_shahri_id', '=', $user->edarate_shahri_id], ])->count(); } if ($user->hasPermissionTo('manage-control-unit')) { $missions['control'] = Mission::query()->where([ ['state_id', '=', MissionStates::PENDING_CONFIRMATION->value], - ['edare_shahri_id', '=', $user->edarate_shahri_id] + ['edare_shahri_id', '=', $user->edarate_shahri_id], ])->count(); } diff --git a/app/Http/Controllers/V3/PermissionManagementController.php b/app/Http/Controllers/V3/PermissionManagementController.php index 8ac3eec6..abb67130 100644 --- a/app/Http/Controllers/V3/PermissionManagementController.php +++ b/app/Http/Controllers/V3/PermissionManagementController.php @@ -14,6 +14,7 @@ use Illuminate\Http\Request; class PermissionManagementController extends Controller { use ApiResponse; + /** * Display a listing of the resource. */ @@ -78,6 +79,7 @@ class PermissionManagementController extends Controller public function destroy(Permission $permission): JsonResponse { $permission->delete(); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/ProfileController.php b/app/Http/Controllers/V3/ProfileController.php index b4b0fa70..ab0eed0f 100644 --- a/app/Http/Controllers/V3/ProfileController.php +++ b/app/Http/Controllers/V3/ProfileController.php @@ -2,21 +2,20 @@ namespace App\Http\Controllers\V3; -use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Profile\ChangePasswordRequest; use App\Http\Requests\V3\Profile\EditRequest; use App\Http\Traits\ApiResponse; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Hash; -use Illuminate\Support\Facades\Storage; class ProfileController extends Controller { use ApiResponse; + public function info(): JsonResponse { $user = Auth::user(); @@ -32,7 +31,7 @@ class ProfileController extends Controller 'degree' => $user->degree, 'mobile' => $user->mobile, 'province_id' => $user->province_id, - 'avatar' => $user->avatarUrl() + 'avatar' => $user->avatarUrl(), ]); } @@ -40,16 +39,15 @@ class ProfileController extends Controller { $user = Auth::user(); - if ($request->has('avatar')) - { + if ($request->has('avatar')) { if ($user->avatar) { File::delete($user->avatar); } - $destinationPath = 'avatar/' . $user->username; - $filename = time() .".". $request->file('avatar')->getClientOriginalExtension(); + $destinationPath = 'avatar/'.$user->username; + $filename = time().'.'.$request->file('avatar')->getClientOriginalExtension(); $request->file('avatar')->storeAs($destinationPath, $filename, 'public'); - $avatar = 'storage/'.$destinationPath ."/". $filename; + $avatar = 'storage/'.$destinationPath.'/'.$filename; } $user->update([ @@ -58,7 +56,7 @@ class ProfileController extends Controller 'major' => $request->major, 'degree' => $request->degree, 'mobile' => $request->mobile, - 'avatar' => $avatar ?? $user->avatar + 'avatar' => $avatar ?? $user->avatar, ]); return $this->successResponse(); @@ -68,13 +66,12 @@ class ProfileController extends Controller { $user = Auth::user(); - if (! Hash::check($request->current_password, $user->password)) - { + if (! Hash::check($request->current_password, $user->password)) { return $this->errorResponse(__('messages.incorrect_current_password')); } $user->update([ - 'password' => Hash::make($request->new_password) + 'password' => Hash::make($request->new_password), ]); return $this->successResponse(); @@ -84,6 +81,7 @@ class ProfileController extends Controller public function addActivity(Request $request): JsonResponse { auth()->user()->addActivityComplete($request->activityCode); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/RahdaranController.php b/app/Http/Controllers/V3/RahdaranController.php index 412b7ac3..52b74127 100644 --- a/app/Http/Controllers/V3/RahdaranController.php +++ b/app/Http/Controllers/V3/RahdaranController.php @@ -67,9 +67,9 @@ class RahdaranController extends Controller $edareh = EdarateShahri::query()->find($request->input('edareh_shahri_id')); $rahdaran->update([ - 'name' =>$request->name, - 'code' =>$request->code, - 'mobile' =>$request->mobile, + 'name' => $request->name, + 'code' => $request->code, + 'mobile' => $request->mobile, 'province_id' => $province->id, 'province_name' => $province->name_fa, 'edareh_shahri_id' => $request->edareh_shahri_id, @@ -84,9 +84,9 @@ class RahdaranController extends Controller { try { $rahdaran->delete(); + return $this->successResponse(); - } - catch (QueryException $exception) { + } catch (QueryException $exception) { return $this->errorResponse('امکان حذف وجود ندارد'); } } diff --git a/app/Http/Controllers/V3/WebServices/RoadItemController.php b/app/Http/Controllers/V3/WebServices/RoadItemController.php index e395f4dd..b05ef8fe 100644 --- a/app/Http/Controllers/V3/WebServices/RoadItemController.php +++ b/app/Http/Controllers/V3/WebServices/RoadItemController.php @@ -11,6 +11,7 @@ use Illuminate\Http\JsonResponse; class RoadItemController extends Controller { use ApiResponse; + public function index(IndexRequest $request): JsonResponse { $fromDate = $request->from_date; diff --git a/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php index a16294c8..543203fc 100644 --- a/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php @@ -7,7 +7,6 @@ use App\Http\Requests\V3\WebServices\RoadMaintenanceStation\IndexRequest; use App\Http\Traits\ApiResponse; use App\Models\RahdariPoint; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class RoadMaintenanceStationController extends Controller { @@ -22,11 +21,11 @@ class RoadMaintenanceStationController extends Controller $data = RahdariPoint::query() ->when($status, fn ($query, $status) => $query->where('status', $status)) ->when($type, fn ($query, $type) => $query->where('type', $type)) - ->when($province, fn($query, $province) => $query->where('province_id', $province)) + ->when($province, fn ($query, $province) => $query->where('province_id', $province)) ->get([ - 'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone', - 'code', 'lat', 'lng', - ]); + 'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone', + 'code', 'lat', 'lng', + ]); return $this->successResponse($data); } diff --git a/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php b/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php index d5ec9876..a29a50d2 100644 --- a/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/ChangeStatusRequest.php @@ -2,11 +2,9 @@ namespace App\Http\Requests\V3\AccidentReceipt; -use App\Enums\AccidentStates; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Auth; -use Illuminate\Validation\Rule; class ChangeStatusRequest extends FormRequest { @@ -15,7 +13,7 @@ class ChangeStatusRequest extends FormRequest */ public function authorize(): bool { - return Auth::user()->hasPermissionTo('change-accident-status'); + return Auth::user()->hasPermissionTo('change-accident-status'); } /** diff --git a/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php b/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php index fc24bf06..9653ddab 100644 --- a/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/ConfirmPaymentInfoRequest.php @@ -3,7 +3,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; use App\Enums\AccidentStates; -use App\Models\Accident; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmPaymentInfoRequest extends FormRequest @@ -14,14 +14,16 @@ class ConfirmPaymentInfoRequest extends FormRequest public function authorize(): bool { return in_array($this->accident->status, - [AccidentStates::SODOR_NAME_BIME_VA_DAGHI->value, AccidentStates::SABT_FISH->value] - ); + [ + AccidentStates::SODOR_NAME_BIME_VA_DAGHI->value, + AccidentStates::SABT_FISH->value + ]); } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php b/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php index 2e967f3a..c0983034 100644 --- a/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php @@ -2,8 +2,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; -use App\Enums\AccidentStates; -use App\Models\DailyAccidentSettings; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -19,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php b/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php index c36b2e9c..afd287b0 100644 --- a/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/SubmitInvoiceRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; use App\Enums\AccidentStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class SubmitInvoiceRequest extends FormRequest @@ -18,7 +19,7 @@ class SubmitInvoiceRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php index 1959b35f..bc70da10 100644 --- a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\AccidentReceipt; use App\Enums\AccidentStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Azmayesh/StoreRequest.php b/app/Http/Requests/V3/Azmayesh/StoreRequest.php index dabf49b6..d1a2f347 100644 --- a/app/Http/Requests/V3/Azmayesh/StoreRequest.php +++ b/app/Http/Requests/V3/Azmayesh/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Azmayesh; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Azmayesh/UpdateRequest.php b/app/Http/Requests/V3/Azmayesh/UpdateRequest.php index bbc8b87d..c3fa7a61 100644 --- a/app/Http/Requests/V3/Azmayesh/UpdateRequest.php +++ b/app/Http/Requests/V3/Azmayesh/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Azmayesh; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php b/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php index fb1a5ea5..bde44627 100644 --- a/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php +++ b/app/Http/Requests/V3/AzmayeshSample/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshSample; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php b/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php index 4ce5d38d..ac4acef2 100644 --- a/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php +++ b/app/Http/Requests/V3/AzmayeshSample/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshSample; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshType/StoreRequest.php b/app/Http/Requests/V3/AzmayeshType/StoreRequest.php index 2c22ffc1..f4241616 100644 --- a/app/Http/Requests/V3/AzmayeshType/StoreRequest.php +++ b/app/Http/Requests/V3/AzmayeshType/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshType; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php b/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php index b7af342e..b8e4d796 100644 --- a/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php +++ b/app/Http/Requests/V3/AzmayeshType/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\AzmayeshType; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Damage/StoreRequest.php b/app/Http/Requests/V3/Damage/StoreRequest.php index 6d8647b0..7b04465c 100644 --- a/app/Http/Requests/V3/Damage/StoreRequest.php +++ b/app/Http/Requests/V3/Damage/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Damage; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,14 +18,14 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'title' =>'required|string|max:255|unique:damages,title', - 'unit' =>'required|string|max:255', - 'base_price' =>'required|integer', + 'title' => 'required|string|max:255|unique:damages,title', + 'unit' => 'required|string|max:255', + 'base_price' => 'required|integer', ]; } } diff --git a/app/Http/Requests/V3/Damage/UpdateRequest.php b/app/Http/Requests/V3/Damage/UpdateRequest.php index 8021f716..fba1a3a2 100644 --- a/app/Http/Requests/V3/Damage/UpdateRequest.php +++ b/app/Http/Requests/V3/Damage/UpdateRequest.php @@ -23,9 +23,9 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ - 'title' =>['required', 'string', 'max:255',Rule::unique('damages','title')->ignore($this->damage->id)], - 'unit' =>'required|string', - 'base_price' =>'required|integer', + 'title' => ['required', 'string', 'max:255', Rule::unique('damages', 'title')->ignore($this->damage->id)], + 'unit' => 'required|string', + 'base_price' => 'required|integer', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php index 732e9418..256d4d8d 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmRequest extends FormRequest @@ -19,7 +20,7 @@ class ConfirmRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php index 267b9347..3d61505b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRequest extends FormRequest @@ -19,7 +20,7 @@ class ReferRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php index 18209903..6226908a 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRoadAccessRequest extends FormRequest @@ -19,7 +20,7 @@ class ReferRoadAccessRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php index 5e91af0c..81f030fe 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ShowRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\Deputy; -use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest @@ -18,7 +18,7 @@ class ShowRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php index 8bbc5e5d..84c464d7 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmGuaranteeLetterNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmGuaranteeLetterNeedRequest extends FormRequest @@ -19,7 +20,7 @@ class ConfirmGuaranteeLetterNeedRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php index 8a43cb52..f9430bef 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmNoRoadAccessNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmNoRoadAccessNeedRequest extends FormRequest @@ -19,7 +20,7 @@ class ConfirmNoRoadAccessNeedRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php index d42fd1ad..70da1e2d 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmRoadAccessEditNeedRequest extends FormRequest @@ -19,7 +20,7 @@ class ConfirmRoadAccessEditNeedRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php index 8763cc5f..93c01b02 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessNeedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ConfirmRoadAccessNeedRequest extends FormRequest @@ -19,7 +20,7 @@ class ConfirmRoadAccessNeedRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php index a432ac99..4f9c91c9 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ShowRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\GeneralManager; -use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest @@ -18,7 +18,7 @@ class ShowRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php index 51c33c30..38d5397b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FileAcceptedRequest extends FormRequest @@ -19,7 +20,7 @@ class FileAcceptedRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php index 9fb3966f..5c3f386d 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FileRejectedRequest extends FormRequest @@ -19,7 +20,7 @@ class FileRejectedRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php index 927fbd74..3b9763c3 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/NeedRoadAccessRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class NeedRoadAccessRequest extends FormRequest @@ -19,7 +20,7 @@ class NeedRoadAccessRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php index 37805379..720dbe8a 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/RejectRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RejectRequest extends FormRequest @@ -16,11 +17,10 @@ class RejectRequest extends FormRequest $this->harim->state_id == HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; } - /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php index 332743a1..31ef827b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ShowRequest.php @@ -2,7 +2,6 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; -use App\Enums\HarimStates; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; @@ -16,7 +15,6 @@ class ShowRequest extends FormRequest return $this->harim->province_id == auth()->user()->province_id; } - /** * Get the validation rules that apply to the request. * diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php index 619bd34c..cd519c82 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/WithoutRoadAccessRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class WithoutRoadAccessRequest extends FormRequest @@ -19,7 +20,7 @@ class WithoutRoadAccessRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php index 8bc9d03f..c01e213e 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\ProvinceOffice; use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FeedBackRequest extends FormRequest @@ -19,7 +20,7 @@ class FeedBackRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php index f0c0d996..d0426827 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/ShowRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\ProvinceOffice; -use App\Enums\HarimStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest @@ -15,11 +15,10 @@ class ShowRequest extends FormRequest return $this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id; } - /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php index 4f628943..72bb3d47 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/StoreRequest.php @@ -25,9 +25,9 @@ class StoreRequest extends FormRequest return [ 'name' => 'required|string|unique:roles,name', 'name_fa' => 'required|string', - 'description' =>'string', + 'description' => 'string', 'permissions' => 'array', - 'permissions.*' => 'integer|exists:permissions,id' + 'permissions.*' => 'integer|exists:permissions,id', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php index c2ced356..3af32615 100644 --- a/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/RoleManageMent/UpdateRequest.php @@ -24,11 +24,11 @@ class UpdateRequest extends FormRequest public function rules(): array { return [ - 'name' => ['required', 'string', 'max:255',Rule::unique('roles','name')->ignore($this->role->id)], + 'name' => ['required', 'string', 'max:255', Rule::unique('roles', 'name')->ignore($this->role->id)], 'name_fa' => 'required|string', - 'description' =>'string', + 'description' => 'string', 'permissions' => 'array', - 'permissions.*' => 'integer|exists:permissions,id' + 'permissions.*' => 'integer|exists:permissions,id', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php index 9688af47..6e3d2574 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GivePermissionRequest.php @@ -24,7 +24,7 @@ class GivePermissionRequest extends FormRequest { return [ 'permissions' => 'array', - 'permissions.*' => 'integer|exists:permissions,id' + 'permissions.*' => 'integer|exists:permissions,id', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php index b31b77c9..6826799a 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php @@ -24,7 +24,7 @@ class GiveRoleRequest extends FormRequest { return [ 'roles' => 'array', - 'roles.*' => 'integer|exists:permissions,id' + 'roles.*' => 'integer|exists:permissions,id', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php index 522f6107..c530e73d 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index 7cf11e76..7a03c279 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -28,8 +28,8 @@ class UpdateRequest extends FormRequest 'edarate_ostani_id' => 'exists:edarate_ostanis,id', 'city_id' => 'exists:cities,id', 'edarate_shahri_id' => 'exists:edarate_shahris,id', - 'username' => ['required',Rule::unique('users','username')->ignore($this->user->id)], - 'national_code' =>['required',Rule::unique('users','national_code')->ignore($this->user->id)], + 'username' => ['required', Rule::unique('users', 'username')->ignore($this->user->id)], + 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], 'password' => 'required|min:8', ]; } diff --git a/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php b/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php index 31d8bf27..3126bd79 100644 --- a/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php +++ b/app/Http/Requests/V3/Harim/Divarkeshi/StoreRequest.php @@ -2,8 +2,8 @@ namespace App\Http\Requests\V3\Harim\Divarkeshi; -use Illuminate\Foundation\Http\FormRequest; use Illuminate\Contracts\Validation\ValidationRule; +use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest { @@ -18,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -34,10 +34,10 @@ class StoreRequest extends FormRequest 'motaghazi_firstname' => 'required', 'motaghazi_lastname' => 'required', - /// conditional rule + // / conditional rule 'national_id' => 'numeric', 'shenase_melli' => 'numeric', - /// + // / 'tel_number' => 'numeric', 'mobile_number' => 'numeric', diff --git a/app/Http/Requests/V3/LogList/StoreRequest.php b/app/Http/Requests/V3/LogList/StoreRequest.php index 65d1da73..075d34b0 100644 --- a/app/Http/Requests/V3/LogList/StoreRequest.php +++ b/app/Http/Requests/V3/LogList/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\LogList; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,14 +18,14 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'description' =>'required|string', - 'log_unique_code' =>'required|numeric|unique:log_lists,log_unique_code', - 'action_type' =>'required|string', + 'description' => 'required|string', + 'log_unique_code' => 'required|numeric|unique:log_lists,log_unique_code', + 'action_type' => 'required|string', ]; } } diff --git a/app/Http/Requests/V3/LogList/UpdateRequest.php b/app/Http/Requests/V3/LogList/UpdateRequest.php index feee0d27..7f058e52 100644 --- a/app/Http/Requests/V3/LogList/UpdateRequest.php +++ b/app/Http/Requests/V3/LogList/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\LogList; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -18,7 +19,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php index 59b7f5e1..f19a5067 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php +++ b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php @@ -33,13 +33,13 @@ class StartRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->mission->code != $this->code){ + if ($this->mission->code != $this->code) { $validator->errors()->add( 'code', 'کد وارد شده صحیح نمی باشد' ); } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php index b38d0da2..905f33ba 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php @@ -39,27 +39,28 @@ class ContinueMissionRequest extends FormRequest 'area' => 'required|array', 'area.type' => 'required|string', 'area.coordinates' => 'required|array', - 'explanation' => 'required|string', + 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', 'road_observed_id' => 'required_if:category_id,3|exists:road_observeds,id', ]; } + public function after(): array { return [ function (Validator $validator) { - if ($this->type == 1){ + if ($this->type == 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); - if ($start->diffInMinutes($end) > 480){ + if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php index b632adf6..9531a82b 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php @@ -36,7 +36,7 @@ class NoProcessRequest extends FormRequest 'area.type' => 'required|string', 'area.coordinates' => 'required|array', 'category_id' => 'required|in:1,2,3', - 'explanation' => 'required|string', + 'explanation' => 'required|string', ]; } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 740cd2e9..c9233d40 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -37,7 +37,7 @@ class StoreRequest extends FormRequest 'area' => 'required|array', 'area.type' => 'required|string', 'area.coordinates' => 'required|array', - 'explanation' => 'required|string', + 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', 'road_observed_id' => 'required_if:category_id,3|exists:road_observeds,id', ]; @@ -47,18 +47,18 @@ class StoreRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->type == 1){ + if ($this->type == 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); - if ($start->diffInMinutes($end) > 480){ + if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', - 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' + 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index 7c672f6f..fb80a7f6 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -38,7 +38,7 @@ class UpdateRequest extends FormRequest 'area' => 'required|array', 'area.type' => 'required|string', 'area.coordinates' => 'required|array', - 'explanation' => 'required|string', + 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', 'road_observed_id' => 'required_if:category_id,3|exists:road_observeds,id', ]; @@ -48,18 +48,18 @@ class UpdateRequest extends FormRequest { return [ function (Validator $validator) { - if ($this->type === 1){ + if ($this->type === 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); - if ($start->diffInMinutes($end) > 480){ + if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } - } + }, ]; } } diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php index 249d5c36..1913dfe7 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Mission\TransportaionUnit; use App\Enums\MissionStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class AllocateRequest extends FormRequest @@ -18,7 +19,7 @@ class AllocateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php index 28074809..f20d833a 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/DeallocateRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\V3\Mission\TransportaionUnit; use App\Enums\MissionStates; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class DeallocateRequest extends FormRequest @@ -18,7 +19,7 @@ class DeallocateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/ObservedItem/StoreRequest.php b/app/Http/Requests/V3/ObservedItem/StoreRequest.php index 081d4b40..525e176d 100644 --- a/app/Http/Requests/V3/ObservedItem/StoreRequest.php +++ b/app/Http/Requests/V3/ObservedItem/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\ObservedItem; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php b/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php index 9dae8269..cc0f3356 100644 --- a/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php +++ b/app/Http/Requests/V3/Otp/GetOtpTokenRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Otp; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class GetOtpTokenRequest extends FormRequest @@ -17,7 +18,7 @@ class GetOtpTokenRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -29,7 +30,7 @@ class GetOtpTokenRequest extends FormRequest public function messages(): array { return [ - 'starts_with' => ':attribute باید با :values شروع شود.' + 'starts_with' => ':attribute باید با :values شروع شود.', ]; } } diff --git a/app/Http/Requests/V3/Permission/StoreRequest.php b/app/Http/Requests/V3/Permission/StoreRequest.php index 9a09ab36..907a6a19 100644 --- a/app/Http/Requests/V3/Permission/StoreRequest.php +++ b/app/Http/Requests/V3/Permission/StoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Permission; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest @@ -17,7 +18,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Permission/UpdateRequest.php b/app/Http/Requests/V3/Permission/UpdateRequest.php index e5213c11..44855e5c 100644 --- a/app/Http/Requests/V3/Permission/UpdateRequest.php +++ b/app/Http/Requests/V3/Permission/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Permission; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Profile/ChangePasswordRequest.php b/app/Http/Requests/V3/Profile/ChangePasswordRequest.php index 9e5762e0..73794322 100644 --- a/app/Http/Requests/V3/Profile/ChangePasswordRequest.php +++ b/app/Http/Requests/V3/Profile/ChangePasswordRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Profile; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ChangePasswordRequest extends FormRequest @@ -17,7 +18,7 @@ class ChangePasswordRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/Profile/EditRequest.php b/app/Http/Requests/V3/Profile/EditRequest.php index 9b4b5d7a..7d2ae330 100644 --- a/app/Http/Requests/V3/Profile/EditRequest.php +++ b/app/Http/Requests/V3/Profile/EditRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Profile; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class EditRequest extends FormRequest @@ -17,7 +18,7 @@ class EditRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -27,7 +28,7 @@ class EditRequest extends FormRequest 'degree' => 'required', 'major' => 'required', 'mobile' => 'required|regex:/^09\d{9}$/|numeric|digits:11', - 'avatar' => 'mimes:png,jpg,jpeg|max:2048' + 'avatar' => 'mimes:png,jpg,jpeg|max:2048', ]; } } diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index 4b26a498..c5cbdf1c 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -55,13 +55,13 @@ class StoreRequest extends FormRequest $mission = Mission::query()->find($this->mission_id); $startTime = Carbon::parse($mission->start_time); - $finishTime = Carbon::parse($mission->finish_time); + $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); if (! $activityTime->between($startTime, $finishTime, true)) { $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); } - } + }, ]; } } diff --git a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php index 1aeacae0..d5c455a8 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php @@ -59,13 +59,13 @@ class UpdateRequest extends FormRequest $mission = Mission::query()->find($this->mission_id); $startTime = Carbon::parse($mission->start_time); - $finishTime = Carbon::parse($mission->finish_time); + $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); if (! $activityTime->between($startTime, $finishTime, true)) { $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); } - } + }, ]; } } diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php index b3e16bf0..37377a9c 100644 --- a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php +++ b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php @@ -2,16 +2,13 @@ namespace App\Http\Requests\V3\RoadMaintenanceStation; -use App\Models\RahdariPoint; -use Hekmatinasser\Verta\Facades\Verta; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Support\Facades\Auth; class StoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. - * @return bool */ public function authorize(): bool { @@ -24,7 +21,7 @@ class StoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { @@ -33,7 +30,7 @@ class StoreRequest extends FormRequest 'city_id' => 'required|exists:cities,id', 'name' => 'required|string|max:255', 'status' => 'required|in:0,1', - 'type' =>'required|in:1,2,3', + 'type' => 'required|in:1,2,3', 'team_num' => 'numeric', 'staff_num' => 'numeric', 'phone' => 'string|max:50', diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php index 56b10987..9996908e 100644 --- a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadMaintenanceStation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php b/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php index 288ea697..d1ed0a88 100644 --- a/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php +++ b/app/Http/Requests/V3/RoadObservation/ModifyRegisterationRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ModifyRegisterationRequest extends FormRequest @@ -17,7 +18,7 @@ class ModifyRegisterationRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/ReferRequest.php b/app/Http/Requests/V3/RoadObservation/ReferRequest.php index 33e2bc83..a680a327 100644 --- a/app/Http/Requests/V3/RoadObservation/ReferRequest.php +++ b/app/Http/Requests/V3/RoadObservation/ReferRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ReferRequest extends FormRequest @@ -17,7 +18,7 @@ class ReferRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/RegisterRequest.php b/app/Http/Requests/V3/RoadObservation/RegisterRequest.php index c3f59834..bd146b34 100644 --- a/app/Http/Requests/V3/RoadObservation/RegisterRequest.php +++ b/app/Http/Requests/V3/RoadObservation/RegisterRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RegisterRequest extends FormRequest @@ -17,7 +18,7 @@ class RegisterRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/RestoreRequest.php b/app/Http/Requests/V3/RoadObservation/RestoreRequest.php index 1c02a650..fd15e7d1 100644 --- a/app/Http/Requests/V3/RoadObservation/RestoreRequest.php +++ b/app/Http/Requests/V3/RoadObservation/RestoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RestoreRequest extends FormRequest @@ -17,7 +18,7 @@ class RestoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php b/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php index db1450cd..4314db71 100644 --- a/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php +++ b/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadObservation; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Gate; @@ -9,22 +10,22 @@ class VerifyBySupervisorRequest extends FormRequest { /** * Determine if the user is authorized to make this request. - * @return bool */ public function authorize(): bool { - return Gate::allows('gate-supervise-road-observed',$this->roadObserved); + return Gate::allows('gate-supervise-road-observed', $this->roadObserved); } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array - {return [ - 'verify' => ['required', 'in:1,2'], - 'description' => ['string'], - ]; + { + return [ + 'verify' => ['required', 'in:1,2'], + 'description' => ['string'], + ]; } } diff --git a/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php b/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php index 128c020f..9678ca32 100644 --- a/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php +++ b/app/Http/Requests/V3/RoadPatrol/DeleteRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\RoadPatrol; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class DeleteRequest extends FormRequest @@ -17,12 +18,12 @@ class DeleteRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { return [ - 'type' => 'required|in:1,2' // {1 = > partial , 2 => complete} + 'type' => 'required|in:1,2', // {1 = > partial , 2 => complete} ]; } } diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php index a8cb30bc..b90434bf 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/FinishRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FinishRequest extends FormRequest @@ -17,7 +18,7 @@ class FinishRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php index b1c0f2af..c30ebfc0 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/FirstStepStoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class FirstStepStoreRequest extends FormRequest @@ -17,7 +18,7 @@ class FirstStepStoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php index 7ddc7700..6e6e2b22 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/RejectRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class RejectRequest extends FormRequest @@ -17,7 +18,7 @@ class RejectRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php index dc88a0b6..b4b844ec 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/SecondStepStoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class SecondStepStoreRequest extends FormRequest @@ -17,7 +18,7 @@ class SecondStepStoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php index 9cab2e23..ded411a5 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/ThirdStepStoreRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class ThirdStepStoreRequest extends FormRequest @@ -17,7 +18,7 @@ class ThirdStepStoreRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php b/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php index c0dab333..30191c97 100644 --- a/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php +++ b/app/Http/Requests/V3/SafetyAndPrivacy/UpdateRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\SafetyAndPrivacy; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { From 9e179baa6b010faef6c66c195e2f74ffbb316f60 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 27 Oct 2025 18:15:10 +0330 Subject: [PATCH 17/54] improve code in controller and forme requst --- .../V3/Dashboard/UserManagementController.php | 289 ++++++++++-------- .../Dashboard/UserManagement/StoreRequest.php | 6 + .../UserManagement/UpdateRequest.php | 6 + 3 files changed, 180 insertions(+), 121 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index 23cd821f..dbe6781c 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard; +use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; @@ -25,58 +26,101 @@ class UserManagementController extends Controller { use ApiResponse; +// public function index(Request $request) +// { +// auth()->user()->addActivityComplete(1038); +// +// $province = $request->province ?? null; +// $city = $request->city ?? null; +// $province_office = $request->province_office ?? null; +// +// if (Auth::user()->checkUserHasPermission('full-user-management')) { +// $users = User::when($province, function ($query, $province) { +// return $query->where('province_id', $province); +// }) +// ->when($city, function ($query, $city) { +// return $query->where('city_id', $city); +// }) +// ->when($province_office, function ($query, $province_office) { +// if ($province_office == -1) { +// return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); +// } else { +// return $query->where('edarate_ostani_id', $province_office); +// } +// }) +// ->with(['roles' => function ($query) { +// $query->where('for_report', 1); +// }]) +// ->get(); +// } elseif (Auth::user()->checkUserHasPermission('limited-user-management')) { +// $users = User::when($province, function ($query, $province) { +// return $query->where('province_id', $province); +// }) +// ->where('province_id', Auth::user()->province_id) +// ->when($city, function ($query, $city) { +// return $query->where('city_id', $city); +// }) +// ->when($province_office, function ($query, $province_office) { +// if ($province_office == -1) { +// return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); +// } else { +// return $query->where('edarate_ostani_id', $province_office); +// } +// }) +// ->with(['roles' => function ($query) { +// $query->where('for_report', 1); +// }]) +// ->get(); +// } else { +// return response()->json([ +// 'message' => 'Forbidden', +// ], 403); +// } +// +// return $this->successResponse($users); +// } + public function index(Request $request) { - auth()->user()->addActivityComplete(1038); + $currentUser = Auth::user(); + $currentUser->addActivityComplete(1038); $province = $request->province ?? null; $city = $request->city ?? null; $province_office = $request->province_office ?? null; - - if (Auth::user()->checkUserHasPermission('full-user-management')) { - $users = User::when($province, function ($query, $province) { - return $query->where('province_id', $province); - }) - ->when($city, function ($query, $city) { - return $query->where('city_id', $city); - }) - ->when($province_office, function ($query, $province_office) { - if ($province_office == -1) { - return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); - } else { - return $query->where('edarate_ostani_id', $province_office); - } - }) - ->with(['roles' => function ($query) { - $query->where('for_report', 1); - }]) - ->get(); - } elseif (Auth::user()->checkUserHasPermission('limited-user-management')) { - $users = User::when($province, function ($query, $province) { - return $query->where('province_id', $province); - }) - ->where('province_id', Auth::user()->province_id) - ->when($city, function ($query, $city) { - return $query->where('city_id', $city); - }) - ->when($province_office, function ($query, $province_office) { - if ($province_office == -1) { - return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); - } else { - return $query->where('edarate_ostani_id', $province_office); - } - }) - ->with(['roles' => function ($query) { - $query->where('for_report', 1); - }]) - ->get(); - } else { - return response()->json([ - 'message' => 'Forbidden', - ], 403); + if ( + ! $currentUser->checkUserHasPermission('full-user-management') && + ! $currentUser->checkUserHasPermission('limited-user-management') + ) { + return response()->json(['message' => 'Forbidden'], 403); } + $query = User::query() + ->when($province, function ($query, $province) { + return $query->where('province_id', $province); + }) + ->with(['roles' => fn($q) => $q->where('for_report', 1)]) + ->when($city, function ($query, $city) { + return $query->where('city_id', $city); + }) + ->when($province_office, function ($query, $province_office) { + if ($province_office === -1) { + return $query->whereNull('edarate_ostani_id')->whereNotNull('edarate_shahri_id'); + } else { + return $query->where('edarate_ostani_id', $province_office); + } + }); - return $this->successResponse($users); + if ($currentUser->checkUserHasPermission('limited-user-management')) { + $query->where('province_id', $currentUser->province_id); + } + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'] + ); + + return $this->successResponse($data); } public function store(StoreRequest $request): jsonResponse @@ -85,51 +129,53 @@ class UserManagementController extends Controller $user->addActivityComplete(1039); - User::query()->create([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id ?: null, - 'city_id' => $request->city_id ?: null, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, - 'first_name' => $request->first_name, - 'last_name' => $request->last_name, - 'position' => $request->position, - 'mobile' => $request->mobile, - 'degree' => $request->degree, - 'major' => $request->major, - ]); + $createdUser = DB::transaction(function () use ($request) { + $user = User::query()->create([ + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, + ]); - $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; + $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; + $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; - if ($request->edarate_ostani_id != 'null') { - $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; - $user->edarate_ostani_id = $request->edarate_ostani_id; - $user->edarate_ostani_name = $temp; - if ($request->province_id == 0) { - $user->name = $temp.' '.$user->province_fa; + if ($request->edarate_ostani_id != null) { + $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; + $user->edarate_ostani_id = $request->edarate_ostani_id; + $user->edarate_ostani_name = $temp; + if ($request->province_id == 0) { + $user->name = $temp.' '.$user->province_fa; + } else { + $user->name = $temp.' استان '.$user->province_fa; + } } else { - $user->name = $temp.' استان '.$user->province_fa; + $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; + $user->edarate_shahri_id = $request->edarate_shahri_id; + $user->edarate_shahri_name = $temp; + + if ($request->province_id == 0) { + $user->name = $temp.' '.$user->province_fa; + } else { + $user->name = $temp.' استان '.$user->province_fa; + } } - } else { - $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; - $user->edarate_shahri_id = $request->edarate_shahri_id; - $user->edarate_shahri_name = $temp; + $user->save(); - if ($request->province_id == 0) { - $user->name = $temp.' '.$user->province_fa; - } else { - $user->name = $temp.' استان '.$user->province_fa; - } - } + return $user; + }); - $user->password = Hash::make($request->password); - $user->national_code = $request->national_code; - - return $this->successResponse($user); + return $this->successResponse($createdUser); } public function show(User $user) @@ -142,47 +188,47 @@ class UserManagementController extends Controller public function update(UpdateRequest $request, User $user): JsonResponse { auth()->user()->addActivityComplete(1040); + $createdUser = DB::transaction(function () use ($request, $user) { - $user->update([ - 'username' => $request->username, - 'national_code' => $request->national_code, - 'password' => Hash::make($request->password), - 'province_id' => $request->province_id ?: null, - 'city_id' => $request->city_id ?: null, - 'edarate_ostani_id' => $request->edarate_ostani_id, - 'edarate_shahri_id' => $request->edarate_shahri_id, - 'first_name' => $request->first_name, - 'last_name' => $request->last_name, - 'position' => $request->position, - 'mobile' => $request->mobile, - 'degree' => $request->degree, - 'major' => $request->major, - ]); + $user->update([ + 'username' => $request->username, + 'national_code' => $request->national_code, + 'province_id' => $request->province_id ?: null, + 'city_id' => $request->city_id ?: null, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'position' => $request->position, + 'mobile' => $request->mobile, + 'degree' => $request->degree, + 'major' => $request->major, + ]); - $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; + $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; + $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; - if ($request->edarate_ostani_id != 'null') { - $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; - $user->edarate_ostani_id = $request->edarate_ostani_id; - $user->edarate_ostani_name = $temp; - if ($request->province_id == 0) { - $user->name = $temp.' '.$user->province_fa; + if ($request->edarate_ostani_id != null) { + $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; + $user->edarate_ostani_id = $request->edarate_ostani_id; + $user->edarate_ostani_name = $temp; + if ($request->province_id == 0) { + $user->name = $temp . ' ' . $user->province_fa; + } else { + $user->name = $temp . ' استان ' . $user->province_fa; + } } else { - $user->name = $temp.' استان '.$user->province_fa; - } - } else { - $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; - $user->edarate_shahri_id = $request->edarate_shahri_id; - $user->edarate_shahri_name = $temp; + $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; + $user->edarate_shahri_id = $request->edarate_shahri_id; + $user->edarate_shahri_name = $temp; - if ($request->province_id == 0) { - $user->name = $temp.' '.$user->province_fa; - } else { - $user->name = $temp.' استان '.$user->province_fa; + if ($request->province_id == 0) { + $user->name = $temp . ' ' . $user->province_fa; + } else { + $user->name = $temp . ' استان ' . $user->province_fa; + } } - } if (! is_null($request->password)) { $user->password = Hash::make($request->password); @@ -192,13 +238,14 @@ class UserManagementController extends Controller $user->syncPermissions(explode(',', $request->permissions)); } - if ($request->filled('roles')) { - $user->syncRoles($request->roles); - } + if ($request->filled('roles')) { + $user->syncRoles($request->roles); + } - $user->save(); + $user->save(); + }); - return $this->successResponse($user); + return $this->successResponse($createdUser); } public function destroy(User $user) diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php index c530e73d..f936e54f 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php @@ -30,6 +30,12 @@ class StoreRequest extends FormRequest 'username' => 'required|unique:users,username', 'national_code' => 'unique:users,national_code', 'password' => 'required|min:8', + 'first_name' => 'required|string', + 'last_name' => 'required|string', + 'position' => 'required|string', + 'mobile' => 'required|string', + 'degree' => 'required|string', + 'major' => 'required|string', ]; } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index 7a03c279..78a9b437 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -31,6 +31,12 @@ class UpdateRequest extends FormRequest 'username' => ['required', Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], 'password' => 'required|min:8', + 'first_name' => 'required|string', + 'last_name' => 'required|string', + 'position' => 'required|string', + 'mobile' => 'required|string', + 'degree' => 'required|string', + 'major' => 'required|string', ]; } } From ff6aad02cd2049dbcf3e7119a44f8737298c137b Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 28 Oct 2025 12:02:08 +0330 Subject: [PATCH 18/54] create daily accident cartable --- app/Enums/AccidentWayGeoTypes.php | 24 + app/Enums/AccidentWeatherConditions.php | 28 ++ .../V3/Dashboard/DailyAccidentController.php | 457 ++++++++++++++++++ .../V3/DailyAccident/StoreRequest.php | 94 ++++ .../V3/DailyAccident/SupervisorRequest.php | 30 ++ 5 files changed, 633 insertions(+) create mode 100644 app/Enums/AccidentWayGeoTypes.php create mode 100644 app/Enums/AccidentWeatherConditions.php create mode 100644 app/Http/Controllers/V3/Dashboard/DailyAccidentController.php create mode 100644 app/Http/Requests/V3/DailyAccident/StoreRequest.php create mode 100644 app/Http/Requests/V3/DailyAccident/SupervisorRequest.php diff --git a/app/Enums/AccidentWayGeoTypes.php b/app/Enums/AccidentWayGeoTypes.php new file mode 100644 index 00000000..09130863 --- /dev/null +++ b/app/Enums/AccidentWayGeoTypes.php @@ -0,0 +1,24 @@ + "تقاطع - دسترسی", + 2 => "قوس افقی یا قائم", + 3 => "پل", + 4 => "پل و قوس", + 5 => "تونل", + 6 => "میدان", + 7 => "دوربرگردان", + 8 => "بریدگی", + 9 => "تقاطع و قوس", + 10 => "نقطه عادی", + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Enums/AccidentWeatherConditions.php b/app/Enums/AccidentWeatherConditions.php new file mode 100644 index 00000000..88f11c28 --- /dev/null +++ b/app/Enums/AccidentWeatherConditions.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/DailyAccidentController.php b/app/Http/Controllers/V3/Dashboard/DailyAccidentController.php new file mode 100644 index 00000000..94a1f129 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/DailyAccidentController.php @@ -0,0 +1,457 @@ +user()->addActivityComplete(1117); + + $query = DailyAccident::query(); + + $dataTable = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'] + ); + + return response()->json($dataTable); + } + + /** + * Store a newly created resource in storage. + * @throws Throwable + */ + public function store(StoreRequest $request, NominatimService $nominatimService) + { + $province = Province::query()->find($request->province_id); + + $data = [ + 'province_id' => $province->id, + 'province_fa' => $province->name_fa, + 'axis_name' => $request->axis_name, + 'axis_type' => $request->axis_type, + 'axis_type_fa' => AxisTypes::name($request->axis_type), + 'axis_start' => $request->axis_start, + 'axis_end' => $request->axis_end, + 'distance_axis_start' => $request->distance_axis_start, + 'local_name' => $request->local_name, + 'lat' => $request->lat, + 'lng' => $request->lng, + 'police_serial' => $request->police_serial, + 'accident_date' => $request->accident_date, + 'accident_time' => $request->accident_time, + 'day_of_the_week' => $request->day_of_the_week, + 'direction' => $request->direction, + 'direction_fa' => $request->direction == 1 ? 'رفت' : 'برگشت', + 'number_of_injured' => $request->number_of_injured, + 'number_of_died' => $request->number_of_died, + 'weather_condition' => $request->weather_condition, + 'weather_condition_fa' => AccidentWeatherConditions::name($request->weather_condition), + 'way_geometri' => $request->way_geometri, + 'way_geometri_fa' => AccidentWayGeoTypes::name($request->way_geometri), + 'collision_type' => $request->collision_type, + 'collision_type_fa' => DailyAccidentSettings::query() + ->where([ + ['type', '=', 'collision_type'], + ['key', '=', $request->collision_type] + ])->first()->value, + 'participants_heavy_vehicle' => $request->participants_heavy_vehicle, + 'participants_light_vehicle' => $request->participants_light_vehicle, + 'participants_bicycle' => $request->participants_bicycle, + 'accident_type' => $request->accident_type, + 'accident_type_fa' => DailyAccidentSettings::query() + ->where([ + ['type', '=', 'accident_type'], + ['name', '=', $request->accident_type] + ])->first()->value, + 'legal_speed' => $request->legal_speed, + 'avarage_speed' => $request->avarage_speed, + 'increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah' => $request->increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah ?? 0, + 'increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani' => $request->increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani ?? 0, + 'increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol' => $request->increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol ?? 0, + 'increase_damage_reasons_naqs_ya_adam_kefayat' => $request->increase_damage_reasons_naqs_ya_adam_kefayat ?? 0, + 'increase_damage_reasons_naqs_dar_naheye_enteqali' => $request->increase_damage_reasons_naqs_dar_naheye_enteqali ?? 0, + 'increase_damage_reasons_mane_solb_bedone_hefaz' => $request->increase_damage_reasons_mane_solb_bedone_hefaz ?? 0, + 'increase_damage_reasons_sar_azad_hefaz' => $request->increase_damage_reasons_sar_azad_hefaz ?? 0, + 'increase_damage_reasons_shirvani_tond_ya_partgah' => $request->increase_damage_reasons_shirvani_tond_ya_partgah ?? 0, + 'accident_reason_dor_monaseb_dar_qus' => $request->accident_reason_dor_monaseb_dar_qus ?? 0, + 'accident_reason_saraziri_tond' => $request->accident_reason_saraziri_tond ?? 0, + 'accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye' => $request->accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye ?? 0, + 'accident_reason_mantaqe_ba_rizesh_az_divar' => $request->accident_reason_mantaqe_ba_rizesh_az_divar ?? 0, + 'accident_reason_mantaqe_ba_afzayesh_nagahani' => $request->accident_reason_mantaqe_ba_afzayesh_nagahani ?? 0, + 'accident_reason_kahesh_na_monaseb_tedad' => $request->accident_reason_kahesh_na_monaseb_tedad ?? 0, + 'accident_reason_mantaqe_ba_obor_heyvanat_ahli' => $request->accident_reason_mantaqe_ba_obor_heyvanat_ahli ?? 0, + 'accident_reason_mantaqe_ba_tadakhol_terafiki' => $request->accident_reason_mantaqe_ba_tadakhol_terafiki ?? 0, + 'accident_reason_arze_kam_savare_ro' => $request->accident_reason_arze_kam_savare_ro ?? 0, + 'accident_reason_mantaqe_meh_gir' => $request->accident_reason_mantaqe_meh_gir ?? 0, + 'accident_reason_adam_roshanaye_zarori_dar_noqte' => $request->accident_reason_adam_roshanaye_zarori_dar_noqte ?? 0, + 'accident_reason_tabdil_na_monaseb_noe_rah' => $request->accident_reason_tabdil_na_monaseb_noe_rah ?? 0, + 'accident_reason_oftadegi_dar_labe_asphalt' => $request->accident_reason_oftadegi_dar_labe_asphalt ?? 0, + 'accident_reason_naqs_dar_ashkarsazi_navahi' => $request->accident_reason_naqs_dar_ashkarsazi_navahi ?? 0, + 'accident_reason_mahal_na_monaseb_dastrasi' => $request->accident_reason_mahal_na_monaseb_dastrasi ?? 0, + 'accident_reason_roye_na_monaseb' => $request->accident_reason_roye_na_monaseb ?? 0, + 'accident_reason_naqs_dar_ashkar_sazi_shrayet_khas' => $request->accident_reason_naqs_dar_ashkar_sazi_shrayet_khas ?? 0, + 'accident_reason_hendese_na_monaseb_vorodi_va_khoroji' => $request->accident_reason_hendese_na_monaseb_vorodi_va_khoroji ?? 0, + 'accident_reason_adam_rayat_fasele_tooli' => $request->accident_reason_adam_rayat_fasele_tooli ?? 0, + 'accident_reason_naqs_dar_alayem_ekhtari_va_entezami' => $request->accident_reason_naqs_dar_alayem_ekhtari_va_entezami ?? 0, + 'accident_reason_qus_ofoqi_dar_saraziri_tond' => $request->accident_reason_qus_ofoqi_dar_saraziri_tond ?? 0, + 'accident_reason_adam_rayat_obor' => $request->accident_reason_adam_rayat_obor ?? 0, + 'accident_reason_naqs_dar_alayem_pish_agahi' => $request->accident_reason_naqs_dar_alayem_pish_agahi ?? 0, + 'accident_reason_qarar_gire_qus_ofoqi' => $request->accident_reason_qarar_gire_qus_ofoqi ?? 0, + 'accident_reason_adam_rayat_sebghat_mojaz' => $request->accident_reason_adam_rayat_sebghat_mojaz ?? 0, + 'accident_reason_did_na_kafi' => $request->accident_reason_did_na_kafi ?? 0, + 'accident_reason_qus_tond_qaem' => $request->accident_reason_qus_tond_qaem ?? 0, + 'accident_reason_adam_rayat_sorat_mojaz' => $request->accident_reason_adam_rayat_sorat_mojaz ?? 0, + 'accident_reason_ebham_dar_masir' => $request->accident_reason_ebham_dar_masir ?? 0, + 'accident_reason_qus_tond_ofoghi' => $request->accident_reason_qus_tond_ofoghi ?? 0, + 'way_id' => $nominatimService->get_way_id_from_nominatim($request->lat, $request->lng) + ]; + + DB::transaction(function () use ($data, $request) + { + $accident = DailyAccident::query()->create($data); + + $accident->first_image = $request->has('first_image') ? FileFacade::save($request->file('first_image'), "daily_accident_files/{$accident->id}") : null; + $accident->second_image = $request->has('second_image') ? FileFacade::save($request->file('second_image'), "daily_accident_files/{$accident->id}") : null; + $accident->police_file = $request->has('police_file') ? FileFacade::save($request->file('police_file'), "daily_accident_files/{$accident->id}") : null; + $accident->save(); + + auth()->user()->addActivityComplete(1118); + }); + + return $this->successResponse(); + } + + /** + * Display the specified resource. + */ + public function show(DailyAccident $dailyAccident) + { + return $this->successResponse($dailyAccident); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, DailyAccident $dailyAccident) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(DailyAccident $dailyAccident) + { + auth()->user()->addActivityComplete(1120, $dailyAccident); + + FileFacade::deleteDirectory("daily_accident_files/{$dailyAccident->id}"); + + $dailyAccident->delete(); + + return $this->successResponse(); + } + + /** + * @throws Throwable + */ + public function supervise(DailyAccident $dailyAccident, SupervisorRequest $request) + { + DB::transaction(function () use ($request, $dailyAccident) { + $dailyAccident->update([ + 'state' => $request->state, + 'state_fa' => $request->state == '1' ? 'تایید شده' : 'عدم تایید', + 'message' => $request->message, + 'state_updated_at' => now(), + ]); + + auth()->user()->addActivityComplete(1121, $dailyAccident); + }); + + return $this->successResponse(); + } + + public function map(Request $request) + { + $dataTable = DataTableFacade::run( + DailyAccident::query(), + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['lat', 'lng', 'id'] + ); + + return response()->json($dataTable); + } + + public function poster(Request $request) + { + $request->validate([ + 'province_id' => 'numeric', + 'from_date' => 'date_format:Y-m-d', + 'to_date' => 'date_format:Y-m-d', + ]); + + $province_id = $request->province_id; + $from_date = $request->from_date; + $to_date = $request->to_date; + $data = []; + + $data['payamad_tasadof'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->selectRaw('sum(number_of_died) as number_of_died, sum(number_of_injured) as number_of_injured, count(id) as number_of_accident') + ->get(); + + // ACCIDENT REPORT -> PIE CHART + $accident_types_with_zero_accidents = DailyAccident::selectRaw('0 as cnt, accident_type, accident_type_fa, 0 as percentage') + ->whereNotIn('accident_type_fa', function ($query) use ($province_id, $from_date, $to_date) { + $query->select('accident_type_fa')->distinct() + ->from('daily_accidents') + ->when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + }) + ->groupBy('accident_type_fa'); + + $data['accident_report']['pie_chart'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('accident_type_fa') + ->selectRaw('count(accident_type) as cnt, accident_type, accident_type_fa, round(count(*) * 100 / sum(count(*)) over(), 1) as percentage') + ->union($accident_types_with_zero_accidents) + // ->orderBy('accident_type', 'desc') + ->get(); + + // END + + // ACCIDENT REPORT -> schematic_map AND NUMBER OF ACCIDENTS PER PROVINCE + if(!$province_id){ + + $provinces_with_zero_accidents = Province::whereNotIn('id', function ($query) use ($from_date, $to_date) { + $query->select('province_id') + ->distinct('province_id') + ->from('daily_accidents') + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + })->selectRaw('null, id, name_fa'); + + $data['accident_report']['schematic_map'] = DailyAccident::when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('province_id') + ->selectRaw('count(*) as cnt, province_id, province_fa') + ->union($provinces_with_zero_accidents) + ->orderBy('province_id', 'asc') + // ->orderBy('cnt', 'asc') + ->get(); + + $data['number_of_accidents_per_province'] = $data['accident_report']['schematic_map']; + } + // END + + // ACCIDENT REPORT -> bar chart + $way_geometries_with_zero_accidents = DailyAccident::selectRaw('0 as cnt, way_geometri, way_geometri_fa') + ->whereNotIn('way_geometri', function ($query) use ($province_id, $from_date, $to_date) { + $query->select('way_geometri')->distinct() + ->from('daily_accidents') + ->when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + }) + ->groupBy('way_geometri'); + + $data['accident_report']['bar_chart'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('way_geometri') + ->selectRaw('count(*) as cnt, way_geometri, way_geometri_fa') + ->union($way_geometries_with_zero_accidents) + ->orderBy('cnt', 'desc') + ->get(); + + // END + + // share_of_accidents_by_road_type + $share_by_road_type_data = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('axis_type', 'accident_type') + ->selectRaw('count(*) as cnt, axis_type, axis_type_fa, accident_type, accident_type_fa') + ->get()->toArray(); + + $result = [ + ['accident_type_fa' => 'خسارتی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['accident_type_fa' => 'جرحی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['accident_type_fa' => 'فوتی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ]; + + foreach ($share_by_road_type_data as $item) { + $key = $item['accident_type'] - 1; + + foreach ($result[$key]['data'] as $k => $axis_data) { + if ($axis_data['axis_type_fa'] == $item['axis_type_fa']) { + $result[$key]['data'][$k]['cnt'] = $item['cnt']; + break; + } + } + } + + $data['share_of_accidents_by_road_type'] = $result; + // END + + // share_of_accidents_by_road_geometry + $share_by_road_geometry_data = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->groupBy('way_geometri', 'axis_type') + ->selectRaw('count(*) as cnt, way_geometri, way_geometri_fa, axis_type, axis_type_fa') + ->get()->toArray(); + + $result = [ + ['way_geometri_fa' => 'تقاطع - دسترسی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'قوس افقی یا قائم', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'پل', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'پل و قوس', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'تونل', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'میدان', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'دوربرگردان', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'بریدگی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'تقاطع و قوس', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ['way_geometri_fa' => 'نقطه عادی', 'data' => [['axis_type_fa' => 'آزادراه', 'cnt' => 0], ['axis_type_fa' => 'بزرگراه', 'cnt' => 0], ['axis_type_fa' => 'اصلی', 'cnt' => 0], ['axis_type_fa' => 'فرعی', 'cnt' => 0]]], + ]; + + foreach ($share_by_road_geometry_data as $item) { + $key = $item['way_geometri'] - 1; + + foreach ($result[$key]['data'] as $k => $axis_data) { + if ($axis_data['axis_type_fa'] == $item['axis_type_fa']) { + $result[$key]['data'][$k]['cnt'] = $item['cnt']; + break; + } + } + } + + $data['share_of_accidents_by_road_geometry'] = $result; + // END + + // collision type + $collision_types_with_zero_accidents = DailyAccident::selectRaw('0 as percentage, collision_type, collision_type_fa') + ->whereNotIn('collision_type', function ($query) use ($province_id, $from_date, $to_date) { + $query->select('collision_type')->distinct() + ->from('daily_accidents') + ->when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }); + + }) + ->groupBy('collision_type'); + + // dd($collision_types_with_zero_accidents->get()) ; + + $data['collision_type'] = DailyAccident::when($province_id, function ($query, $province_id) { + $query->where('province_id', $province_id); + }) + ->when(($from_date && $to_date), function ($query) use ($from_date, $to_date) { + $query->whereBetween('accident_date', [$from_date . ' 00:00:00', $to_date . ' 23:59:59']); + }) + ->whereNotNull(['collision_type', 'collision_type_fa']) + ->groupBy('collision_type') + ->selectRaw('round(count(*) * 100 / sum(count(*)) over(), 1) as percentage, collision_type, collision_type_fa') + ->union($collision_types_with_zero_accidents) + ->orderBy('percentage', 'desc') + ->get(); + // END + + + // per day + $where_province_exists = ($province_id) ? "province_id = $province_id and" : ''; + $where_date_exists = ($from_date && $to_date) ? "accident_date BETWEEN '$from_date 00:00:00' and '$to_date 23:59:59' and" : ''; + // dd($where_date_exists); + $per_day_array = DB::select("SELECT t1.*, round(sum(t1.cnt) over(PARTITION by day_part) * 100 / sum(t1.cnt) over(), 1) as day_percentage + from + (select count(*) as cnt, sum(count(*)) over() as total, round(count(*) * 100/ sum(count(*)) over(), 1) as percent, accident_type, accident_type_fa, 'day' as day_part + from daily_accidents da where $where_province_exists $where_date_exists accident_time BETWEEN '06:00:00' and '18:00:00' group by accident_type + UNION + select count(*) as cnt, sum(count(*)) over() as total, round(count(*) * 100/ sum(count(*)) over(), 1) as percent, accident_type, accident_type_fa, 'night' as day_part + from daily_accidents da where $where_province_exists $where_date_exists accident_time not BETWEEN '06:00:00' and '18:00:00' group by accident_type)t1 + order by day_part"); + + // dd($per_day_array); + + $per_day_result = [ + ['accident_type_fa' => 'خسارتی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]], + ['accident_type_fa' => 'جرحی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]], + ['accident_type_fa' => 'فوتی', 'night' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0], 'day' => ['cnt' => 0, 'percent' => 0, 'total_percentage' => 0]] + ]; + + $per_day_array = json_decode(json_encode($per_day_array), true); + + foreach ($per_day_array as $item) { + $key = $item['accident_type'] - 1; + $per_day_result[$key][$item['day_part']]['cnt'] = $item['cnt']; + $per_day_result[$key][$item['day_part']]['percent'] = $item['percent']; + // $per_day_result[$key][$item['day_part']]['total_percentage'] = $item['day_percentage']; + + for ($i=0; $i < count($per_day_result); $i++) { + $per_day_result[$i][$item['day_part']]['total_percentage'] = $item['day_percentage']; + } + } + + $data['per_day'] = $per_day_result; + // END + + return view('posters.DailyAccidentPoster', compact("data")); + } +} diff --git a/app/Http/Requests/V3/DailyAccident/StoreRequest.php b/app/Http/Requests/V3/DailyAccident/StoreRequest.php new file mode 100644 index 00000000..c2f0bf1f --- /dev/null +++ b/app/Http/Requests/V3/DailyAccident/StoreRequest.php @@ -0,0 +1,94 @@ + + */ + public function rules(): array + { + return [ + 'province_id' => 'required|integer|exists:provinces,id', + 'axis_name' => 'required|string|max:255', + 'axis_type' => '', + 'axis_start' => '', + 'axis_end' => '', + 'distance_axis_start' => '', + 'local_name' => '', + 'lat' => '', + 'lng' => '', + 'police_serial' => '', + 'accident_date' => '', + 'accident_time' => '', + 'day_of_the_week' => '', + 'direction' => '', + 'number_of_injured' => '', + 'number_of_died' => '', + 'weather_condition' => '', + 'way_geometri' => '', + 'collision_type' => '', + 'participants_heavy_vehicle' => '', + 'participants_light_vehicle' => '', + 'participants_bicycle' => '', + 'accident_type' => '', + 'legal_speed' => '', + 'avarage_speed' => '', + 'increase_damage_reasons_feqdan_jodakonnande_dar_miyane_rah' => '', + 'increase_damage_reasons_naqs_ya_adam_kefayat_hefaze_miyani' => '', + 'increase_damage_reasons_naqs_ya_adam_kefayat_narde_pol' => '', + 'increase_damage_reasons_naqs_ya_adam_kefayat' => '', + 'increase_damage_reasons_naqs_dar_naheye_enteqali' => '', + 'increase_damage_reasons_mane_solb_bedone_hefaz' => '', + 'increase_damage_reasons_sar_azad_hefaz' => '', + 'increase_damage_reasons_shirvani_tond_ya_partgah' => '', + 'accident_reason_dor_monaseb_dar_qus' => '', + 'accident_reason_saraziri_tond' => '', + 'accident_reason_nabod_dar_khat_sebqat_dar_sarbalaye' => '', + 'accident_reason_mantaqe_ba_rizesh_az_divar' => '', + 'accident_reason_mantaqe_ba_afzayesh_nagahani' => '', + 'accident_reason_kahesh_na_monaseb_tedad' => '', + 'accident_reason_mantaqe_ba_obor_heyvanat_ahli' => '', + 'accident_reason_mantaqe_ba_tadakhol_terafiki' => '', + 'accident_reason_arze_kam_savare_ro' => '', + 'accident_reason_mantaqe_meh_gir' => '', + 'accident_reason_adam_roshanaye_zarori_dar_noqte' => '', + 'accident_reason_tabdil_na_monaseb_noe_rah' => '', + 'accident_reason_oftadegi_dar_labe_asphalt' => '', + 'accident_reason_naqs_dar_ashkarsazi_navahi' => '', + 'accident_reason_mahal_na_monaseb_dastrasi' => '', + 'accident_reason_roye_na_monaseb' => '', + 'accident_reason_naqs_dar_ashkar_sazi_shrayet_khas' => '', + 'accident_reason_hendese_na_monaseb_vorodi_va_khoroji' => '', + 'accident_reason_adam_rayat_fasele_tooli' => '', + 'accident_reason_naqs_dar_alayem_ekhtari_va_entezami' => '', + 'accident_reason_qus_ofoqi_dar_saraziri_tond' => '', + 'accident_reason_adam_rayat_obor' => '', + 'accident_reason_naqs_dar_alayem_pish_agahi' => '', + 'accident_reason_qarar_gire_qus_ofoqi' => '', + 'accident_reason_adam_rayat_sebghat_mojaz' => '', + 'accident_reason_did_na_kafi' => '', + 'accident_reason_qus_tond_qaem' => '', + 'accident_reason_adam_rayat_sorat_mojaz' => '', + 'accident_reason_ebham_dar_masir' => '', + 'accident_reason_qus_tond_ofoghi' => '', + 'first_image' => '', + 'second_image' => '', + 'police_file' => '', + ]; + } +} diff --git a/app/Http/Requests/V3/DailyAccident/SupervisorRequest.php b/app/Http/Requests/V3/DailyAccident/SupervisorRequest.php new file mode 100644 index 00000000..891a5487 --- /dev/null +++ b/app/Http/Requests/V3/DailyAccident/SupervisorRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'state' => 'required|in:0,1', + 'message' => 'required_if:state,2|string', + ]; + } +} From 1000621924ce53483b57a288e243509362d591ae Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Tue, 28 Oct 2025 12:02:56 +0330 Subject: [PATCH 19/54] fix code --- .../V3/Dashboard/UserManagementController.php | 181 +++--------------- .../Dashboard/UserManagement/StoreRequest.php | 14 +- .../UserManagement/UpdateRequest.php | 11 +- app/Models/User.php | 4 +- routes/v3.php | 3 +- 5 files changed, 47 insertions(+), 166 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index dbe6781c..32631968 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\V3\Dashboard; use App\Facades\DataTable\DataTableFacade; +use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; @@ -26,98 +27,15 @@ class UserManagementController extends Controller { use ApiResponse; -// public function index(Request $request) -// { -// auth()->user()->addActivityComplete(1038); -// -// $province = $request->province ?? null; -// $city = $request->city ?? null; -// $province_office = $request->province_office ?? null; -// -// if (Auth::user()->checkUserHasPermission('full-user-management')) { -// $users = User::when($province, function ($query, $province) { -// return $query->where('province_id', $province); -// }) -// ->when($city, function ($query, $city) { -// return $query->where('city_id', $city); -// }) -// ->when($province_office, function ($query, $province_office) { -// if ($province_office == -1) { -// return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); -// } else { -// return $query->where('edarate_ostani_id', $province_office); -// } -// }) -// ->with(['roles' => function ($query) { -// $query->where('for_report', 1); -// }]) -// ->get(); -// } elseif (Auth::user()->checkUserHasPermission('limited-user-management')) { -// $users = User::when($province, function ($query, $province) { -// return $query->where('province_id', $province); -// }) -// ->where('province_id', Auth::user()->province_id) -// ->when($city, function ($query, $city) { -// return $query->where('city_id', $city); -// }) -// ->when($province_office, function ($query, $province_office) { -// if ($province_office == -1) { -// return $query->where('edarate_ostani_id', null)->whereNotNull('edarate_shahri_id'); -// } else { -// return $query->where('edarate_ostani_id', $province_office); -// } -// }) -// ->with(['roles' => function ($query) { -// $query->where('for_report', 1); -// }]) -// ->get(); -// } else { -// return response()->json([ -// 'message' => 'Forbidden', -// ], 403); -// } -// -// return $this->successResponse($users); -// } - - public function index(Request $request) + public function index(Request $request): JsonResponse { - $currentUser = Auth::user(); - $currentUser->addActivityComplete(1038); + Auth::user()->addActivityComplete(1038); - $province = $request->province ?? null; - $city = $request->city ?? null; - $province_office = $request->province_office ?? null; - if ( - ! $currentUser->checkUserHasPermission('full-user-management') && - ! $currentUser->checkUserHasPermission('limited-user-management') - ) { - return response()->json(['message' => 'Forbidden'], 403); - } - $query = User::query() - ->when($province, function ($query, $province) { - return $query->where('province_id', $province); - }) - ->with(['roles' => fn($q) => $q->where('for_report', 1)]) - ->when($city, function ($query, $city) { - return $query->where('city_id', $city); - }) - ->when($province_office, function ($query, $province_office) { - if ($province_office === -1) { - return $query->whereNull('edarate_ostani_id')->whereNotNull('edarate_shahri_id'); - } else { - return $query->where('edarate_ostani_id', $province_office); - } - }); - - if ($currentUser->checkUserHasPermission('limited-user-management')) { - $query->where('province_id', $currentUser->province_id); - } $data = DataTableFacade::run( - $query, + User::query(), $request, allowedFilters: ['*'], - allowedSortings: ['*'] + allowedSortings: ['*'], ); return $this->successResponse($data); @@ -125,19 +43,21 @@ class UserManagementController extends Controller public function store(StoreRequest $request): jsonResponse { - $user = auth()->user(); + auth()->user()->addActivityComplete(1039); - $user->addActivityComplete(1039); - - $createdUser = DB::transaction(function () use ($request) { + DB::transaction(function () use ($request) { $user = User::query()->create([ 'username' => $request->username, 'national_code' => $request->national_code, 'password' => Hash::make($request->password), 'province_id' => $request->province_id ?: null, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa, 'city_id' => $request->city_id ?: null, + 'city_fa' => ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa, 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_ostani_name' => EdarateOstani::query()->find($request->edarate_ostani_name), 'edarate_shahri_id' => $request->edarate_shahri_id, + 'edarate_shahri_name' => EdarateShahri::query()->find($request->edarate_shahri_name), 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'position' => $request->position, @@ -145,37 +65,10 @@ class UserManagementController extends Controller 'degree' => $request->degree, 'major' => $request->major, ]); + $user->avatar = FileFacade::save($request->file('avatar'), "avatar/{$user->id}"); + }); - $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; - - if ($request->edarate_ostani_id != null) { - $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; - $user->edarate_ostani_id = $request->edarate_ostani_id; - $user->edarate_ostani_name = $temp; - if ($request->province_id == 0) { - $user->name = $temp.' '.$user->province_fa; - } else { - $user->name = $temp.' استان '.$user->province_fa; - } - } else { - $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; - $user->edarate_shahri_id = $request->edarate_shahri_id; - $user->edarate_shahri_name = $temp; - - if ($request->province_id == 0) { - $user->name = $temp.' '.$user->province_fa; - } else { - $user->name = $temp.' استان '.$user->province_fa; - } - } - $user->save(); - - return $user; - }); - - return $this->successResponse($createdUser); + return $this->successResponse(); } public function show(User $user) @@ -188,15 +81,19 @@ class UserManagementController extends Controller public function update(UpdateRequest $request, User $user): JsonResponse { auth()->user()->addActivityComplete(1040); - $createdUser = DB::transaction(function () use ($request, $user) { + DB::transaction(function () use ($request, $user) { $user->update([ 'username' => $request->username, 'national_code' => $request->national_code, 'province_id' => $request->province_id ?: null, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa, 'city_id' => $request->city_id ?: null, + 'city_fa' => ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa, 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_ostani_name' => EdarateOstani::query()->find($request->edarate_ostani_name), 'edarate_shahri_id' => $request->edarate_shahri_id, + 'edarate_shahri_name' => EdarateShahri::query()->find($request->edarate_shahri_name), 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'position' => $request->position, @@ -205,38 +102,18 @@ class UserManagementController extends Controller 'major' => $request->major, ]); - $user->province_fa = ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa; - - $user->city_fa = ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa; - - if ($request->edarate_ostani_id != null) { - $temp = EdarateOstani::find($request->edarate_ostani_id)->name_fa; - $user->edarate_ostani_id = $request->edarate_ostani_id; - $user->edarate_ostani_name = $temp; - if ($request->province_id == 0) { - $user->name = $temp . ' ' . $user->province_fa; - } else { - $user->name = $temp . ' استان ' . $user->province_fa; - } - } else { - $temp = EdarateShahri::find($request->edarate_shahri_id)->name_fa; - $user->edarate_shahri_id = $request->edarate_shahri_id; - $user->edarate_shahri_name = $temp; - - if ($request->province_id == 0) { - $user->name = $temp . ' ' . $user->province_fa; - } else { - $user->name = $temp . ' استان ' . $user->province_fa; - } + if ($request->has('avatar')) { + FileFacade::delete($user->avatar, true); + $user['avatar'] = FileFacade::save($request->file('avatar'), "avatar/{$user->id}/"); } - if (! is_null($request->password)) { - $user->password = Hash::make($request->password); - } + if (! is_null($request->password)) { + $user->password = Hash::make($request->password); + } - if (! is_null($request->permissions)) { - $user->syncPermissions(explode(',', $request->permissions)); - } + if (! is_null($request->permissions)) { + $user->syncPermissions(explode(',', $request->permissions)); + } if ($request->filled('roles')) { $user->syncRoles($request->roles); @@ -245,7 +122,7 @@ class UserManagementController extends Controller $user->save(); }); - return $this->successResponse($createdUser); + return $this->successResponse(); } public function destroy(User $user) diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php index f936e54f..be9e5a1a 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php @@ -30,13 +30,13 @@ class StoreRequest extends FormRequest 'username' => 'required|unique:users,username', 'national_code' => 'unique:users,national_code', 'password' => 'required|min:8', - 'first_name' => 'required|string', - 'last_name' => 'required|string', - 'position' => 'required|string', - 'mobile' => 'required|string', - 'degree' => 'required|string', - 'major' => 'required|string', - + 'first_name' => 'string', + 'last_name' => 'string', + 'position' => 'string', + 'mobile' => 'string', + 'degree' => 'string', + 'major' => 'string', + 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index 78a9b437..82a041fd 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -28,15 +28,16 @@ class UpdateRequest extends FormRequest 'edarate_ostani_id' => 'exists:edarate_ostanis,id', 'city_id' => 'exists:cities,id', 'edarate_shahri_id' => 'exists:edarate_shahris,id', - 'username' => ['required', Rule::unique('users', 'username')->ignore($this->user->id)], + 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], - 'password' => 'required|min:8', + 'password' => 'min:8', 'first_name' => 'required|string', 'last_name' => 'required|string', - 'position' => 'required|string', + 'position' => 'string', 'mobile' => 'required|string', - 'degree' => 'required|string', - 'major' => 'required|string', + 'degree' => 'string', + 'major' => 'string', + 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', ]; } } diff --git a/app/Models/User.php b/app/Models/User.php index f640db88..be02772b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -29,7 +29,9 @@ class User extends Authenticatable 'name', 'email', 'major', 'password', 'username', 'first_name', 'last_name', 'position', 'mobile', 'province_id', 'city_id', 'confirmed', 'enabled', 'avatar', 'city_fa', 'province_fa', 'degree', 'national_code', 'edarate_ostani_id', - 'edarate_shahri_id' + 'edarate_shahri_id', + 'edarate_ostani_name', + 'edarate_shahri_name' ]; /** diff --git a/routes/v3.php b/routes/v3.php index 3e66d40b..3d98b316 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -587,7 +587,8 @@ Route::prefix('user_management') ->controller(UserManagementController::class) ->group(function () { // Route::get('/', 'index')->name('index'); - Route::get('/', 'index')->name('index'); + Route::get('/', 'index')->name('index')->middleware( + 'permission:full-user-management|limited-user-management'); Route::post('/', 'store')->name('store'); Route::get('/{user}', 'show')->name('show'); Route::post('/{user}', 'update')->name('update'); From 93384d39ee9ca663b6a2184e5117c55154ea7813 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 1 Nov 2025 15:39:42 +0330 Subject: [PATCH 20/54] write find code for harim --- .../V3/Dashboard/Harim/PanjareVahedController.php | 12 +++++++++--- .../Harim/PanjareVahed/ReceiveNewRequest.php | 6 ++++-- config/harim_web_services.php | 5 +++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index dbbb9128..9d5c065d 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -21,6 +21,13 @@ class PanjareVahedController extends Controller public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse { + $iv = config('harim_web_services.Get_Info.iv'); + $keyString = config('harim_web_services.Get_Info.keyString'); + + $key = hash('sha256',$keyString, true); + + $decrypted = openssl_decrypt($request->data, 'aes-256-cbc', $key, false, $iv); + $wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))'; $result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]); preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches); @@ -62,12 +69,11 @@ class PanjareVahedController extends Controller 'response_options' => json_encode($request->response_options), 'isic' => $request->isic, 'primary_area' => json_encode($request->primary_area), - 'data' => $request->data['data'], - 'token' => $request->data['token'], + 'data' => $decrypted, + 'token' => $decrypted->token, ]); return response()->json([ - 'request_id' => $request->request_id, 'id' => $harim->id, 'city' => $city->edarateShahri()->first()->name_fa, 'province' => $city->province()->first()->name_fa, diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index d5bc528d..3ddf8d7e 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -33,12 +33,14 @@ class ReceiveNewRequest extends FormRequest 'plan_group' => 'required', 'plan_title' => 'required', 'worksheet' => 'required', - 'response_options' => 'required', + 'response_options' => 'required|array', + 'response_options.*.id' => 'required|integer', + 'response_options.*.value' => 'required|string', 'isic' => 'required', 'primary_area' => 'required|array', 'primary_area.type' => 'required|string', 'primary_area.coordinates' => 'required|array', - 'data' => 'required|array', + 'data' => 'required|string', ]; } diff --git a/config/harim_web_services.php b/config/harim_web_services.php index 7104519c..3c8268c6 100644 --- a/config/harim_web_services.php +++ b/config/harim_web_services.php @@ -30,4 +30,9 @@ return [ 'password' => env('HARIM_NEED_GUARANTEE_LETTER_PASSWORD'), 'username' => env('HARIM_NEED_GUARANTEE_LETTER_USERNAME'), ], + + 'Get_Info' => [ + 'key' => env('HARIM_ENCRYPTION_KEY'), + 'iv' => env('HARIM_ENCRYPTION_IV'), + ], ]; From d9d5f39261166aa937a92df93cd4dd6b0598ed7b Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 2 Nov 2025 13:57:26 +0330 Subject: [PATCH 21/54] fix last code for this part --- .../Harim/PanjareVahedController.php | 14 ++++++++----- .../Harim/PanjareVahed/ReceiveNewRequest.php | 20 ++++++++++++++----- config/harim_web_services.php | 2 +- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 9d5c065d..b38127b0 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -21,12 +21,16 @@ class PanjareVahedController extends Controller public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse { - $iv = config('harim_web_services.Get_Info.iv'); - $keyString = config('harim_web_services.Get_Info.keyString'); + $iv = config('harim_web_services.Harim_Info.iv'); + $keyString = config('harim_web_services.Harim_Info.keyString'); $key = hash('sha256',$keyString, true); - $decrypted = openssl_decrypt($request->data, 'aes-256-cbc', $key, false, $iv); + $decrypted = openssl_decrypt($request->data,'aes-256-cbc',$key,false, $iv); + + $decodedString = json_decode($decrypted); + $decodedArray = json_decode($decodedString, true); + $wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))'; $result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]); @@ -69,8 +73,8 @@ class PanjareVahedController extends Controller 'response_options' => json_encode($request->response_options), 'isic' => $request->isic, 'primary_area' => json_encode($request->primary_area), - 'data' => $decrypted, - 'token' => $decrypted->token, + 'data' => $decodedString, + 'token' => $decodedArray['token'], ]); return response()->json([ diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index 3ddf8d7e..48871f1e 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -46,11 +46,21 @@ class ReceiveNewRequest extends FormRequest protected function failedValidation(Validator $validator) { - $response = response()->json([ - 'statusCode' => 422, - 'message' => 'invalid inputs', - 'errors' => $validator->errors(), - ], 422); + if ($validator->errors()->has('request_id') && str_contains($validator->errors()->first('request_id'), 'unique')) + { + $response = response()->json([ + 'statusCode' => 201, + 'message' => 'already stored', + ], 201); + } + else + { + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); + } throw new HttpResponseException($response); } diff --git a/config/harim_web_services.php b/config/harim_web_services.php index 3c8268c6..437739e7 100644 --- a/config/harim_web_services.php +++ b/config/harim_web_services.php @@ -31,7 +31,7 @@ return [ 'username' => env('HARIM_NEED_GUARANTEE_LETTER_USERNAME'), ], - 'Get_Info' => [ + 'Harim_Info' => [ 'key' => env('HARIM_ENCRYPTION_KEY'), 'iv' => env('HARIM_ENCRYPTION_IV'), ], From 7fb900849fb32f76932e674b3a1fe76b84e0186c Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 2 Nov 2025 14:13:59 +0330 Subject: [PATCH 22/54] fix last code for this part --- .../Harim/PanjareVahedController.php | 6 +++++- .../Harim/PanjareVahed/ReceiveNewRequest.php | 21 ++++++------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index b38127b0..75af3678 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -54,7 +54,11 @@ class PanjareVahedController extends Controller $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; - $harim = Harim::query()->create([ + $harim = Harim::query()->firstOrCreate( + [ + 'panjare_vahed_id' => $request->request_id + ], + [ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'panjare_vahed_id' => $request->request_id, diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index 48871f1e..3653c53b 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; +use App\Models\Harim; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; @@ -46,21 +47,11 @@ class ReceiveNewRequest extends FormRequest protected function failedValidation(Validator $validator) { - if ($validator->errors()->has('request_id') && str_contains($validator->errors()->first('request_id'), 'unique')) - { - $response = response()->json([ - 'statusCode' => 201, - 'message' => 'already stored', - ], 201); - } - else - { - $response = response()->json([ - 'statusCode' => 422, - 'message' => 'invalid inputs', - 'errors' => $validator->errors(), - ], 422); - } + $response = response()->json([ + 'statusCode' => 422, + 'message' => 'invalid inputs', + 'errors' => $validator->errors(), + ], 422); throw new HttpResponseException($response); } From d3d39dcc49ddc982114c7594adc79f60fb2a6b04 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 3 Nov 2025 19:28:32 +0330 Subject: [PATCH 23/54] crate service and request for create user --- .../V3/Dashboard/UserManagementController.php | 403 ++++++++++++------ .../ChangeConfirmEnabelRequest.php | 32 ++ .../ChangeConfirmStatusRequest.php | 29 ++ .../UserManagement/ChangePasswordRequest.php | 29 ++ .../UserManagement/GiveRoleRequest.php | 3 +- .../UserManagement/StoreExrtraRequest.php | 42 ++ .../Dashboard/UserManagement/StoreRequest.php | 13 +- .../UserManagement/UpdateRequest.php | 6 +- .../UserManagement/UserManagementService.php | 28 ++ routes/v3.php | 11 +- 10 files changed, 437 insertions(+), 159 deletions(-) create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php create mode 100644 app/Services/Cartables/UserManagement/UserManagementService.php diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index 32631968..72ebb554 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -2,9 +2,11 @@ namespace App\Http\Controllers\V3\Dashboard; -use App\Facades\DataTable\DataTableFacade; use App\Facades\File\FileFacade; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmEnabelRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmStatusRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\ChangePasswordRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest; @@ -16,10 +18,10 @@ use App\Models\EdarateShahri; use App\Models\Province; use App\Models\Role; use App\Models\User; +use App\Services\Cartables\UserManagement\UserManagementService; use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; @@ -27,37 +29,61 @@ class UserManagementController extends Controller { use ApiResponse; - public function index(Request $request): JsonResponse + public function index(Request $request, UserManagementService $userManagementService): JsonResponse { - Auth::user()->addActivityComplete(1038); + auth()->user()->addActivityComplete(1038); - $data = DataTableFacade::run( - User::query(), - $request, - allowedFilters: ['*'], - allowedSortings: ['*'], - ); + $data = $userManagementService->datatable($request); - return $this->successResponse($data); + return response()->json($data); } public function store(StoreRequest $request): jsonResponse { auth()->user()->addActivityComplete(1039); + User::query()->create([ + 'username' => $request->username, + 'national_code' => $request->national_code, + 'password' => Hash::make($request->password), + 'province_id' => $request->province_id, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa, + 'city_id' => $request->city_id, + 'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa, + 'edarate_ostani_id' => $request->edarate_ostani_id, + 'edarate_ostani_name' => $request->edarate_ostani_id == null ? + null : + EdarateOstani::query()->find($request->edarate_ostani_id), + 'edarate_shahri_id' => $request->edarate_shahri_id, + 'edarate_shahri_name' => $request->edarate_shahri_id == null ? + null : + EdarateShahri::query()->find($request->edarate_shahri_id), + ]); + + return $this->successResponse(); + } + + public function storeExtra(StoreRequest $request): jsonResponse + { DB::transaction(function () use ($request) { + auth()->user()->addActivityComplete(1039); + $user = User::query()->create([ 'username' => $request->username, 'national_code' => $request->national_code, 'password' => Hash::make($request->password), - 'province_id' => $request->province_id ?: null, - 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa, - 'city_id' => $request->city_id ?: null, - 'city_fa' => ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa, + 'province_id' => $request->province_id, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa, + 'city_id' => $request->city_id, + 'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa, 'edarate_ostani_id' => $request->edarate_ostani_id, - 'edarate_ostani_name' => EdarateOstani::query()->find($request->edarate_ostani_name), + 'edarate_ostani_name' => $request->edarate_ostani_id == null ? + null : + EdarateOstani::query()->find($request->edarate_ostani_id), 'edarate_shahri_id' => $request->edarate_shahri_id, - 'edarate_shahri_name' => EdarateShahri::query()->find($request->edarate_shahri_name), + 'edarate_shahri_name' => $request->edarate_shahri_id == null ? + null : + EdarateShahri::query()->find($request->edarate_shahri_id), 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'position' => $request->position, @@ -65,147 +91,157 @@ class UserManagementController extends Controller 'degree' => $request->degree, 'major' => $request->major, ]); - $user->avatar = FileFacade::save($request->file('avatar'), "avatar/{$user->id}"); + $user->avatar = $request->has('avatar') ? + FileFacade::save($request->avatar, "user/{$user->id}") : + null; }); return $this->successResponse(); } - public function show(User $user) + public function show(User $user): JsonResponse { - $user = User::where('id', $user->id)->with(['roles', 'permissions'])->get(); - - return $this->successResponse($user); + return $this->successResponse($user->with(['roles', 'permissions'])->get()); } + /** + * @throws \Throwable + */ public function update(UpdateRequest $request, User $user): JsonResponse { - auth()->user()->addActivityComplete(1040); DB::transaction(function () use ($request, $user) { + auth()->user()->addActivityComplete(1040); - $user->update([ + $data = [ 'username' => $request->username, 'national_code' => $request->national_code, - 'province_id' => $request->province_id ?: null, - 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::find($request->province_id)->name_fa, - 'city_id' => $request->city_id ?: null, - 'city_fa' => ($request->city_id == 0) ? null : City::find($request->city_id)->name_fa, + 'province_id' => $request->province_id, + 'province_fa' => ($request->province_id == 0) ? 'ستاد' : Province::query()->find($request->province_id)->name_fa, + 'city_id' => $request->city_id, + 'city_fa' => ($request->city_id == 0) ? null : City::query()->find($request->city_id)->name_fa, 'edarate_ostani_id' => $request->edarate_ostani_id, - 'edarate_ostani_name' => EdarateOstani::query()->find($request->edarate_ostani_name), + 'edarate_ostani_name' => $request->edarate_ostani_id == null ? + null : + EdarateOstani::query()->find($request->edarate_ostani_id), 'edarate_shahri_id' => $request->edarate_shahri_id, - 'edarate_shahri_name' => EdarateShahri::query()->find($request->edarate_shahri_name), + 'edarate_shahri_name' => $request->edarate_shahri_id == null ? + null : + EdarateShahri::query()->find($request->edarate_shahri_id), 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'position' => $request->position, 'mobile' => $request->mobile, 'degree' => $request->degree, 'major' => $request->major, - ]); + ]; if ($request->has('avatar')) { - FileFacade::delete($user->avatar, true); - $user['avatar'] = FileFacade::save($request->file('avatar'), "avatar/{$user->id}/"); + if ($user->avatar) { + FileFacade::delete($user->avatar, true); + } + $data['avatar'] = FileFacade::save($request->file('avatar'), "avatar/{$user->id}/"); } - if (! is_null($request->password)) { - $user->password = Hash::make($request->password); - } - - if (! is_null($request->permissions)) { - $user->syncPermissions(explode(',', $request->permissions)); - } - - if ($request->filled('roles')) { - $user->syncRoles($request->roles); - } - - $user->save(); + $user->update($data); }); return $this->successResponse(); } - public function destroy(User $user) + public function destroy(User $user): JsonResponse { - $user->delete(); + DB::transaction(function () use ($user) { + if ($user->avatar) { + FileFacade::delete($user->avatar, true); + } + if ($user->photo) { + FileFacade::delete($user->photo, true); + } + + $user->roles()->detach(); + $user->permissions()->detach(); + $user->delete(); + }); + + return $this->successResponse(); + } + + public function changePassword(User $user, ChangePasswordRequest $request): JsonResponse + { + $user->update([ + 'password' => Hash::make($request->new_password), + ]); return $this->successResponse(); } public function givePermissionsTo(GivePermissionRequest $request, User $user): JsonResponse { + $user->syncPermissions($request->permissions); - $user->givePermissionTo($request->permissions); - - return $this->successResponse($user->load('permissions')); + return $this->successResponse(); } - public function givePermissionsToRole(GivePermissionRequest $request, Role $role): JsonResponse + public function giveRoleToUser(GiveRoleRequest $request, User $user): JsonResponse { - $permissionId = $request->permissions; - $role->syncPermissions($permissionId); + $user->syncRoles($request->role); - return $this->successResponse($role->load('permissions')); + return $this->successResponse(); } - public function giveRolesToUser(GiveRoleRequest $request, User $user): JsonResponse + public function changeConfirmedStatus(ChangeConfirmStatusRequest $request, User $user): JsonResponse { - $roles = $request->roles; - - $user->assignRole($roles); - - return $this->successResponse($user->load('roles')); - } - - public function getUserPermissions(): JsonResponse - { - $userPermissions = Auth::user()->getUserPermissions(); - - return $this->successResponse($userPermissions); - } - - public function activityReport() - { - return view('version2.dashboard_pages.user_management.activity_report'); - } - - public function userActivityLogs() - { - return response()->json([ - 'status' => 'succeed', - 'message' => '', - 'data' => auth()->user()->activityLogs, - ], 200); - } - - public function changeConfirmedStatus(Request $request) - { - $request->validate([ - 'user_ids' => 'required|regex:/^(\d+)(,\d+)*$/', - 'confirm' => 'required|in:0,1', - ]); - - $user_ids = explode(',', $request->user_ids); - - User::whereIn('id', $user_ids)->update([ + $user->update([ 'confirmed' => $request->confirm, ]); return $this->successResponse(); - } - public function changePassword(User $user, Request $request) + public function changeUserEnabeld(ChangeConfirmEnabelRequest $request, User $user): JsonResponse { - $validData = $request->validate([ - 'password' => 'required|string|min:8|confirmed', + $user->update([ + 'enabled' => $request->enabled, ]); - $user->password = Hash::make($request->password); - $user->save(); return $this->successResponse(); } + // public function userActivityLogs() + // { + // return response()->json([ + // 'status' => 'succeed', + // 'message' => '', + // 'data' => auth()->user()->activityLogs, + // ], 200); + // } + + // public function userPermission($id) + // { + // $user = User::find($id); + // + // return response()->json([ + // 'message' => 'success', + // 'data' => $user->permissions, + // ]); + // } + + // public function assignPermission(Request $request, User $user) + // { + // if (auth()->user()) { + // auth()->user()->addActivityComplete(1042); + // } + // $permissions = explode(',', $request->permissions); + // if (! $permissions == null) { + // $user->syncPermissions($permissions); + // } + // + // return response()->json([ + // 'message' => 'status', + // 'data' => User::where('id', $user->id)->with(['permissions'])->get(), + // ]); + // } + public function getUserSummaryReport(Request $request, User $user) { $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->subDays(30)->format('Y-m-d 00:00:00'); @@ -498,46 +534,137 @@ class UserManagementController extends Controller return View('word.user-activity-individual', compact('data')); } - public function userPermission($id) + public function indexShow(Request $request) { - $user = User::find($id); + $request->fromDate = $request->fromDate ? $request->fromDate.' 00:00:00' : Carbon::now()->format('Y-m-d 00:00:00'); + $request->toDate = $request->toDate ? $request->toDate.' 23:59:59' : Carbon::now()->format('Y-m-d 23:59:59'); + + $roles_must_show_report = Role::where('for_report', 1)->get(); + + $data = []; + + $users_activity = []; + + foreach ($roles_must_show_report as $key => $value) { + $ids_list = ''; + $users = $value->users()->select('id')->get()->toArray(); + foreach ($users as $index => $item) { + if (! $index) { + $ids_list = $item['id']; + } else { + $ids_list .= ','.$item['id']; + } + } + $temp_sql = " + SELECT sum(majmoe) AS activity FROM (SELECT *, + COUNT(quantity) AS majmoe + FROM ( + SELECT *, + COUNT(*) AS quantity + FROM user_activity_logs + WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$ids_list.') + GROUP BY yy, + mm, + dd, + hh, + user_id + ) user_activity_by_hour_and_ + GROUP BY user_id) AS calculated_table;'; + + $activity = DB::select($temp_sql)[0]->activity; + $users_activity[] = [ + 'activity_time' => $ids_list ? $activity : null, + 'average' => round(($ids_list ? $activity : 0) / count($users), 2), + 'group_name' => $value->name_fa, + 'user_count' => count($users), + 'is_static' => 0, + 'group_id' => $value->id, + ]; + } + + $country_group_ids_list = ''; + $country_group_user_quantity = 0; + foreach (Role::whereIn('id', $this->country_group_ids_list_array)->get() as $key => $value) { + $users = $value->users()->select('id')->get(); + $country_group_user_quantity += count($users); + foreach ($users as $index => $item) { + if (! $key) { + $country_group_ids_list = $item->id; + } else { + $country_group_ids_list .= ','.$item->id; + } + } + } + + $country_temp_sql = " + SELECT sum(majmoe) AS activity FROM (SELECT *, + COUNT(quantity) AS majmoe + FROM ( + SELECT *, + COUNT(*) AS quantity + FROM user_activity_logs + WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$country_group_ids_list.') + GROUP BY yy, + mm, + dd, + hh, + user_id + ) user_activity_by_hour_and_ + GROUP BY user_id) AS calculated_table;'; + + $users_activity[] = [ + 'activity_time' => $country_group_ids_list ? DB::select($country_temp_sql)[0]->activity : null, + 'average' => round(($country_group_ids_list ? DB::select($country_temp_sql)[0]->activity : 0) / $country_group_user_quantity, 2), + 'group_name' => 'کشوری', + 'user_count' => $country_group_user_quantity, + 'is_static' => 1, + 'group_id' => 3, + ]; + + $organization_group_ids_list = ''; + $organization_group_user_quantity = 0; + foreach (Role::whereIn('id', $this->organization_group_ids_list_array)->get() as $key => $value) { + $users = $value->users()->select('id')->get(); + $organization_group_user_quantity += count($users); + foreach ($users as $index => $item) { + if (! $key) { + $organization_group_ids_list = $item->id; + } else { + $organization_group_ids_list .= ','.$item->id; + } + } + } + + $organization_temp_sql = " + SELECT sum(majmoe) AS activity FROM (SELECT *, + COUNT(quantity) AS majmoe + FROM ( + SELECT *, + COUNT(*) AS quantity + FROM user_activity_logs + WHERE (created_at between '{$request->fromDate}' and '{$request->toDate}') and user_id IN(".$organization_group_ids_list.') + + GROUP BY yy, + mm, + dd, + hh, + user_id + ) user_activity_by_hour_and_ + GROUP BY user_id) AS calculated_table;'; + + $users_activity[] = [ + 'activity_time' => $organization_group_ids_list ? DB::select($organization_temp_sql)[0]->activity : null, + 'average' => round(($organization_group_ids_list ? DB::select($organization_temp_sql)[0]->activity : 0) / $organization_group_user_quantity, 2), + 'group_name' => 'سازمانی', + 'user_count' => $organization_group_user_quantity, + 'is_static' => 2, + 'group_id' => 3, + ]; return response()->json([ - 'message' => 'success', - 'data' => $user->permissions, - ]); - } - - public function assignPermission(Request $request, User $user) - { - if (auth()->user()) { - auth()->user()->addActivityComplete(1042); - } - $permissions = explode(',', $request->permissions); - if (! $permissions == null) { - $user->syncPermissions($permissions); - } - - return response()->json([ - 'message' => 'status', - 'data' => User::where('id', $user->id)->with(['permissions'])->get(), - ]); - } - - public function changeUserEnabeld(User $user) - { - if (Auth::user()->checkUserHasPermission('full-user-management')) { - $user->enabled = ! $user->enabled; - - return $this->successResponse($user); - } elseif (Auth::user()->checkUserHasPermission('limited-user-management') && Auth::user()->province_id == $user->province_id) { - $user->enabled = ! $user->enabled; - - return $this->successResponse(); - } else { - return response()->json([ - 'message' => 'Forbidden', - ], 403); - } + 'status' => 'succeed', + 'message' => '', + 'data' => $users_activity, + ], 200); } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php new file mode 100644 index 00000000..52ec36bd --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmEnabelRequest.php @@ -0,0 +1,32 @@ +user(); + + return $user->hasPermissionTo('full-user-management') || + ($user->hasPermissionTo('limited-user-management') && $this->province_id == $user->province_id); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'enabled' => 'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php new file mode 100644 index 00000000..accbbb4d --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/ChangeConfirmStatusRequest.php @@ -0,0 +1,29 @@ + + */ + public function rules(): array + { + return [ + 'confirm' => 'required|in:0,1', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php new file mode 100644 index 00000000..36f91819 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/ChangePasswordRequest.php @@ -0,0 +1,29 @@ + + */ + public function rules(): array + { + return [ + 'password' => 'required|string|confirmed|min:8', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php index 6826799a..de1735cc 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/GiveRoleRequest.php @@ -23,8 +23,7 @@ class GiveRoleRequest extends FormRequest public function rules(): array { return [ - 'roles' => 'array', - 'roles.*' => 'integer|exists:permissions,id', + 'role' => 'required|exists:roles,id', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php new file mode 100644 index 00000000..2663aeb0 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php @@ -0,0 +1,42 @@ + + */ + public function rules(): array + { + return [ + 'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id', + 'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', + 'province_id' => 'required|exists:provinces,id', + 'city_id' => 'exists:cities,id', + 'username' => 'required|unique:users,username', + 'national_code' => 'unique:users,national_code', + 'password' => 'required|string|confirmed|min:8', + 'first_name' => 'required|string', + 'last_name' => 'required|string', + 'position' => 'string', + 'mobile' => 'required|string', + 'degree' => 'string', + 'major' => 'string', + 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php index be9e5a1a..e6b6c29d 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php @@ -23,20 +23,13 @@ class StoreRequest extends FormRequest public function rules(): array { return [ + 'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id', + 'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'exists:edarate_ostanis,id', 'city_id' => 'exists:cities,id', - 'edarate_shahri_id' => 'exists:edarate_shahris,id', 'username' => 'required|unique:users,username', 'national_code' => 'unique:users,national_code', - 'password' => 'required|min:8', - 'first_name' => 'string', - 'last_name' => 'string', - 'position' => 'string', - 'mobile' => 'string', - 'degree' => 'string', - 'major' => 'string', - 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', + 'password' => 'required|string|confirmed|min:8', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index 82a041fd..d41eea2e 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -25,12 +25,10 @@ class UpdateRequest extends FormRequest { return [ 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'exists:edarate_ostanis,id', - 'city_id' => 'exists:cities,id', - 'edarate_shahri_id' => 'exists:edarate_shahris,id', + 'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id', + 'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', 'city_id' => 'exists:cities,id', 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], - 'password' => 'min:8', 'first_name' => 'required|string', 'last_name' => 'required|string', 'position' => 'string', diff --git a/app/Services/Cartables/UserManagement/UserManagementService.php b/app/Services/Cartables/UserManagement/UserManagementService.php new file mode 100644 index 00000000..36f02645 --- /dev/null +++ b/app/Services/Cartables/UserManagement/UserManagementService.php @@ -0,0 +1,28 @@ +hasPermissionTo('full-user-management') ? + User::query() : + User::query()->where('province_id', '=', $user->province_id); + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + allowedSelects: ['id', 'username', 'status', 'province_id', 'province_fa', 'city_id', 'city_fa', 'first_name', 'last_name', 'mobile', 'position', 'major', 'setad_id', 'last_login', 'roles', 'edarate_shahri_id', 'edarate_shahri_name', 'national_code', 'name', 'enabled', 'email', + 'edarate_ostani_id', 'edarate_ostani_name', 'degree', 'confirmed', 'checked', 'updated_at', 'photo', 'created_at'], + ); + } +} diff --git a/routes/v3.php b/routes/v3.php index 3d98b316..d93ff295 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -590,23 +590,24 @@ Route::prefix('user_management') Route::get('/', 'index')->name('index')->middleware( 'permission:full-user-management|limited-user-management'); Route::post('/', 'store')->name('store'); + Route::post('/store_extra', 'storeExtra')->name('storeExtra'); Route::get('/{user}', 'show')->name('show'); Route::post('/{user}', 'update')->name('update'); Route::delete('/{user}', 'destroy')->name('destroy'); + Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); Route::post('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo'); - Route::post('/give_permissions_to_role', 'givePermissionsToRole')->name('givePermissionsToRole'); - Route::post('/give_roles_to_user','giveRolesToUser')->name('giveRolesToUser'); + Route::post('/give_role_to_user','giveRoleToUser')->name('giveRoleToUser'); + Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus'); + Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld')->middleware( + 'permission:full-user-management|limited-user-management'); Route::get('/activity_report', 'activityReport')->name('activityReport'); Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs'); - Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus'); Route::get('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo'); Route::get('/get_user_permissions', 'getUserPermissions')->name('getUserPermissions'); Route::get('/get_user_summary_report', 'getUserSummaryReport')->name('getUserSummaryReport'); Route::get('/print_group', 'printGroup')->name('printGroup'); Route::get('/user_permission', 'userPermission')->name('userPermission'); Route::get('/assign_permission', 'assignPermission')->name('assignPermission'); - Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld'); - Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); }); Route::prefix('role') ->name('role.') From 2761f4891a07496b7578b879ff8b5ede1041acbc Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 4 Nov 2025 15:50:08 +0330 Subject: [PATCH 24/54] create history for webservice --- app/Enums/PanjarehVahedHistoryActions.php | 9 ++ .../Harim/PanjareVahedController.php | 105 ++++++++---------- .../PanjareVahed/GetAccessRoadRequest.php | 2 +- .../PanjareVahed/GetFinalPolygonsRequest.php | 2 +- .../Harim/PanjareVahed/GetRejectRequest.php | 3 +- app/Models/City.php | 27 ++--- app/Models/Harim.php | 18 +++ app/Models/PanjarehVahedHistory.php | 13 +++ .../factories/PanjarehVahedHistoryFactory.php | 23 ++++ ...0_15_085149_add_column_to_harims_table.php | 3 +- ..._create_panjareh_vahed_histories_table.php | 30 +++++ .../seeders/PanjarehVahedHistorySeeder.php | 17 +++ 12 files changed, 171 insertions(+), 81 deletions(-) create mode 100644 app/Enums/PanjarehVahedHistoryActions.php create mode 100644 app/Models/PanjarehVahedHistory.php create mode 100644 database/factories/PanjarehVahedHistoryFactory.php create mode 100644 database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php create mode 100644 database/seeders/PanjarehVahedHistorySeeder.php diff --git a/app/Enums/PanjarehVahedHistoryActions.php b/app/Enums/PanjarehVahedHistoryActions.php new file mode 100644 index 00000000..ca6f5180 --- /dev/null +++ b/app/Enums/PanjarehVahedHistoryActions.php @@ -0,0 +1,9 @@ +data,'aes-256-cbc',$key,false, $iv); - - $decodedString = json_decode($decrypted); - $decodedArray = json_decode($decodedString, true); - - $wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))'; $result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]); preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches); - try { - $city = City::query() - ->whereRaw("ST_Contains( - geometry, - ST_GeomFromText('POINT($matches[1] $matches[2])', 4326))" - ) - ->firstOrFail(['id', 'name_fa', 'province_id']); - } catch (ModelNotFoundException $exception) { - $city = City::query() - ->orderByRaw("ST_Distance( - geometry, - ST_GeomFromText('POINT($matches[1] $matches[2])', 4326)) ASC" - ) - ->first(['id', 'name_fa', 'province_id']); - } + $city = City::findCityWithLatLng(lat:$matches[2], lng: $matches[1]); $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; - $harim = Harim::query()->firstOrCreate( + $harim = Harim::query()->firstOrCreate(['panjare_vahed_id' => $request->request_id], [ - 'panjare_vahed_id' => $request->request_id - ], - [ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - 'panjare_vahed_id' => $request->request_id, - 'national_id' => $request->national_id, - 'phone_number' => $request->phone_number, - 'request_date' => $request->request_date, - 'province_id' => $city->province_id, - 'province_name' => $city->province()->first()->name_fa, - 'city_id' => $city->id, - 'city_name' => $city->name_fa, - 'edareh_shahri_id' => $city->edarateShahri()->first()->id, - 'requested_organization' => $request->requested_organization, - 'plan_group' => $request->plan_group, - 'plan_title' => $request->plan_title, - 'worksheet_id' => $request->worksheet, - 'response_options' => json_encode($request->response_options), - 'isic' => $request->isic, - 'primary_area' => json_encode($request->primary_area), - 'data' => $decodedString, - 'token' => $decodedArray['token'], + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + 'panjare_vahed_id' => $request->request_id, + 'national_id' => $request->national_id, + 'phone_number' => $request->phone_number, + 'request_date' => $request->request_date, + 'province_id' => $city->province_id, + 'province_name' => $city->province()->first()->name_fa, + 'city_id' => $city->id, + 'city_name' => $city->name_fa, + 'edareh_shahri_id' => $city->edarateShahri()->first()->id, + 'requested_organization' => $request->requested_organization, + 'plan_group' => $request->plan_group, + 'plan_title' => $request->plan_title, + 'worksheet_id' => $request->worksheet, + 'response_options' => json_encode($request->response_options), + 'isic' => $request->isic, + 'primary_area' => json_encode($request->primary_area), + 'data' => $request->data, + ] + ); + + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $request->data, ]); return response()->json([ @@ -96,16 +72,19 @@ class PanjareVahedController extends Controller $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $harim->data, + ]); + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'access_road' => json_encode($request->access_road), - 'data' => $request->data['data'], - 'token' => $request->data['token'], + 'data' => $request->data, ]); return response()->json([ - 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, 'message' => 'successful', @@ -118,15 +97,18 @@ class PanjareVahedController extends Controller $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $harim->data, + ]); + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), - 'data' => $request->data['data'], - 'token' => $request->data['token'], + 'data' => $request->data, ]); return response()->json([ - 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, 'message' => 'successful', @@ -139,17 +121,20 @@ class PanjareVahedController extends Controller $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); + $harim->panjarehVahedHistories()->create([ + 'harim_id' => $harim->id, + 'data' => $harim->data, + ]); + $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'final_area' => json_encode($request->final_area), 'final_plan' => json_encode($request->final_plan), - 'data' => $request->data['data'], - 'token' => $request->data['token'], + 'data' => $request->data, ]); return response()->json([ - 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, 'message' => 'successful', diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index bcd4d85d..733a03b6 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -29,7 +29,7 @@ class GetAccessRoadRequest extends FormRequest 'access_road' => 'required|array', 'access_road.type' => 'required|string', 'access_road.coordinates' => 'required|array', - 'data' => 'required|array', + 'data' => 'required|string', ]; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php index 1aa06f93..480bc4cf 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php @@ -32,7 +32,7 @@ class GetFinalPolygonsRequest extends FormRequest 'final_plan' => 'required|array', 'final_plan.type' => 'required|string', 'final_plan.coordinates' => 'required|array', - 'data' => 'required|array', + 'data' => 'required|string', ]; } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php index f270b3a0..b0f34405 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php @@ -26,7 +26,8 @@ class GetRejectRequest extends FormRequest { return [ 'request_id' => 'required|exists:harims,panjare_vahed_id', - 'data' => 'required|array', + 'data' => 'required|string', + 'status' => 'required|integer' ]; } diff --git a/app/Models/City.php b/app/Models/City.php index 43dde894..614cc699 100644 --- a/app/Models/City.php +++ b/app/Models/City.php @@ -86,23 +86,18 @@ class City extends Model { try { $city = City::query() - ->whereRaw(" - ST_Contains( - geometry, - ST_GeomFromText('POINT($lng $lat)', 4326) - ) - ") - ->firstOrFail(); - } - catch (ModelNotFoundException $exception) { + ->whereRaw("ST_Contains( + geometry, + ST_GeomFromText('POINT($lng $lat)', 4326))" + ) + ->firstOrFail(['id', 'name_fa', 'province_id']); + } catch (ModelNotFoundException $exception) { $city = City::query() - ->orderByRaw(" - ST_Distance( - geometry, - ST_GeomFromText('POINT($lng $lat)', 4326) - ) ASC - ") - ->first(); + ->orderByRaw("ST_Distance( + geometry, + ST_GeomFromText('POINT($lng $lat)', 4326)) ASC" + ) + ->first(['id', 'name_fa', 'province_id']); } return $city; diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 8e68d219..4d040594 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -23,4 +23,22 @@ class Harim extends Model get: fn($value) => json_decode($value) ); } + + public function panjarehVahedHistories(): HasMany + { + return $this->hasMany(PanjarehVahedHistory::class); + } + + protected function data(): Attribute + { + return Attribute::make( + set: function ($value) { + $iv = config('harim_web_services.Harim_Info.iv'); + $keyString = config('harim_web_services.Harim_Info.keyString'); + $key = hash('sha256',$keyString, true); + $decrypted = openssl_decrypt($value,'aes-256-cbc',$key,false, $iv); + return json_decode($decrypted); + }, + ); + } } diff --git a/app/Models/PanjarehVahedHistory.php b/app/Models/PanjarehVahedHistory.php new file mode 100644 index 00000000..b47736cf --- /dev/null +++ b/app/Models/PanjarehVahedHistory.php @@ -0,0 +1,13 @@ + + */ +class PanjarehVahedHistoryFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/migrations/2025_10_15_085149_add_column_to_harims_table.php b/database/migrations/2025_10_15_085149_add_column_to_harims_table.php index 71037b4c..175ff217 100644 --- a/database/migrations/2025_10_15_085149_add_column_to_harims_table.php +++ b/database/migrations/2025_10_15_085149_add_column_to_harims_table.php @@ -13,7 +13,6 @@ return new class extends Migration { Schema::table('harims', function (Blueprint $table) { $table->longText('data')->nullable(); - $table->string('token', 255)->nullable(); }); } @@ -23,7 +22,7 @@ return new class extends Migration public function down(): void { Schema::table('harims', function (Blueprint $table) { - $table->dropColumn(['data', 'token']); + $table->dropColumn('data'); }); } }; diff --git a/database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php b/database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php new file mode 100644 index 00000000..904d2a59 --- /dev/null +++ b/database/migrations/2025_11_04_104903_create_panjareh_vahed_histories_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('harim_id')->constrained('harims'); + $table->longText('data'); + $table->tinyInteger('action')->default(0); // 0 => receive, 1 => send + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('panjareh_vahed_histories'); + } +}; diff --git a/database/seeders/PanjarehVahedHistorySeeder.php b/database/seeders/PanjarehVahedHistorySeeder.php new file mode 100644 index 00000000..3b0930a6 --- /dev/null +++ b/database/seeders/PanjarehVahedHistorySeeder.php @@ -0,0 +1,17 @@ + Date: Tue, 4 Nov 2025 17:33:55 +0330 Subject: [PATCH 25/54] updade and fix service and request for create user --- .env.example | 6 ++- .../Harim/PanjareVahedController.php | 2 +- .../V3/Dashboard/UserManagementController.php | 44 +++++++++++++------ .../UserManagement/StoreExrtraRequest.php | 23 +++++++--- .../Dashboard/UserManagement/StoreRequest.php | 21 +++++++-- .../UserManagement/UpdateRequest.php | 17 ++++++- .../UserManagement/UserManagementService.php | 2 +- resources/lang/fa/validation.php | 4 +- routes/v3.php | 14 +++--- 9 files changed, 97 insertions(+), 36 deletions(-) diff --git a/.env.example b/.env.example index af200645..5a6b45c4 100644 --- a/.env.example +++ b/.env.example @@ -93,4 +93,8 @@ HARIM_NEED_GUARANTEE_LETTER_USERNAME= BACKUP_TARGET_DIR= BACKUP_USER= -BACKUP_PASSWORD= \ No newline at end of file +BACKUP_PASSWORD= + + +HARIM_ENCRYPTION_KEY="TestKey" +HARIM_ENCRYPTION_IV="1111000011110101" diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 75af3678..cc177988 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -22,7 +22,7 @@ class PanjareVahedController extends Controller public function receiveNewRequest(ReceiveNewRequest $request): JsonResponse { $iv = config('harim_web_services.Harim_Info.iv'); - $keyString = config('harim_web_services.Harim_Info.keyString'); + $keyString = config('harim_web_services.Harim_Info.key'); $key = hash('sha256',$keyString, true); diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index 72ebb554..a3514002 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -24,6 +24,7 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; +use Throwable; class UserManagementController extends Controller { @@ -38,7 +39,7 @@ class UserManagementController extends Controller return response()->json($data); } - public function store(StoreRequest $request): jsonResponse + public function limitStore(StoreRequest $request): jsonResponse { auth()->user()->addActivityComplete(1039); @@ -53,17 +54,20 @@ class UserManagementController extends Controller 'edarate_ostani_id' => $request->edarate_ostani_id, 'edarate_ostani_name' => $request->edarate_ostani_id == null ? null : - EdarateOstani::query()->find($request->edarate_ostani_id), + EdarateOstani::query()->find($request->edarate_ostani_id)->name_fa, 'edarate_shahri_id' => $request->edarate_shahri_id, 'edarate_shahri_name' => $request->edarate_shahri_id == null ? null : - EdarateShahri::query()->find($request->edarate_shahri_id), + EdarateShahri::query()->find($request->edarate_shahri_id)->name_fa, ]); return $this->successResponse(); } - public function storeExtra(StoreRequest $request): jsonResponse + /** + * @throws Throwable + */ + public function fullStore(StoreRequest $request): jsonResponse { DB::transaction(function () use ($request) { auth()->user()->addActivityComplete(1039); @@ -79,11 +83,11 @@ class UserManagementController extends Controller 'edarate_ostani_id' => $request->edarate_ostani_id, 'edarate_ostani_name' => $request->edarate_ostani_id == null ? null : - EdarateOstani::query()->find($request->edarate_ostani_id), + EdarateOstani::query()->find($request->edarate_ostani_id)->name_fa, 'edarate_shahri_id' => $request->edarate_shahri_id, 'edarate_shahri_name' => $request->edarate_shahri_id == null ? null : - EdarateShahri::query()->find($request->edarate_shahri_id), + EdarateShahri::query()->find($request->edarate_shahri_id)->name_fa, 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'position' => $request->position, @@ -91,6 +95,7 @@ class UserManagementController extends Controller 'degree' => $request->degree, 'major' => $request->major, ]); + $user->avatar = $request->has('avatar') ? FileFacade::save($request->avatar, "user/{$user->id}") : null; @@ -101,11 +106,22 @@ class UserManagementController extends Controller public function show(User $user): JsonResponse { - return $this->successResponse($user->with(['roles', 'permissions'])->get()); + return $this->successResponse($user); + } + + public function userPermissions(User $user): JsonResponse + { + $role = $user->roles()->pluck('name')->first(); + $permissions = $user->getAllPermissions()->pluck('name'); + + return $this->successResponse([ + 'role' => $role, + 'permissions' => $permissions, + ]); } /** - * @throws \Throwable + * @throws Throwable */ public function update(UpdateRequest $request, User $user): JsonResponse { @@ -122,11 +138,11 @@ class UserManagementController extends Controller 'edarate_ostani_id' => $request->edarate_ostani_id, 'edarate_ostani_name' => $request->edarate_ostani_id == null ? null : - EdarateOstani::query()->find($request->edarate_ostani_id), + EdarateOstani::query()->find($request->edarate_ostani_id)->name_fa, 'edarate_shahri_id' => $request->edarate_shahri_id, 'edarate_shahri_name' => $request->edarate_shahri_id == null ? null : - EdarateShahri::query()->find($request->edarate_shahri_id), + EdarateShahri::query()->find($request->edarate_shahri_id)->name_fa, 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'position' => $request->position, @@ -139,7 +155,7 @@ class UserManagementController extends Controller if ($user->avatar) { FileFacade::delete($user->avatar, true); } - $data['avatar'] = FileFacade::save($request->file('avatar'), "avatar/{$user->id}/"); + $data['avatar'] = FileFacade::save($request->file('avatar'), "avatars/{$user->id}/"); } $user->update($data); @@ -148,15 +164,15 @@ class UserManagementController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function destroy(User $user): JsonResponse { DB::transaction(function () use ($user) { if ($user->avatar) { FileFacade::delete($user->avatar, true); } - if ($user->photo) { - FileFacade::delete($user->photo, true); - } $user->roles()->detach(); $user->permissions()->detach(); diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php index 2663aeb0..f7b6b85b 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class StoreExrtraRequest extends FormRequest { @@ -23,17 +24,29 @@ class StoreExrtraRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id', - 'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', + 'edarate_ostani_id' => [ + 'nullable', + 'integer', + Rule::exists('edarate_ostani', 'id'), + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + Rule::requiredIf(fn () => blank($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'nullable', + 'integer', + Rule::exists('edarate_shahri', 'id'), + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + Rule::requiredIf(fn () => blank($this->input('edarate_ostani_id'))), + ], 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', - 'national_code' => 'unique:users,national_code', - 'password' => 'required|string|confirmed|min:8', + 'national_code' => 'unique:users,national_code|digits:10', + 'password' => 'required|confirmed|min:8', 'first_name' => 'required|string', 'last_name' => 'required|string', 'position' => 'string', - 'mobile' => 'required|string', + 'mobile' => 'required|regex:/^09\d{9}$/|numeric|digits:11', 'degree' => 'string', 'major' => 'string', 'avatar' => 'required|file|mimes:pdf,jpg,jpeg,png', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php index e6b6c29d..4c3583d0 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class StoreRequest extends FormRequest { @@ -23,13 +24,25 @@ class StoreRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id', - 'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', + 'edarate_ostani_id' => [ + 'nullable', + 'integer', + Rule::exists('edarate_ostani', 'id'), + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + Rule::requiredIf(fn () => blank($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'nullable', + 'integer', + Rule::exists('edarate_shahri', 'id'), + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + Rule::requiredIf(fn () => blank($this->input('edarate_ostani_id'))), + ], 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', - 'national_code' => 'unique:users,national_code', - 'password' => 'required|string|confirmed|min:8', + 'national_code' => 'unique:users,national_code|digits:10', + 'password' => 'required|confirmed|min:8', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index d41eea2e..8dbbc53b 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -25,8 +25,21 @@ class UpdateRequest extends FormRequest { return [ 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'nullable|exists:edarate_ostanis,id|required_without:edarate_shahri_id', - 'edarate_shahri_id' => 'nullable|exists:edarate_shahris,id|required_without:edarate_ostani_id', 'city_id' => 'exists:cities,id', + 'edarate_ostani_id' => [ + 'nullable', + 'integer', + Rule::exists('edarate_ostani', 'id'), + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + Rule::requiredIf(fn () => blank($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'nullable', + 'integer', + Rule::exists('edarate_shahri', 'id'), + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + Rule::requiredIf(fn () => blank($this->input('edarate_ostani_id'))), + ], + 'city_id' => 'exists:cities,id', 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], 'first_name' => 'required|string', diff --git a/app/Services/Cartables/UserManagement/UserManagementService.php b/app/Services/Cartables/UserManagement/UserManagementService.php index 36f02645..dbd0f56f 100644 --- a/app/Services/Cartables/UserManagement/UserManagementService.php +++ b/app/Services/Cartables/UserManagement/UserManagementService.php @@ -21,7 +21,7 @@ class UserManagementService $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['id', 'username', 'status', 'province_id', 'province_fa', 'city_id', 'city_fa', 'first_name', 'last_name', 'mobile', 'position', 'major', 'setad_id', 'last_login', 'roles', 'edarate_shahri_id', 'edarate_shahri_name', 'national_code', 'name', 'enabled', 'email', + allowedSelects: ['id', 'username', 'province_id', 'province_fa', 'city_id', 'city_fa', 'first_name', 'last_name', 'mobile', 'position', 'major', 'setad_id', 'last_login', 'edarate_shahri_id', 'edarate_shahri_name', 'national_code', 'name', 'enabled', 'email', 'edarate_ostani_id', 'edarate_ostani_name', 'degree', 'confirmed', 'checked', 'updated_at', 'photo', 'created_at'], ); } diff --git a/resources/lang/fa/validation.php b/resources/lang/fa/validation.php index 1907f5e7..d58a36b0 100644 --- a/resources/lang/fa/validation.php +++ b/resources/lang/fa/validation.php @@ -12,7 +12,7 @@ return [ | as the size rules. Feel free to tweak each of these messages here. | */ - + 'prohibited' => ':attribute در این حالت مجاز نیست.', "accepted" => ":attribute باید پذیرفته شده باشد.", "active_url" => "آدرس :attribute معتبر نیست", "after" => ":attribute باید بعد از :date باشد.", @@ -286,5 +286,7 @@ return [ 'forbidden_area' => 'محدوده ممنوعه', 'forbidden_area.type' => 'نوع محدوده محدوده', 'forbidden_area.coordinates' => 'مختصات محدوده ممنوعه', + 'edarate_ostani_id' => 'اداره استانی', + 'edarate_shahri_id' => ' اداره شهری' ], ]; diff --git a/routes/v3.php b/routes/v3.php index d93ff295..fede5047 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -586,19 +586,19 @@ Route::prefix('user_management') ->name('user_management.') ->controller(UserManagementController::class) ->group(function () { -// Route::get('/', 'index')->name('index'); Route::get('/', 'index')->name('index')->middleware( 'permission:full-user-management|limited-user-management'); - Route::post('/', 'store')->name('store'); - Route::post('/store_extra', 'storeExtra')->name('storeExtra'); + Route::post('/limit_store', 'limitStore')->name('limitStore'); + Route::post('/full_store', 'fullStore')->name('fullStore'); Route::get('/{user}', 'show')->name('show'); + Route::get('/user_permissions/{user}', 'userPermissions')->name('userPermissions'); Route::post('/{user}', 'update')->name('update'); Route::delete('/{user}', 'destroy')->name('destroy'); Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); - Route::post('/give_permissions_to', 'givePermissionsTo')->name('givePermissionsTo'); - Route::post('/give_role_to_user','giveRoleToUser')->name('giveRoleToUser'); - Route::post('/change_confirmed_status', 'changeConfirmedStatus')->name('changeConfirmedStatus'); - Route::post('/change_user_enabeld','changeUserEnabeld')->name('changeUserEnabeld')->middleware( + Route::post('/give_permissions_to/{user}', 'givePermissionsTo')->name('givePermissionsTo'); + Route::post('/give_role_to_user/{user}','giveRoleToUser')->name('giveRoleToUser'); + Route::post('/change_confirmed_status/{user}', 'changeConfirmedStatus')->name('changeConfirmedStatus'); + Route::post('/change_user_enabeld/{user}','changeUserEnabeld')->name('changeUserEnabeld')->middleware( 'permission:full-user-management|limited-user-management'); Route::get('/activity_report', 'activityReport')->name('activityReport'); Route::get('/userActivityLogs', 'userActivityLogs')->name('userActivityLogs'); From b736a8a8547259106e3d4fc56305205ce56ae053 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 5 Nov 2025 10:47:37 +0330 Subject: [PATCH 26/54] change two item in fromrequest --- .../V3/Dashboard/UserManagementController.php | 7 ++++--- ...ExrtraRequest.php => FullStoreRequest.php} | 18 +++--------------- ...StoreRequest.php => LimitStoreRequest.php} | 19 +++---------------- .../UserManagement/UpdateRequest.php | 16 ++-------------- 4 files changed, 12 insertions(+), 48 deletions(-) rename app/Http/Requests/V3/Dashboard/UserManagement/{StoreExrtraRequest.php => FullStoreRequest.php} (62%) rename app/Http/Requests/V3/Dashboard/UserManagement/{StoreRequest.php => LimitStoreRequest.php} (52%) diff --git a/app/Http/Controllers/V3/Dashboard/UserManagementController.php b/app/Http/Controllers/V3/Dashboard/UserManagementController.php index a3514002..cb5abc76 100644 --- a/app/Http/Controllers/V3/Dashboard/UserManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/UserManagementController.php @@ -7,9 +7,10 @@ use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmEnabelRequest; use App\Http\Requests\V3\Dashboard\UserManagement\ChangeConfirmStatusRequest; use App\Http\Requests\V3\Dashboard\UserManagement\ChangePasswordRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\FullStoreRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GivePermissionRequest; use App\Http\Requests\V3\Dashboard\UserManagement\GiveRoleRequest; -use App\Http\Requests\V3\Dashboard\UserManagement\StoreRequest; +use App\Http\Requests\V3\Dashboard\UserManagement\LimitStoreRequest; use App\Http\Requests\V3\Dashboard\UserManagement\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\City; @@ -39,7 +40,7 @@ class UserManagementController extends Controller return response()->json($data); } - public function limitStore(StoreRequest $request): jsonResponse + public function limitStore(LimitStoreRequest $request): jsonResponse { auth()->user()->addActivityComplete(1039); @@ -67,7 +68,7 @@ class UserManagementController extends Controller /** * @throws Throwable */ - public function fullStore(StoreRequest $request): jsonResponse + public function fullStore(FullStoreRequest $request): jsonResponse { DB::transaction(function () use ($request) { auth()->user()->addActivityComplete(1039); diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php similarity index 62% rename from app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php rename to app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php index f7b6b85b..03b6a2e1 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreExrtraRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php @@ -6,7 +6,7 @@ use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; -class StoreExrtraRequest extends FormRequest +class FullStoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -24,20 +24,8 @@ class StoreExrtraRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => [ - 'nullable', - 'integer', - Rule::exists('edarate_ostani', 'id'), - Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), - Rule::requiredIf(fn () => blank($this->input('edarate_shahri_id'))), - ], - 'edarate_shahri_id' => [ - 'nullable', - 'integer', - Rule::exists('edarate_shahri', 'id'), - Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), - Rule::requiredIf(fn () => blank($this->input('edarate_ostani_id'))), - ], + 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id,!=,null', + 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id,!=,null', 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php similarity index 52% rename from app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php rename to app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php index 4c3583d0..2a1fde8f 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/StoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php @@ -4,9 +4,8 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Validation\Rule; -class StoreRequest extends FormRequest +class LimitStoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -24,20 +23,8 @@ class StoreRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => [ - 'nullable', - 'integer', - Rule::exists('edarate_ostani', 'id'), - Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), - Rule::requiredIf(fn () => blank($this->input('edarate_shahri_id'))), - ], - 'edarate_shahri_id' => [ - 'nullable', - 'integer', - Rule::exists('edarate_shahri', 'id'), - Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), - Rule::requiredIf(fn () => blank($this->input('edarate_ostani_id'))), - ], + 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id', + 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id', 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index 8dbbc53b..a19cf756 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -25,20 +25,8 @@ class UpdateRequest extends FormRequest { return [ 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => [ - 'nullable', - 'integer', - Rule::exists('edarate_ostani', 'id'), - Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), - Rule::requiredIf(fn () => blank($this->input('edarate_shahri_id'))), - ], - 'edarate_shahri_id' => [ - 'nullable', - 'integer', - Rule::exists('edarate_shahri', 'id'), - Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), - Rule::requiredIf(fn () => blank($this->input('edarate_ostani_id'))), - ], + 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id,!=,null', + 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id,!=,null', 'city_id' => 'exists:cities,id', 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], From cbeb116845259b8a2bc49115d691b0a0a750eea8 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 5 Nov 2025 10:59:42 +0330 Subject: [PATCH 27/54] change item in fromrequest --- .../Requests/V3/Dashboard/UserManagement/FullStoreRequest.php | 4 ++-- .../Requests/V3/Dashboard/UserManagement/UpdateRequest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php index 03b6a2e1..dd605e04 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php @@ -24,8 +24,8 @@ class FullStoreRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id,!=,null', - 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id,!=,null', + 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id', + 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id', 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index a19cf756..188a55e7 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -25,8 +25,8 @@ class UpdateRequest extends FormRequest { return [ 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id,!=,null', - 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id,!=,null', + 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id', + 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id', 'city_id' => 'exists:cities,id', 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], From 61ef44a5923e2e12c1b47f962ff31a092c1b9738 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 5 Nov 2025 11:27:24 +0330 Subject: [PATCH 28/54] change item in fromrequest --- .../V3/Dashboard/UserManagement/FullStoreRequest.php | 10 ++++++++-- .../V3/Dashboard/UserManagement/LimitStoreRequest.php | 11 +++++++++-- .../V3/Dashboard/UserManagement/UpdateRequest.php | 10 ++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php index dd605e04..9878c4ce 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php @@ -24,8 +24,14 @@ class FullStoreRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id', - 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id', + 'edarate_ostani_id' => [ + 'nullable','integer', 'exists:edarate_ostani,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'nullable','integer', 'exists:edarate_shahri,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + ], 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php index 2a1fde8f..7a25fc13 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\V3\Dashboard\UserManagement; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class LimitStoreRequest extends FormRequest { @@ -23,8 +24,14 @@ class LimitStoreRequest extends FormRequest public function rules(): array { return [ - 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id', - 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id', + 'edarate_ostani_id' => [ + 'nullable','integer', 'exists:edarate_ostani,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'nullable','integer', 'exists:edarate_shahri,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + ], 'province_id' => 'required|exists:provinces,id', 'city_id' => 'exists:cities,id', 'username' => 'required|unique:users,username', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index 188a55e7..e3d1fa51 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -25,8 +25,14 @@ class UpdateRequest extends FormRequest { return [ 'province_id' => 'required|exists:provinces,id', - 'edarate_ostani_id' => 'exists:edarate_ostani,id|integer|prohibited_if:edarate_shahri_id', - 'edarate_shahri_id' => 'exists:edarate_shahri,id|integer|prohibited_if:edarate_ostani_id', + 'edarate_ostani_id' => [ + 'nullable','integer', 'exists:edarate_ostani,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), + ], + 'edarate_shahri_id' => [ + 'nullable','integer', 'exists:edarate_shahri,id', + Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), + ], 'city_id' => 'exists:cities,id', 'username' => [Rule::unique('users', 'username')->ignore($this->user->id)], 'national_code' => ['required', Rule::unique('users', 'national_code')->ignore($this->user->id)], From 0bf5d03ede318ad43b2d9773226a891e1fc4d0bd Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 5 Nov 2025 11:30:45 +0330 Subject: [PATCH 29/54] change item in fromrequest --- .../Requests/V3/Dashboard/UserManagement/FullStoreRequest.php | 4 ++-- .../V3/Dashboard/UserManagement/LimitStoreRequest.php | 4 ++-- .../Requests/V3/Dashboard/UserManagement/UpdateRequest.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php index 9878c4ce..bdd52cb6 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/FullStoreRequest.php @@ -25,11 +25,11 @@ class FullStoreRequest extends FormRequest { return [ 'edarate_ostani_id' => [ - 'nullable','integer', 'exists:edarate_ostani,id', + 'integer', 'exists:edarate_ostani,id', Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), ], 'edarate_shahri_id' => [ - 'nullable','integer', 'exists:edarate_shahri,id', + 'integer', 'exists:edarate_shahri,id', Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), ], 'province_id' => 'required|exists:provinces,id', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php index 7a25fc13..da4a6e66 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/LimitStoreRequest.php @@ -25,11 +25,11 @@ class LimitStoreRequest extends FormRequest { return [ 'edarate_ostani_id' => [ - 'nullable','integer', 'exists:edarate_ostani,id', + 'integer', 'exists:edarate_ostani,id', Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), ], 'edarate_shahri_id' => [ - 'nullable','integer', 'exists:edarate_shahri,id', + 'integer', 'exists:edarate_shahri,id', Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), ], 'province_id' => 'required|exists:provinces,id', diff --git a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php index e3d1fa51..e8225c3e 100644 --- a/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php +++ b/app/Http/Requests/V3/Dashboard/UserManagement/UpdateRequest.php @@ -26,11 +26,11 @@ class UpdateRequest extends FormRequest return [ 'province_id' => 'required|exists:provinces,id', 'edarate_ostani_id' => [ - 'nullable','integer', 'exists:edarate_ostani,id', + 'integer', 'exists:edarate_ostani,id', Rule::prohibitedIf(fn () => filled($this->input('edarate_shahri_id'))), ], 'edarate_shahri_id' => [ - 'nullable','integer', 'exists:edarate_shahri,id', + 'integer', 'exists:edarate_shahri,id', Rule::prohibitedIf(fn () => filled($this->input('edarate_ostani_id'))), ], 'city_id' => 'exists:cities,id', From a619efb123e6e83eb52b5971656cedaa7cd05fd3 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 8 Nov 2025 16:34:32 +0330 Subject: [PATCH 30/54] appand new position for 3 position in harim and need dependency --- app/Enums/HarimStates.php | 28 +++--- .../{HarimTerafic.php => HarimTraffic.php} | 2 +- .../Harim/GeneralManagerController.php | 88 ++++++++++++++++++- .../Dashboard/Harim/HarimOfficeController.php | 57 +++++++++++- .../Harim/TechnicalDeputyController.php | 21 ++++- .../Harim/Deputy/ConfirmPaymentRequest.php | 31 +++++++ .../Harim/Deputy/ConfirmRoadAccessRequest.php | 2 +- .../Harim/Deputy/ReferPaymentRequest.php | 31 +++++++ .../Harim/Deputy/ReferRoadAccessRequest.php | 2 +- .../GeneralManager/ConfirmPaymentRequest.php | 31 +++++++ .../ConfirmRoadAccessEditNeedRequest.php | 2 +- .../Harim/GeneralManager/ReferFileRequest.php | 2 +- .../GeneralManager/ReferPaymentRequest.php | 31 +++++++ .../HarimOffice/ComputingPaymentRequest.php | 36 ++++++++ .../Harim/HarimOffice/FileAcceptedRequest.php | 2 +- .../Harim/HarimOffice/FileRejectedRequest.php | 2 +- ...fic_position_road_type_to_harims_table.php | 32 +++++++ 17 files changed, 373 insertions(+), 27 deletions(-) rename app/Enums/{HarimTerafic.php => HarimTraffic.php} (92%) create mode 100644 app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php create mode 100644 app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php create mode 100644 database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php index 8f73c4c0..46605887 100644 --- a/app/Enums/HarimStates.php +++ b/app/Enums/HarimStates.php @@ -8,18 +8,19 @@ enum HarimStates: int case BARESI_TAVASOT_DAFTAR_HARIM = 2; case BARESI_TAVASOT_MOAVEN = 3; case BARESI_TAVASOT_MODIR_KOL = 4; - case BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5; - case BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN = 6; - case BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7; - case ERSAL_ZEMANAT_NAME_TAVASOTE_KARBAR =8; + case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5; + case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN = 6; + case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7; + case ARSE_VA_AYAN_NAHAI =8; case ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI = 9; case EMKAN_PAZIR_NEMEBASHAD = 10; case ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI = 11; - case UPDATE_FILE_BARGOZARE_SHODE = 12; - case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM = 13; - case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_TAVASOTE_MOAVEN = 14; - case TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL = 15; + case UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE = 12; + case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM = 13; + case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN = 14; + case BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL = 15; case MOKHALEFAT_BA_DASTGAH = 16; + case ETMAM_FARAYAND = 17; public static function name(int $state): string { @@ -28,18 +29,19 @@ enum HarimStates: int 2 => "بررسی توسط ادارات حریم", 3 => "بررسی توسط معاون ", 4 => "بررسی توسط مدیر کل", - 5 => "بررسی فایل آپلود شده توسط اداره حریم", - 6 => "بررسی فایل آپلود شده توسط معاون", - 7 => "بررسی فایل آپلود شده توسط مدیر", + 5 => "بررسی راه دسترسی آپلود شده توسط اداره حریم", + 6 => "بررسی راه دسترسی آپلود شده توسط معاون", + 7 => "بررسی راه دسترسی آپلود شده توسط مدیر", 8 => "ارسال ضمانت نامه توسط کاربر", 9 => "ارسال به پنجره واحد (نیاز به راه دسترسی)", 10 => "امکان پذیر نمی باشد", 11 => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)", - 12 => "بازبینی فایل بارگذاری شده", + 12 => "بازبینی راه دسترسی بارگذاری شده", 13 => "تائید عرصه و اعیان ارسال شده توسط اداره حریم", 14 => "تائید عرصه و اعیان ارسال شده توسط معاون", 15 => "تائید عرصه و اعیان ارسال شده توسط مدیر", - 16 => "مخالفت با درخواست" + 16 => "مخالفت با درخواست", + 17 => "اتمام فرایند" ]; return $mapArray[$state]; diff --git a/app/Enums/HarimTerafic.php b/app/Enums/HarimTraffic.php similarity index 92% rename from app/Enums/HarimTerafic.php rename to app/Enums/HarimTraffic.php index f841223d..8f36c605 100644 --- a/app/Enums/HarimTerafic.php +++ b/app/Enums/HarimTraffic.php @@ -2,7 +2,7 @@ namespace App\Enums; -enum HarimTerafic : string +enum HarimTraffic : string { case SABOK = 'سبک'; case MOTEVASET = 'متوسط'; diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index de8b903c..9266b34f 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -13,9 +13,11 @@ use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmGuaranteeLetterNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmNoRoadAccessNeedRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessEditNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ConfirmRoadAccessNeedRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferFileRequest; +use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\RejectRequest; use App\Http\Requests\V3\Dashboard\Harim\GeneralManager\ShowRequest; @@ -24,6 +26,8 @@ use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; + class GeneralManagerController extends Controller { @@ -44,6 +48,9 @@ class GeneralManagerController extends Controller return response()->json($data); } + /** + * @throws Throwable + */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -71,6 +78,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -96,6 +106,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -110,7 +123,7 @@ class GeneralManagerController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; $harim->update([ 'state_id' => $state, @@ -121,6 +134,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -148,6 +164,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -176,6 +195,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -190,7 +212,7 @@ class GeneralManagerController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::UPDATE_FILE_BARGOZARE_SHODE->value; + $state = HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value; $harim->update([ 'state_id' => $state, @@ -203,6 +225,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws \Throwable + */ public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -217,7 +242,7 @@ class GeneralManagerController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::ERSAL_ZEMANAT_NAME_TAVASOTE_KARBAR->value; + $state = HarimStates::ARSE_VA_AYAN_NAHAI->value; $harim->update([ 'state_id' => $state, @@ -234,4 +259,61 @@ class GeneralManagerController extends Controller { return $this->successResponse($harim->load('histories')); } + + /** + * @throws Throwable + */ + public function referPaymentRequest(ReferPaymentRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request, $harim) { + $action = HarimAction::REFER->value; + + $harim->histories()->create([ + 'expert_id' => auth()->user()->id, + 'previous-state_id' => $harim->state_id, + 'previous_state_name' => $harim->state_name, + 'export_description' => $request->export_description, + 'action_id' => $action, + 'action_name' => HarimAction::name($action), + ]); + + $state = HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; + + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + + return $this->successResponse(); + } + + /** + * @throws Throwable + */ + public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request, $harim) { + $action = HarimAction::CONFIRM->value; + + $harim->histories()->create([ + 'expert_id' => auth()->user()->id, + 'previous_state_id' => $harim->state_id, + 'previous_state_name' => $harim->state_name, + 'expert_description' => $request->expert_description, + 'action_id' => $action, + 'action_name' => HarimAction::name($action), + ]); + + $state = HarimStates::ETMAM_FARAYAND->value; + + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + + return $this->successResponse(); + } + } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 9eaa7460..8d112444 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -6,6 +6,7 @@ use App\Enums\HarimAction; use App\Enums\HarimStates; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\ComputingPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileAcceptedRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\FileRejectedRequest; use App\Http\Requests\V3\Dashboard\Harim\HarimOffice\NeedRoadAccessRequest; @@ -19,6 +20,8 @@ use App\Models\Province; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; + class HarimOfficeController extends Controller { @@ -39,6 +42,9 @@ class HarimOfficeController extends Controller return response()->json($data); } + /** + * @throws Throwable + */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -64,6 +70,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -89,6 +98,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -116,6 +128,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -143,6 +158,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -156,7 +174,7 @@ class HarimOfficeController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; $harim->update([ 'state_id' => $state, @@ -168,6 +186,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -181,7 +202,7 @@ class HarimOfficeController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; $harim->update([ 'state_id' => $state, @@ -208,4 +229,36 @@ class HarimOfficeController extends Controller 'province_name' => $province->name_fa, ]); } + + /** + * @throws Throwable + */ + public function computingPayment(ComputingPaymentRequest $request, Harim $harim): JsonResponse + { + DB::transaction(function () use ($request, $harim) { + $action = HarimAction::CONFIRM->value; + $harim->histories()->create([ + 'expert_id' => auth()->user()->id, + 'previous_state_id' => $harim->state_id, + 'previous_state_name' => $harim->state_name, + 'expert_description' => $request->expert_description, + 'action_id' => $action, + 'action_name' => HarimAction::name($action), + ]); + + $state = HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; + + $harim->update([ + 'traffic' => $request->traffic, + 'position' => $request->position, + 'final_plan_space' => $request->final_plan_space, + 'road_type' => $request->road_type, + 'payment_amount' => $request->payment_amount, + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + ]); + }); + + return $this->successResponse(); + } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index 3a1fcdbc..79158594 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -6,8 +6,10 @@ use App\Enums\HarimAction; use App\Enums\HarimStates; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ConfirmRoadAccessRequest; +use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferPaymentRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ReferRoadAccessRequest; use App\Http\Requests\V3\Dashboard\Harim\Deputy\ShowRequest; @@ -16,6 +18,8 @@ use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; + class TechnicalDeputyController extends Controller { @@ -36,6 +40,9 @@ class TechnicalDeputyController extends Controller return response()->json($data); } + /** + * @throws \Throwable + */ public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -61,6 +68,9 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -86,6 +96,9 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + /** + * @throws \Throwable + */ public function confirmRoadAccess(ConfirmRoadAccessRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -99,7 +112,7 @@ class TechnicalDeputyController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; + $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; $harim->update([ 'state_id' => $state, @@ -110,6 +123,10 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + + /** + * @throws \Throwable + */ public function referRoadAccess(ReferRoadAccessRequest $request, Harim $harim): JsonResponse { DB::transaction(function () use ($request, $harim) { @@ -123,7 +140,7 @@ class TechnicalDeputyController extends Controller 'action_name' => HarimAction::name($action), ]); - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; $harim->update([ 'state_id' => $state, diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php new file mode 100644 index 00000000..2acd1e16 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php index 667b6e72..24f31d15 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ConfirmRoadAccessRequest.php @@ -14,7 +14,7 @@ class ConfirmRoadAccessRequest extends FormRequest public function authorize(): bool { return $this->harim->province_id == auth()->user()->province_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php new file mode 100644 index 00000000..9755727d --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php index 6226908a..37cc6560 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/Deputy/ReferRoadAccessRequest.php @@ -14,7 +14,7 @@ class ReferRoadAccessRequest extends FormRequest public function authorize(): bool { return $this->harim->province_id == auth()->user()->province_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MOAVEN->value; + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php new file mode 100644 index 00000000..9bab48f7 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php index 70da1e2d..eaa004d3 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ConfirmRoadAccessEditNeedRequest.php @@ -14,7 +14,7 @@ class ConfirmRoadAccessEditNeedRequest extends FormRequest public function authorize(): bool { return $this->harim->province_id == auth()->user()->province_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php index 4ab18be5..351b3f99 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferFileRequest.php @@ -14,7 +14,7 @@ class ReferFileRequest extends FormRequest public function authorize(): bool { return $this->harim->province_id == auth()->user()->province_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php new file mode 100644 index 00000000..c7175dd3 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/GeneralManager/ReferPaymentRequest.php @@ -0,0 +1,31 @@ +harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php new file mode 100644 index 00000000..c2e9a406 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -0,0 +1,36 @@ +harim->province_id === auth()->user()->province_id && + $this->harim->state_id === HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'traffic' => 'required|numeric|decimal:1', + 'road_type' => 'required|numeric|decimal:1', + 'position' => 'required|numeric|decimal:1', + 'final_area_space' => 'required|numeric|decimal:2', + 'payment_amount' => 'required|numeric|decimal:2', + 'expert_description' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php index 38d5397b..0a4c5145 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileAcceptedRequest.php @@ -14,7 +14,7 @@ class FileAcceptedRequest extends FormRequest public function authorize(): bool { return $this->harim->province_id == auth()->user()->province_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; } /** diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php index 5c3f386d..8e2f1901 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/FileRejectedRequest.php @@ -14,7 +14,7 @@ class FileRejectedRequest extends FormRequest public function authorize(): bool { return $this->harim->province_id == auth()->user()->province_id && - $this->harim->state_id == HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + $this->harim->state_id == HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; } /** diff --git a/database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php b/database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php new file mode 100644 index 00000000..52d42ac3 --- /dev/null +++ b/database/migrations/2025_11_08_093438_add_trafic_position_road_type_to_harims_table.php @@ -0,0 +1,32 @@ +decimal('traffic',total: 3,places: 1)->nullable(); + $table->decimal('road_type', total: 3,places: 1)->nullable(); + $table->decimal('position', total: 3,places: 1)->nullable(); + $table->decimal('final_area_space')->nullable(); + $table->decimal('forbidden_area_space')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('harims', function (Blueprint $table) { + $table->dropColumn('traffic', 'road_type', 'position'); + }); + } +}; From 40513d72b8ee03a2da6ae87babff880fcda9312a Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 9 Nov 2025 15:25:00 +0330 Subject: [PATCH 31/54] change strcture controller becuse repet some code in 3 file and get same code in model --- app/Enums/HarimStates.php | 42 ++- .../Harim/GeneralManagerController.php | 292 +++++------------- .../Dashboard/Harim/HarimOfficeController.php | 205 ++++-------- .../Harim/ProvinceOfficeController.php | 28 +- .../Harim/TechnicalDeputyController.php | 147 ++++----- app/Models/Harim.php | 22 ++ routes/v3.php | 6 + 7 files changed, 250 insertions(+), 492 deletions(-) diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php index 46605887..8b533560 100644 --- a/app/Enums/HarimStates.php +++ b/app/Enums/HarimStates.php @@ -22,28 +22,26 @@ enum HarimStates: int case MOKHALEFAT_BA_DASTGAH = 16; case ETMAM_FARAYAND = 17; - public static function name(int $state): string + public function label(): string { - $mapArray = [ - 1 => "بررسی ادارات شهرستان", - 2 => "بررسی توسط ادارات حریم", - 3 => "بررسی توسط معاون ", - 4 => "بررسی توسط مدیر کل", - 5 => "بررسی راه دسترسی آپلود شده توسط اداره حریم", - 6 => "بررسی راه دسترسی آپلود شده توسط معاون", - 7 => "بررسی راه دسترسی آپلود شده توسط مدیر", - 8 => "ارسال ضمانت نامه توسط کاربر", - 9 => "ارسال به پنجره واحد (نیاز به راه دسترسی)", - 10 => "امکان پذیر نمی باشد", - 11 => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)", - 12 => "بازبینی راه دسترسی بارگذاری شده", - 13 => "تائید عرصه و اعیان ارسال شده توسط اداره حریم", - 14 => "تائید عرصه و اعیان ارسال شده توسط معاون", - 15 => "تائید عرصه و اعیان ارسال شده توسط مدیر", - 16 => "مخالفت با درخواست", - 17 => "اتمام فرایند" - ]; - - return $mapArray[$state]; + return match ($this) { + self::BARESI_EDARE_SHAHRESTAN => "بررسی ادارات شهرستان", + self::BARESI_TAVASOT_DAFTAR_HARIM => "بررسی توسط ادارات حریم", + self::BARESI_TAVASOT_MOAVEN => "بررسی توسط معاون ", + self::BARESI_TAVASOT_MODIR_KOL => "بررسی توسط مدیر کل", + self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM => "بررسی راه دسترسی آپلود شده توسط اداره حریم", + self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN => "بررسی راه دسترسی آپلود شده توسط معاون", + self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL => "بررسی راه دسترسی آپلود شده توسط مدیر", + self::ARSE_VA_AYAN_NAHAI => "ارسال ضمانت نامه توسط کاربر", + self::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (نیاز به راه دسترسی)", + self::EMKAN_PAZIR_NEMEBASHAD => "امکان پذیر نمی باشد", + self::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)", + self::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE => "بازبینی راه دسترسی بارگذاری شده", + self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM => "تائید عرصه و اعیان ارسال شده توسط اداره حریم", + self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN => "تائید عرصه و اعیان ارسال شده توسط معاون", + self::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL => "تائید عرصه و اعیان ارسال شده توسط مدیر", + self::MOKHALEFAT_BA_DASTGAH => "مخالفت با درخواست", + self::ETMAM_FARAYAND => "اتمام فرایند", + }; } } \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index 9266b34f..9b6db5e1 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -25,8 +25,6 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; -use Throwable; class GeneralManagerController extends Controller @@ -48,209 +46,104 @@ class GeneralManagerController extends Controller return response()->json($data); } - /** - * @throws Throwable - */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::EMKAN_PAZIR_NEMEBASHAD->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - RejectRequestEvent::dispatch($harim); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->value, + 'state_name' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->label(), + ] + ); + RejectRequestEvent::dispatch($harim); return $this->successResponse(); } - /** - * @throws Throwable - */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous-state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'export_description' => $request->export_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous-state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'export_description' => $request->export_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmRoadAccessNeedEvent::dispatch($harim); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value, + 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->label(), + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmNoRoadAccessNeedEvent::dispatch($harim); - - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value, + 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->label(), + ] + ); + ConfirmNoRoadAccessNeedEvent::dispatch($harim); return $this->successResponse(); } - /** - * @throws Throwable - */ public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmRoadAccessEditNeedEvent::dispatch($harim); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value, + 'state_name' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->label(), + ] + ); + ConfirmRoadAccessEditNeedEvent::dispatch($harim); return $this->successResponse(); } - /** - * @throws \Throwable - */ public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ARSE_VA_AYAN_NAHAI->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - - ConfirmGuaranteeLetterNeedEvent::dispatch($harim); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ARSE_VA_AYAN_NAHAI->value, + 'state_name' => HarimStates::ARSE_VA_AYAN_NAHAI->label(), + ] + ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } @@ -260,60 +153,33 @@ class GeneralManagerController extends Controller return $this->successResponse($harim->load('histories')); } - /** - * @throws Throwable - */ - public function referPaymentRequest(ReferPaymentRequest $request, Harim $harim): JsonResponse + public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous-state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'export_description' => $request->export_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), + ] + ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } - /** - * @throws Throwable - */ public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::ETMAM_FARAYAND->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::ETMAM_FARAYAND->value, + 'state_name' => HarimStates::ETMAM_FARAYAND->label(), + ] + ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } - } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 8d112444..68bca460 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -42,178 +42,100 @@ class HarimOfficeController extends Controller return response()->json($data); } - /** - * @throws Throwable - */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::NO->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action:HarimAction::NO->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => false, - ]); - }); + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, + 'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(), + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::YES->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action:HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => true, 'need_access_road' => true, 'need_payment' => $request->need_payment, - ]); - }); + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::YES->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action:HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => true, 'need_access_road' => false, 'need_payment' => $request->need_payment, - ]); - }); + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::YES->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action:HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), 'access_road_allowed' => true, - ]); - }); + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::NO->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action:HarimAction::YES->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), 'access_road_allowed' => false, - ]); - }); + ] + ); return $this->successResponse(); } + public function show(ShowRequest $request, Harim $harim): JsonResponse { return $this->successResponse($harim->load('histories')); @@ -230,34 +152,21 @@ class HarimOfficeController extends Controller ]); } - /** - * @throws Throwable - */ public function computingPayment(ComputingPaymentRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value; - - $harim->update([ + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), 'traffic' => $request->traffic, 'position' => $request->position, 'final_plan_space' => $request->final_plan_space, 'road_type' => $request->road_type, 'payment_amount' => $request->payment_amount, - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + ] + ); return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index d81169f2..056257df 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -34,29 +34,17 @@ class ProvinceOfficeController extends Controller return response()->json($data); } - public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::FEEDBACK->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + $harim->updateStateWithHistory( + action:HarimAction::FEEDBACK->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(), 'forbidden_area' => $request->input('forbidden_area'), - ]); - }); + ] + ); return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index 79158594..b00fac04 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -17,8 +17,6 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; -use Throwable; class TechnicalDeputyController extends Controller @@ -40,113 +38,58 @@ class TechnicalDeputyController extends Controller return response()->json($data); } - /** - * @throws \Throwable - */ public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_MODIR_KOL->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_MODIR_KOL->value, + 'state_name' => HarimStates::BARESI_TAVASOT_MODIR_KOL->label(), + ] + ); return $this->successResponse(); } - /** - * @throws Throwable - */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(), + ] + ); return $this->successResponse(); } - /** - * @throws \Throwable - */ public function confirmRoadAccess(ConfirmRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::CONFIRM->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->label(), + ] + ); return $this->successResponse(); } - - /** - * @throws \Throwable - */ public function referRoadAccess(ReferRoadAccessRequest $request, Harim $harim): JsonResponse { - DB::transaction(function () use ($request, $harim) { - $action = HarimAction::REFER->value; - $harim->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $harim->state_id, - 'previous_state_name' => $harim->state_name, - 'expert_description' => $request->expert_description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), - ]); - - $state = HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; - - $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - ]); - }); + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->label(), + ] + ); return $this->successResponse(); } @@ -155,4 +98,30 @@ class TechnicalDeputyController extends Controller { return $this->successResponse($harim->load('histories')); } + + public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action:HarimAction::REFER->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->label(), + ] + ); + return $this->successResponse(); + } + + public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse + { + $harim->updateStateWithHistory( + action:HarimAction::CONFIRM->value, + description: $request->expert_description, + data: [ + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->label(), + ] + ); + return $this->successResponse(); + } } diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 8e68d219..e63421ae 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -2,10 +2,13 @@ namespace App\Models; +use App\Enums\HarimStates; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Support\Facades\DB; +use Throwable; class Harim extends Model { @@ -23,4 +26,23 @@ class Harim extends Model get: fn($value) => json_decode($value) ); } + + /** + * @throws Throwable + */ + public function updateStateWithHistory(int $action, string $description , array $data): void + { + DB::transaction(function () use ($action, $description, $data) { + $this->histories()->create([ + 'expert_id' => auth()->user()->id, + 'previous_state_id' => $this->state_id, + 'previous_state_name'=> $this->state_name, + 'expert_description' => $description, + 'action_id' => $action, + 'action_name' => HarimAction::name($action), + ]); + + $this->update($data); + }); + } } diff --git a/routes/v3.php b/routes/v3.php index fede5047..ae2911a3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -552,6 +552,8 @@ Route::prefix('harim') Route::post('/file_rejected/{harim}', 'fileRejected')->name('fileRejected'); Route::get('/{harim}', 'show')->name('show'); Route::post('/refer_request/{harim}', 'referRequest')->name('referRequest'); + Route::post('/computing_payment/{harim}', 'computingPayment')->name('computingPayment'); + Route::post('/refer_to_city/{harim}', 'referToCity')->name('referToCity'); }); Route::prefix('technical_deputy') @@ -564,6 +566,8 @@ Route::prefix('harim') Route::post('/confirm_road_access/{harim}', 'confirmRoadAccess')->name('confirmRoadAccess'); Route::post('/refer_road_access/{harim}', 'referRoadAccess')->name('referRoadAccess'); Route::get('/{harim}', 'show')->name('show'); + Route::post('/refer_payment/{harim}', 'referPayment')->name('referPayment'); + Route::post('/confirm_payment/{harim}', 'confirmPayment')->name('confirmPayment'); }); Route::prefix('general_manager') @@ -579,6 +583,8 @@ Route::prefix('harim') Route::post('/confirm_road_access_edit_need/{harim}', 'confirmRoadAccessEditNeed')->name('confirmRoadAccessEditNeed'); Route::post('/confirm_guarantee_letter_need/{harim}', 'confirmGuaranteeLetterNeed')->name('confirmGuaranteeLetterNeed'); Route::get('/{harim}', 'show')->name('show'); + Route::post('/refer_payment/{harim}', 'referPayment')->name('referPayment'); + Route::post('/confirm_payment/{harim}', 'confirmPayment')->name('confirmPayment'); }); }); From bb4886a9fa43bba4cb3690e2fd0b52f6836e5d24 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 9 Nov 2025 15:41:29 +0330 Subject: [PATCH 32/54] use pint and fix code --- .../Harim/GeneralManagerController.php | 38 ++++++------ .../Dashboard/Harim/HarimOfficeController.php | 32 +++++----- .../Harim/PanjareVahedController.php | 62 +++++++++---------- .../Harim/ProvinceOfficeController.php | 6 +- .../Harim/TechnicalDeputyController.php | 27 ++++---- .../Harim/PanjareVahed/ReceiveNewRequest.php | 1 - 6 files changed, 77 insertions(+), 89 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index 9b6db5e1..dd084e3e 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -7,7 +7,6 @@ use App\Enums\HarimStates; use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent; -use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; @@ -26,7 +25,6 @@ use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; - class GeneralManagerController extends Controller { use ApiResponse; @@ -49,10 +47,10 @@ class GeneralManagerController extends Controller public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->value, + 'state_id' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->value, 'state_name' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->label(), ] ); @@ -64,10 +62,10 @@ class GeneralManagerController extends Controller public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), ] ); @@ -78,10 +76,10 @@ class GeneralManagerController extends Controller public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), ] ); @@ -92,10 +90,10 @@ class GeneralManagerController extends Controller public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value, + 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->value, 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI->label(), ] ); @@ -106,10 +104,10 @@ class GeneralManagerController extends Controller public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value, + 'state_id' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->value, 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->label(), ] ); @@ -121,10 +119,10 @@ class GeneralManagerController extends Controller public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value, + 'state_id' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->value, 'state_name' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->label(), ] ); @@ -136,10 +134,10 @@ class GeneralManagerController extends Controller public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::ARSE_VA_AYAN_NAHAI->value, + 'state_id' => HarimStates::ARSE_VA_AYAN_NAHAI->value, 'state_name' => HarimStates::ARSE_VA_AYAN_NAHAI->label(), ] ); @@ -156,10 +154,10 @@ class GeneralManagerController extends Controller public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), ] ); @@ -171,10 +169,10 @@ class GeneralManagerController extends Controller public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::ETMAM_FARAYAND->value, + 'state_id' => HarimStates::ETMAM_FARAYAND->value, 'state_name' => HarimStates::ETMAM_FARAYAND->label(), ] ); diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 68bca460..3e6dc817 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -19,9 +19,6 @@ use App\Models\Harim; use App\Models\Province; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; -use Throwable; - class HarimOfficeController extends Controller { @@ -45,10 +42,10 @@ class HarimOfficeController extends Controller public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::NO->value, + action: HarimAction::NO->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => false, ] @@ -60,10 +57,10 @@ class HarimOfficeController extends Controller public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, + 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, 'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(), ] ); @@ -74,10 +71,10 @@ class HarimOfficeController extends Controller public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::YES->value, + action: HarimAction::YES->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => true, 'need_access_road' => true, @@ -91,10 +88,10 @@ class HarimOfficeController extends Controller public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::YES->value, + action: HarimAction::YES->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, + 'state_id' => HarimStates::BARESI_TAVASOT_MOAVEN->value, 'state_name' => HarimStates::BARESI_TAVASOT_MOAVEN->label(), 'is_possible' => true, 'need_access_road' => false, @@ -108,10 +105,10 @@ class HarimOfficeController extends Controller public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::YES->value, + action: HarimAction::YES->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), 'access_road_allowed' => true, ] @@ -123,10 +120,10 @@ class HarimOfficeController extends Controller public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::YES->value, + action: HarimAction::YES->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->value, 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN->label(), 'access_road_allowed' => false, ] @@ -135,7 +132,6 @@ class HarimOfficeController extends Controller return $this->successResponse(); } - public function show(ShowRequest $request, Harim $harim): JsonResponse { return $this->successResponse($harim->load('histories')); @@ -155,10 +151,10 @@ class HarimOfficeController extends Controller public function computingPayment(ComputingPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->value, 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), 'traffic' => $request->traffic, 'position' => $request->position, diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index cc177988..8eea1e24 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -24,14 +24,13 @@ class PanjareVahedController extends Controller $iv = config('harim_web_services.Harim_Info.iv'); $keyString = config('harim_web_services.Harim_Info.key'); - $key = hash('sha256',$keyString, true); + $key = hash('sha256', $keyString, true); - $decrypted = openssl_decrypt($request->data,'aes-256-cbc',$key,false, $iv); + $decrypted = openssl_decrypt($request->data, 'aes-256-cbc', $key, false, $iv); $decodedString = json_decode($decrypted); $decodedArray = json_decode($decodedString, true); - $wkt = 'POLYGON(('.implode(',', array_map(fn ($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])).'))'; $result = DB::selectOne('SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point', [$wkt]); preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches); @@ -52,34 +51,32 @@ class PanjareVahedController extends Controller ->first(['id', 'name_fa', 'province_id']); } - $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; - $harim = Harim::query()->firstOrCreate( [ - 'panjare_vahed_id' => $request->request_id + 'panjare_vahed_id' => $request->request_id, ], [ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), - 'panjare_vahed_id' => $request->request_id, - 'national_id' => $request->national_id, - 'phone_number' => $request->phone_number, - 'request_date' => $request->request_date, - 'province_id' => $city->province_id, - 'province_name' => $city->province()->first()->name_fa, - 'city_id' => $city->id, - 'city_name' => $city->name_fa, - 'edareh_shahri_id' => $city->edarateShahri()->first()->id, - 'requested_organization' => $request->requested_organization, - 'plan_group' => $request->plan_group, - 'plan_title' => $request->plan_title, - 'worksheet_id' => $request->worksheet, - 'response_options' => json_encode($request->response_options), - 'isic' => $request->isic, - 'primary_area' => json_encode($request->primary_area), - 'data' => $decodedString, - 'token' => $decodedArray['token'], - ]); + 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, + 'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(), + 'panjare_vahed_id' => $request->request_id, + 'national_id' => $request->national_id, + 'phone_number' => $request->phone_number, + 'request_date' => $request->request_date, + 'province_id' => $city->province_id, + 'province_name' => $city->province()->first()->name_fa, + 'city_id' => $city->id, + 'city_name' => $city->name_fa, + 'edareh_shahri_id' => $city->edarateShahri()->first()->id, + 'requested_organization' => $request->requested_organization, + 'plan_group' => $request->plan_group, + 'plan_title' => $request->plan_title, + 'worksheet_id' => $request->worksheet, + 'response_options' => json_encode($request->response_options), + 'isic' => $request->isic, + 'primary_area' => json_encode($request->primary_area), + 'data' => $decodedString, + 'token' => $decodedArray['token'], + ]); return response()->json([ 'id' => $harim->id, @@ -92,13 +89,11 @@ class PanjareVahedController extends Controller public function getAccessRoad(GetAccessRoadRequest $request): JsonResponse { - $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; - $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->label(), 'access_road' => json_encode($request->access_road), 'data' => $request->data['data'], 'token' => $request->data['token'], @@ -135,13 +130,12 @@ class PanjareVahedController extends Controller public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse { - $state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value, + 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->label(), 'final_area' => json_encode($request->final_area), 'final_plan' => json_encode($request->final_plan), 'data' => $request->data['data'], diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index 056257df..9e38f1af 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -12,7 +12,6 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; class ProvinceOfficeController extends Controller { @@ -34,13 +33,14 @@ class ProvinceOfficeController extends Controller return response()->json($data); } + public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::FEEDBACK->value, + action: HarimAction::FEEDBACK->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, + 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, 'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(), 'forbidden_area' => $request->input('forbidden_area'), ] diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index b00fac04..4323f36c 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -18,7 +18,6 @@ use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; - class TechnicalDeputyController extends Controller { use ApiResponse; @@ -41,10 +40,10 @@ class TechnicalDeputyController extends Controller public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_MODIR_KOL->value, + 'state_id' => HarimStates::BARESI_TAVASOT_MODIR_KOL->value, 'state_name' => HarimStates::BARESI_TAVASOT_MODIR_KOL->label(), ] ); @@ -55,10 +54,10 @@ class TechnicalDeputyController extends Controller public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, + 'state_id' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->value, 'state_name' => HarimStates::BARESI_TAVASOT_DAFTAR_HARIM->label(), ] ); @@ -69,10 +68,10 @@ class TechnicalDeputyController extends Controller public function confirmRoadAccess(ConfirmRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value, + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->value, 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL->label(), ] ); @@ -83,10 +82,10 @@ class TechnicalDeputyController extends Controller public function referRoadAccess(ReferRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value, + 'state_id' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value, 'state_name' => HarimStates::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->label(), ] ); @@ -102,26 +101,28 @@ class TechnicalDeputyController extends Controller public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::REFER->value, + action: HarimAction::REFER->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value, + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value, 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->label(), ] ); + return $this->successResponse(); } public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( - action:HarimAction::CONFIRM->value, + action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value, + 'state_id' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->value, 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MODIR_KOL->label(), ] ); + return $this->successResponse(); } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index 3653c53b..3ddf8d7e 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -2,7 +2,6 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; -use App\Models\Harim; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; From bbbe0daf94aef0b86ad7415b5ac24f2967a32fb1 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 9 Nov 2025 16:25:32 +0330 Subject: [PATCH 33/54] fix last code for better answer --- app/Enums/HarimStates.php | 4 ++-- .../Dashboard/Harim/GeneralManagerController.php | 13 +++++++++---- .../V3/Dashboard/Harim/PanjareVahedController.php | 13 ++++--------- app/Models/Harim.php | 14 ++++++++------ 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/app/Enums/HarimStates.php b/app/Enums/HarimStates.php index 8b533560..426cb23a 100644 --- a/app/Enums/HarimStates.php +++ b/app/Enums/HarimStates.php @@ -11,7 +11,7 @@ enum HarimStates: int case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM = 5; case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN = 6; case BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL = 7; - case ARSE_VA_AYAN_NAHAI =8; + case DARYAFTE_ARSE_VA_AYAN_NAHAI =8; case ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI = 9; case EMKAN_PAZIR_NEMEBASHAD = 10; case ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI = 11; @@ -32,7 +32,7 @@ enum HarimStates: int self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM => "بررسی راه دسترسی آپلود شده توسط اداره حریم", self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MOAVEN => "بررسی راه دسترسی آپلود شده توسط معاون", self::BARESI_RAHE_DASTRASI_APLODE_SHODE_TAVASOTE_MODIR_KOL => "بررسی راه دسترسی آپلود شده توسط مدیر", - self::ARSE_VA_AYAN_NAHAI => "ارسال ضمانت نامه توسط کاربر", + self::DARYAFTE_ARSE_VA_AYAN_NAHAI => "دریافت عرصه و عیان نهایی", self::ERSAL_BE_PANJAREH_VAHED_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (نیاز به راه دسترسی)", self::EMKAN_PAZIR_NEMEBASHAD => "امکان پذیر نمی باشد", self::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI => "ارسال به پنجره واحد (بدون نیاز به راه دسترسی)", diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index dd084e3e..398d126d 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -7,6 +7,7 @@ use App\Enums\HarimStates; use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent; +use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; use App\Facades\DataTable\DataTableFacade; use App\Http\Controllers\Controller; @@ -54,6 +55,7 @@ class GeneralManagerController extends Controller 'state_name' => HarimStates::EMKAN_PAZIR_NEMEBASHAD->label(), ] ); + RejectRequestEvent::dispatch($harim); return $this->successResponse(); @@ -98,6 +100,8 @@ class GeneralManagerController extends Controller ] ); + ConfirmRoadAccessNeedEvent::dispatch($harim); + return $this->successResponse(); } @@ -111,6 +115,7 @@ class GeneralManagerController extends Controller 'state_name' => HarimStates::ERSAL_BE_PANJAREH_VAHED_BEDONEH_NIAZ_BE_RAH_DASTRASI->label(), ] ); + ConfirmNoRoadAccessNeedEvent::dispatch($harim); return $this->successResponse(); @@ -126,6 +131,7 @@ class GeneralManagerController extends Controller 'state_name' => HarimStates::UPDATE_RAHE_DASTRASI_BARGOZARE_SHODE->label(), ] ); + ConfirmRoadAccessEditNeedEvent::dispatch($harim); return $this->successResponse(); @@ -137,10 +143,11 @@ class GeneralManagerController extends Controller action: HarimAction::CONFIRM->value, description: $request->expert_description, data: [ - 'state_id' => HarimStates::ARSE_VA_AYAN_NAHAI->value, - 'state_name' => HarimStates::ARSE_VA_AYAN_NAHAI->label(), + 'state_id' => HarimStates::DARYAFTE_ARSE_VA_AYAN_NAHAI->value, + 'state_name' => HarimStates::DARYAFTE_ARSE_VA_AYAN_NAHAI->label(), ] ); + ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); @@ -161,7 +168,6 @@ class GeneralManagerController extends Controller 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), ] ); - ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } @@ -176,7 +182,6 @@ class GeneralManagerController extends Controller 'state_name' => HarimStates::ETMAM_FARAYAND->label(), ] ); - ConfirmGuaranteeLetterNeedEvent::dispatch($harim); return $this->successResponse(); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 3e022c54..dcf81299 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -26,12 +26,10 @@ class PanjareVahedController extends Controller $city = City::findCityWithLatLng(lat:$matches[2], lng: $matches[1]); - $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; - $harim = Harim::query()->firstOrCreate(['panjare_vahed_id' => $request->request_id], [ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + 'state_id' => HarimStates::BARESI_EDARE_SHAHRESTAN->value, + 'state_name' => HarimStates::BARESI_EDARE_SHAHRESTAN->label(), 'panjare_vahed_id' => $request->request_id, 'national_id' => $request->national_id, 'phone_number' => $request->phone_number, @@ -91,8 +89,6 @@ class PanjareVahedController extends Controller public function getRejectRequest(GetRejectRequest $request): JsonResponse { - $state = HarimStates::MOKHALEFAT_BA_DASTGAH->value; - $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->panjarehVahedHistories()->create([ @@ -101,8 +97,8 @@ class PanjareVahedController extends Controller ]); $harim->update([ - 'state_id' => $state, - 'state_name' => HarimStates::name($state), + 'state_id' => HarimStates::MOKHALEFAT_BA_DASTGAH->value, + 'state_name' => HarimStates::MOKHALEFAT_BA_DASTGAH->label(), 'data' => $request->data, ]); @@ -115,7 +111,6 @@ class PanjareVahedController extends Controller public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse { - $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->panjarehVahedHistories()->create([ diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 6f622b0e..c9da127a 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -34,16 +34,18 @@ class Harim extends Model { DB::transaction(function () use ($action, $description, $data) { $this->histories()->create([ - 'expert_id' => auth()->user()->id, - 'previous_state_id' => $this->state_id, - 'previous_state_name'=> $this->state_name, + 'expert_id' => auth()->user()->id, + 'previous_state_id' => $this->state_id, + 'previous_state_name' => $this->state_name, 'expert_description' => $description, - 'action_id' => $action, - 'action_name' => HarimAction::name($action), + 'action_id' => $action, + 'action_name' => HarimAction::name($action), ]); $this->update($data); }); + } + public function panjarehVahedHistories(): HasMany { return $this->hasMany(PanjarehVahedHistory::class); @@ -54,7 +56,7 @@ class Harim extends Model return Attribute::make( set: function ($value) { $iv = config('harim_web_services.Harim_Info.iv'); - $keyString = config('harim_web_services.Harim_Info.keyString'); + $keyString = config('harim_web_services.Harim_Info.key'); $key = hash('sha256',$keyString, true); $decrypted = openssl_decrypt($value,'aes-256-cbc',$key,false, $iv); return json_decode($decrypted); From 85fd519b138bdbd9441cb2351ba4acc9e9ecf85e Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 10 Nov 2025 14:02:14 +0330 Subject: [PATCH 34/54] fix code --- .../Dashboard/Harim/HarimOfficeController.php | 2 +- .../HarimOffice/ComputingPaymentRequest.php | 14 ++++---- app/Models/Harim.php | 3 +- database/seeders/HarimStateSeeder.php | 34 +++++++++---------- routes/v3.php | 2 +- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 3e6dc817..b5fc58e9 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -158,7 +158,7 @@ class HarimOfficeController extends Controller 'state_name' => HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_MOAVEN->label(), 'traffic' => $request->traffic, 'position' => $request->position, - 'final_plan_space' => $request->final_plan_space, + 'final_area_space' => $request->final_area_space, 'road_type' => $request->road_type, 'payment_amount' => $request->payment_amount, ] diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php index c2e9a406..f4dc8d67 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -13,8 +13,8 @@ class ComputingPaymentRequest extends FormRequest */ public function authorize(): bool { - return $this->harim->province_id === auth()->user()->province_id && - $this->harim->state_id === HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; + return $this->harim->province_id == auth()->user()->province_id && + $this->harim->state_id == HarimStates::BARESI_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; } /** @@ -25,11 +25,11 @@ class ComputingPaymentRequest extends FormRequest public function rules(): array { return [ - 'traffic' => 'required|numeric|decimal:1', - 'road_type' => 'required|numeric|decimal:1', - 'position' => 'required|numeric|decimal:1', - 'final_area_space' => 'required|numeric|decimal:2', - 'payment_amount' => 'required|numeric|decimal:2', + 'traffic' => 'required|numeric|decimal:0,1', + 'road_type' => 'required|numeric|decimal:0,1', + 'position' => 'required|numeric|decimal:0,1', + 'final_area_space' => 'required|numeric|decimal:0,2', + 'payment_amount' => 'required|numeric|decimal:0,2', 'expert_description' => 'required|string', ]; } diff --git a/app/Models/Harim.php b/app/Models/Harim.php index c9da127a..2af054c4 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -2,7 +2,6 @@ namespace App\Models; -use App\Enums\HarimStates; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -39,7 +38,7 @@ class Harim extends Model 'previous_state_name' => $this->state_name, 'expert_description' => $description, 'action_id' => $action, - 'action_name' => HarimAction::name($action), + 'action_name' => \App\Enums\HarimAction::name($action), ]); $this->update($data); diff --git a/database/seeders/HarimStateSeeder.php b/database/seeders/HarimStateSeeder.php index 25b3e268..d8f4a93b 100644 --- a/database/seeders/HarimStateSeeder.php +++ b/database/seeders/HarimStateSeeder.php @@ -14,23 +14,23 @@ class HarimStateSeeder extends Seeder public function run(): void { DB::table('harim_states')->insert([ - ['id' => 1, 'name' => 'بررسی ادارات شهرستان', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 2, 'name' => 'بررسی توسط ادارات حریم', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 3, 'name' => 'بررسی توسط معاون', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 4, 'name' => 'بررسی توسط مدیر کل', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 5, 'name' => 'بررسی فایل آپلود شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 6, 'name' => 'بررسی فایل آپلود شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 7, 'name' => 'بررسی فایل آپلود شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 8, 'name' => 'ارسال ضمانت نامه توسط کاربر', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 9, 'name' => 'ارسال به پنجره واحد ( نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 10, 'name' => 'امکان پذیر نمی باشد', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 11, 'name' => 'ارسال به پنجره واحد (بدون نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 12, 'name' => 'بازبینی فایل بارگذاری شده', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 13, 'name' => 'تائید عرصه و اعیان ارسال شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 14, 'name' => 'تائید عرصه و اعیان ارسال شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 15, 'name' => 'تائید عرصه و اعیان ارسال شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], - ['id' => 16, 'name' => 'مخالفت با درخواست', 'created_at' => now(), 'updated_at' => now(),], - + ['id' => 1, 'name' => 'بررسی ادارات شهرستان', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 2, 'name' => 'بررسی توسط ادارات حریم','created_at' => now(), 'updated_at' => now(),], + ['id' => 3, 'name' => 'بررسی توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 4, 'name' => 'بررسی توسط مدیر کل','created_at' => now(), 'updated_at' => now(),], + ['id' => 5, 'name' => 'بررسی راه دسترسی آپلود شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 6, 'name' => 'بررسی راه دسترسی آپلود شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 7, 'name' => 'بررسی راه دسترسی آپلود شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 8, 'name' => 'دریافت عرصه و عیان نهایی', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 9, 'name' => 'ارسال به پنجره واحد ( نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 10, 'name' => 'امکان پذیر نمی باشد', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 11, 'name' => 'ارسال به پنجره واحد (بدون نیاز به راه دسترسی)', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 12, 'name' => 'بازبینی راه دسترسی بارگذاری شده', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 13, 'name' => 'تائید عرصه و اعیان ارسال شده توسط اداره حریم', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 14, 'name' => 'تائید عرصه و اعیان ارسال شده توسط معاون', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 15, 'name' => 'تائید عرصه و اعیان ارسال شده توسط مدیر', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 16, 'name' => 'مخالفت با درخواست', 'created_at' => now(), 'updated_at' => now(),], + ['id' => 17, 'name' => 'اتمام فرایند', 'created_at' => now(), 'updated_at' => now(),], ]); } } diff --git a/routes/v3.php b/routes/v3.php index ae2911a3..a06507fa 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -546,12 +546,12 @@ Route::prefix('harim') ->group(function () { Route::get('/', 'index')->name('index'); Route::post('/reject_request/{harim}', 'rejectRequest')->name('rejectRequest'); + Route::post('/refer_request/{harim}', 'referRequest')->name('referRequest'); Route::post('/need_road_access/{harim}', 'needRoadAccess')->name('needRoadAccess'); Route::post('/without_road_access/{harim}', 'withoutRoadAccess')->name('withoutRoadAccess'); Route::post('/file_accepted/{harim}', 'fileAccepted')->name('fileAccepted'); Route::post('/file_rejected/{harim}', 'fileRejected')->name('fileRejected'); Route::get('/{harim}', 'show')->name('show'); - Route::post('/refer_request/{harim}', 'referRequest')->name('referRequest'); Route::post('/computing_payment/{harim}', 'computingPayment')->name('computingPayment'); Route::post('/refer_to_city/{harim}', 'referToCity')->name('referToCity'); }); From e666e4c2771c47bae6e03dfcf6b2b03f742ead8f Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 11 Nov 2025 14:05:07 +0330 Subject: [PATCH 35/54] create sending webservices to panjereh vahed --- .../Dashboard/Harim/PaymentExecutedEvent.php | 18 +++++ .../Harim/GeneralManagerController.php | 3 + .../RoadMaintenanceStationController.php | 5 ++ .../ConfirmGuaranteeLetterNeedListener.php | 38 ++-------- .../Harim/ConfirmNoRoadAccessNeedListener.php | 38 ++-------- .../ConfirmRoadAccessEditNeedListener.php | 38 ++-------- .../Harim/ConfirmRoadAccessNeedListener.php | 38 ++-------- .../Harim/PaymentExecutedListener.php | 30 ++++++++ .../Dashboard/Harim/RejectRequestListener.php | 38 ++-------- app/Providers/EventServiceProvider.php | 7 +- .../SendAccessRoadStatusService.php | 74 +++++++++++++++++++ .../PanjarehVahed/SendPaymentInfoService.php | 74 +++++++++++++++++++ routes/v3.php | 1 + 13 files changed, 246 insertions(+), 156 deletions(-) create mode 100644 app/Events/V3/Dashboard/Harim/PaymentExecutedEvent.php create mode 100644 app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php create mode 100644 app/Services/PanjarehVahed/SendAccessRoadStatusService.php create mode 100644 app/Services/PanjarehVahed/SendPaymentInfoService.php diff --git a/app/Events/V3/Dashboard/Harim/PaymentExecutedEvent.php b/app/Events/V3/Dashboard/Harim/PaymentExecutedEvent.php new file mode 100644 index 00000000..36cd5c8c --- /dev/null +++ b/app/Events/V3/Dashboard/Harim/PaymentExecutedEvent.php @@ -0,0 +1,18 @@ +successResponse(); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index 01f05b43..e9de71e6 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -223,4 +223,9 @@ class RoadMaintenanceStationController extends Controller allowedSelects: ['id', 'lat', 'lng', 'status', 'type'], )); } + + public function giveListToFms() + { + return $this->successResponse(RahdariPoint::all(['id', 'name', 'lat', 'lng', 'area'])); + } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php index 9a11afc0..69dd473d 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmGuaranteeLetterNeedListener implements ShouldQueue { @@ -16,38 +16,14 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Guarantee_Letter_Need.url'); - $this->username = config('harim_web_services.Guarantee_Letter_Need.username'); - $this->password = config('harim_web_services.Guarantee_Letter_Need.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmGuaranteeLetterNeedEvent $event): void + public function handle(ConfirmGuaranteeLetterNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $encodedData = openssl_decrypt($event->harim->data); - - $data = [ - 'data' => [ - 'actionId' => $encodedData['actionId'], - 'ruleId' => $encodedData['ruleId'], - 'activityId' => $encodedData['activityId'], - 'requestId' => $encodedData['requestId'], - 'taskId' => $encodedData['taskId'], - 'code' => $encodedData['code'], - 'warrantStatus' => $encodedData['warrantStatus'], - 'amountPaid' => $encodedData['amountPaid'], - ], - 'token' => $encodedData['token'] - ]; - - Http::post($this->url, json_encode($data))->throw(); + $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php index 74ec1676..6161f4bc 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmNoRoadAccessNeedListener implements ShouldQueue { @@ -16,38 +16,14 @@ class ConfirmNoRoadAccessNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.No_Need_Access.url'); - $this->username = config('harim_web_services.No_Need_Access.username'); - $this->password = config('harim_web_services.No_Need_Access.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmNoRoadAccessNeedEvent $event): void + public function handle(ConfirmNoRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $encodedData = openssl_decrypt($event->harim->data); - - $data = [ - 'data' => [ - 'actionId' => $encodedData['actionId'], - 'ruleId' => $encodedData['ruleId'], - 'activityId' => $encodedData['activityId'], - 'requestId' => $encodedData['requestId'], - 'taskId' => $encodedData['taskId'], - 'code' => $encodedData['code'], - 'resultStatus' => $encodedData['resultStatus'], - 'Description' => $encodedData['Description'], - ], - 'token' => $encodedData['token'] - ]; - - Http::post($this->url, json_encode($data))->throw(); + $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php index cf77c02f..81844a0b 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmRoadAccessEditNeedListener implements ShouldQueue { @@ -16,38 +16,14 @@ class ConfirmRoadAccessEditNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Edit_Need_Access.url'); - $this->username = config('harim_web_services.Edit_Need_Access.username'); - $this->password = config('harim_web_services.Edit_Need_Access.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmRoadAccessEditNeedEvent $event): void + public function handle(ConfirmRoadAccessEditNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $encodedData = openssl_decrypt($event->harim->data); - - $data = [ - 'data' => [ - 'actionId' => $encodedData['actionId'], - 'ruleId' => $encodedData['ruleId'], - 'activityId' => $encodedData['activityId'], - 'requestId' => $encodedData['requestId'], - 'taskId' => $encodedData['taskId'], - 'code' => $encodedData['code'], - 'resultStatus' => $encodedData['resultStatus'], - 'Description' => $encodedData['Description'], - ], - 'token' => $encodedData['token'] - ]; - - Http::post($this->url, json_encode($data))->throw(); + $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php index ce54b281..60104829 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class ConfirmRoadAccessNeedListener implements ShouldQueue { @@ -16,40 +16,16 @@ class ConfirmRoadAccessNeedListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Need_Access.url'); - $this->username = config('harim_web_services.Need_Access.username'); - $this->password = config('harim_web_services.Need_Access.password'); - } + public function __construct(){} /** * Handle the event. - * @throws RequestException + * @throws Exception */ - public function handle(ConfirmRoadAccessNeedEvent $event): void + public function handle(ConfirmRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $encodedData = openssl_decrypt($event->harim->data); - - $data = [ - 'data' => [ - 'actionId' => $encodedData['actionId'], - 'ruleId' => $encodedData['ruleId'], - 'activityId' => $encodedData['activityId'], - 'requestId' => $encodedData['requestId'], - 'taskId' => $encodedData['taskId'], - 'code' => $encodedData['code'], - 'resultStatus' => $encodedData['resultStatus'], - 'Description' => $encodedData['Description'], - ], - 'token' => $encodedData['token'] - ]; - - Http::post($this->url, json_encode($data))->throw(); + $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php new file mode 100644 index 00000000..69a5234c --- /dev/null +++ b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php @@ -0,0 +1,30 @@ +makeInputParameters($event->harim->data); + $sendPaymentInfoService->run(); + } +} diff --git a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php index 0d5a1da7..84534c51 100644 --- a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php +++ b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php @@ -3,9 +3,9 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; +use App\Services\PanjarehVahed\SendAccessRoadStatusService; +use Exception; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Http\Client\RequestException; -use Illuminate\Support\Facades\Http; class RejectRequestListener implements ShouldQueue { @@ -16,38 +16,14 @@ class RejectRequestListener implements ShouldQueue */ public ?string $queue = 'harim'; - protected string $url; - protected string $password; - protected string $username; - - public function __construct() - { - $this->url = config('harim_web_services.Reject.url'); - $this->username = config('harim_web_services.Reject.username'); - $this->password = config('harim_web_services.Reject.password'); - } + public function __construct(){} /** - * @throws RequestException + * @throws Exception */ - public function handle(RejectRequestEvent $event): void + public function handle(RejectRequestEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $encodedData = openssl_decrypt($event->harim->data); - - $data = [ - 'data' => [ - 'actionId' => $encodedData['actionId'], - 'ruleId' => $encodedData['ruleId'], - 'activityId' => $encodedData['activityId'], - 'requestId' => $encodedData['requestId'], - 'taskId' => $encodedData['taskId'], - 'code' => $encodedData['code'], - 'resultStatus' => $encodedData['resultStatus'], - 'Description' => $encodedData['Description'], - ], - 'token' => $encodedData['token'] - ]; - - Http::post($this->url, json_encode($data))->throw(); + $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 16c73d00..ff703422 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -6,12 +6,14 @@ use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; +use App\Events\V3\Dashboard\Harim\PaymentExecutedEvent; use App\Events\V3\Dashboard\Harim\RejectRequestEvent; use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent; use App\Listeners\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedListener; use App\Listeners\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedListener; use App\Listeners\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedListener; use App\Listeners\V3\Dashboard\Harim\ConfirmRoadAccessNeedListener; +use App\Listeners\V3\Dashboard\Harim\PaymentExecutedListener; use App\Listeners\V3\Dashboard\Harim\RejectRequestListener; use App\Listeners\V3\Dashboard\Mission\SendDataToFMSListener; use Illuminate\Auth\Events\Registered; @@ -55,7 +57,10 @@ class EventServiceProvider extends ServiceProvider ], SendDataToFMSEvent::class => [ SendDataToFMSListener::class - ] + ], + PaymentExecutedEvent::class => [ + PaymentExecutedListener::class + ], ]; /** diff --git a/app/Services/PanjarehVahed/SendAccessRoadStatusService.php b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php new file mode 100644 index 00000000..c9704dcd --- /dev/null +++ b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php @@ -0,0 +1,74 @@ +url = config('harim_web_services.Reject.url'); + $this->channelName = ''; + } + + /** + * @throws Exception + */ + public function run(): array + { + try { + return $this->sendRequest(); + } + catch (Exception $e) { + Log::channel($this->channelName) + ->error(get_class($this), + [ + 'message' => $e->getMessage(), + ] + ); + + throw $e; + } + } + + private function sendRequest(): array + { + return Http::withHeaders(['Content-Type' => 'application/json']) + ->withBody($this->inputParameters) + ->throw() + ->withoutVerifying() + ->post($this->url) + ->json(); + } + + public function makeInputParameters($data): void + { + $arrayData = json_decode($data, true); + + $inputParameters = [ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $arrayData['code'], + 'resultStatus' => $arrayData['resultStatus'], + 'Description' => $arrayData['Description'], + ], + 'token' => $arrayData['token'], + ]; + + $key = config('harim_web_services.Harim_Info.key'); + $iv = config('harim_web_services.Harim_Info.iv'); + + $this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv); + } +} \ No newline at end of file diff --git a/app/Services/PanjarehVahed/SendPaymentInfoService.php b/app/Services/PanjarehVahed/SendPaymentInfoService.php new file mode 100644 index 00000000..cfd09b97 --- /dev/null +++ b/app/Services/PanjarehVahed/SendPaymentInfoService.php @@ -0,0 +1,74 @@ +url = config('harim_web_services.Reject.url'); + $this->channelName = ''; + } + + /** + * @throws Exception + */ + public function run(): array + { + try { + return $this->sendRequest(); + } + catch (Exception $e) { + Log::channel($this->channelName) + ->error(get_class($this), + [ + 'message' => $e->getMessage(), + ] + ); + + throw $e; + } + } + + private function sendRequest(): array + { + return Http::withHeaders(['Content-Type' => 'application/json']) + ->withBody($this->inputParameters) + ->throw() + ->withoutVerifying() + ->post($this->url) + ->json(); + } + + public function makeInputParameters($data): void + { + $arrayData = json_decode($data, true); + + $inputParameters = [ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $arrayData['code'], + 'warrantStatus' => $arrayData['warrantStatus'], + 'amountPaid' => $arrayData['amountPaid'], + ], + 'token' => $arrayData['token'], + ]; + + $key = config('harim_web_services.Harim_Info.key'); + $iv = config('harim_web_services.Harim_Info.iv'); + + $this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv); + } +} \ No newline at end of file diff --git a/routes/v3.php b/routes/v3.php index a06507fa..9fde0fa9 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -472,6 +472,7 @@ Route::prefix('road_maintenance_station') Route::get('/', 'index')->name('index')->middleware('permission:show-tollhouse|show-tollhouse-province'); Route::post('/', 'store')->name('store'); Route::get('/map', 'map')->name('map'); + Route::get('/list', 'giveListToFms')->name('giveListToFms'); Route::get('/images/{rahdariPoint}', 'images')->name('images'); Route::get('/{rahdariPoint}', 'show')->name('show')->middleware('permission:show-tollhouse|show-tollhouse-province'); Route::post('/{rahdariPoint}', 'update')->name('update')->middleware('permission:edit-tollhouse|edit-tollhouse-province'); From 36d16081febea9fd32ed7b5f87baca84ff423eb1 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 12 Nov 2025 09:26:49 +0330 Subject: [PATCH 36/54] create webservice route --- .../V3/Dashboard/RoadMaintenanceStationController.php | 2 +- routes/v3.php | 1 - routes/webservices.php | 10 +++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index e9de71e6..967781bb 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -224,7 +224,7 @@ class RoadMaintenanceStationController extends Controller )); } - public function giveListToFms() + public function giveListToFms(): JsonResponse { return $this->successResponse(RahdariPoint::all(['id', 'name', 'lat', 'lng', 'area'])); } diff --git a/routes/v3.php b/routes/v3.php index 9fde0fa9..a06507fa 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -472,7 +472,6 @@ Route::prefix('road_maintenance_station') Route::get('/', 'index')->name('index')->middleware('permission:show-tollhouse|show-tollhouse-province'); Route::post('/', 'store')->name('store'); Route::get('/map', 'map')->name('map'); - Route::get('/list', 'giveListToFms')->name('giveListToFms'); Route::get('/images/{rahdariPoint}', 'images')->name('images'); Route::get('/{rahdariPoint}', 'show')->name('show')->middleware('permission:show-tollhouse|show-tollhouse-province'); Route::post('/{rahdariPoint}', 'update')->name('update')->middleware('permission:edit-tollhouse|edit-tollhouse-province'); diff --git a/routes/webservices.php b/routes/webservices.php index 8626fa4b..2a8c30be 100644 --- a/routes/webservices.php +++ b/routes/webservices.php @@ -2,6 +2,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\V3\Dashboard\Harim\PanjareVahedController; +use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; Route::prefix('harim') ->name('harim.') @@ -15,4 +16,11 @@ Route::prefix('harim') Route::post('/get_status_request','getRejectRequest')->name('getRejectRequest'); Route::post('/get_final_polygons','getFinalPolygons')->name('getFinalPolygons'); }); - }); \ No newline at end of file + }); + +Route::prefix('road_maintenance_station') + ->name('roadMaintenanceStation.') + ->controller( RoadMaintenanceStationController::class) + ->group(function () { + Route::get('/list', 'giveListToFms')->name('giveListToFms'); + }); From 69430cf7bc796d23e9a5f5b0aefcc7f547448168 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 12 Nov 2025 21:52:41 +0330 Subject: [PATCH 37/54] Create prosess for check moving machine in mission --- .env.example | 4 + .../Commands/DailyMovingMachineCommand.php | 93 +++++++++++++++++++ app/Console/Kernel.php | 4 + app/Enums/ActivityMachineType.php | 21 +++++ .../Dashboard/Mission/SendDataToFMSEvent.php | 1 - .../V3/Dashboard/Mission/DetailController.php | 9 ++ app/Models/DailyMoveMachine.php | 17 ++++ .../CMMS/DailyMovingMachinesService.php | 68 ++++++++++++++ .../Mission/DailyMoveMachineService.php | 25 +++++ config/cmms_web_services.php | 6 ++ config/logging.php | 5 + ...55435_create_daily_move_machines_table.php | 35 +++++++ 12 files changed, 287 insertions(+), 1 deletion(-) create mode 100644 app/Console/Commands/DailyMovingMachineCommand.php create mode 100644 app/Enums/ActivityMachineType.php create mode 100644 app/Models/DailyMoveMachine.php create mode 100644 app/Services/CMMS/DailyMovingMachinesService.php create mode 100644 app/Services/Cartables/Mission/DailyMoveMachineService.php create mode 100644 database/migrations/2025_11_12_155435_create_daily_move_machines_table.php diff --git a/.env.example b/.env.example index 5a6b45c4..5ce02157 100644 --- a/.env.example +++ b/.env.example @@ -98,3 +98,7 @@ BACKUP_PASSWORD= HARIM_ENCRYPTION_KEY="TestKey" HARIM_ENCRYPTION_IV="1111000011110101" + +CHECKE_LIST_MACHINES_ACTIVITY_URL='fms.141.ir:7030/api/RMS/GetMovingVehicles', +CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD= +CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= \ No newline at end of file diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php new file mode 100644 index 00000000..e315e194 --- /dev/null +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -0,0 +1,93 @@ +run(); + + $date = now()->toDateString(); + + $cmms = $response + ->pluck('machineCode'); + + $mission = Mission::query() + ->whereDate('start_time',today()) + ->pluck('machine_code'); + + + $cmmsOnly = $cmms->diff($mission); + $missionOnly = $mission->diff($cmms); + $matching = $cmms->intersect($mission); + + foreach ($matching as $code) { + $cmm = (object) $response->firstWhere('machineCode', $code); + $missionRecord = Mission::where('machine_code', $code) + ->whereDate('start_time', today()) + ->first(); + + DailyMoveMachine::query()->create([ + 'machine_code' => $code, + 'mission_id' => $missionRecord->id , + 'type' => ActivityMachineType::MOTABEGAT->label(), + 'request_date' => $date, + 'mileage' => $cmm->mileage, + 'exit_time' => $cmm->exit_time, + 'enter_time' => $cmm->enter_time, + ]); + } + + foreach ($cmmsOnly as $code) { + $cmm = (object) $response->firstWhere('machineCode', $code); + + DailyMoveMachine::query()->create([ + 'machine_code' => $code, + 'type' => ActivityMachineType::TEDADE_MACHINES_BISHTAR_AS_MISSION->label(), + 'request_date' => $date, + 'mileage' => $cmm->mileage, + 'exit_time' => $cmm->exit_time, + 'enter_time' => $cmm->enter_time, + ]); + } + + foreach ($missionOnly as $code) { + DailyMoveMachine::create([ + 'machine_code' => $code, + 'mission_id' => $mission->id, + 'type' => ActivityMachineType::TEDADE_MISSIONS_BISHTAR_AS_MACHINES->label(), + 'request_date' => $date, + ]); + } + + + $this->info('Diffs saved.'); + } + +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 281693b9..7fd4011a 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -16,6 +16,7 @@ class Kernel extends ConsoleKernel protected $commands = [ 'App\Console\Commands\RoadObservationProblems', //// road observed webservice from 141 sawaneh 'App\Console\Commands\SendContractSmsNotification', //// road observed webservice from 141 sawaneh + 'App\Console\Commands\DailyMovingMachineCommand', ]; /** @@ -48,6 +49,9 @@ class Kernel extends ConsoleKernel ->dailyAt('04:00') ->appendOutputTo(storage_path('logs/telescope.log')); + $schedule->command('daily_moving_machine') + ->dailyAt('23:59')->appendOutputTo(storage_path('logs/dailymovingmachine.log')); + } /** diff --git a/app/Enums/ActivityMachineType.php b/app/Enums/ActivityMachineType.php new file mode 100644 index 00000000..23cd3879 --- /dev/null +++ b/app/Enums/ActivityMachineType.php @@ -0,0 +1,21 @@ + "مطابقت ", + self::TEDADE_MACHINES_BISHTAR_AS_MISSION => " تعداد ماشین ها بیشتر از ماموریت ها", + self::TEDADE_MISSIONS_BISHTAR_AS_MACHINES => "تغداد ماموریت ها بیشتر از ماشین ها ", + + }; + } +} \ No newline at end of file diff --git a/app/Events/V3/Dashboard/Mission/SendDataToFMSEvent.php b/app/Events/V3/Dashboard/Mission/SendDataToFMSEvent.php index f25abfb1..72dde81f 100644 --- a/app/Events/V3/Dashboard/Mission/SendDataToFMSEvent.php +++ b/app/Events/V3/Dashboard/Mission/SendDataToFMSEvent.php @@ -2,7 +2,6 @@ namespace App\Events\V3\Dashboard\Mission; -use App\Models\Harim; use App\Models\Mission; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Foundation\Events\Dispatchable; diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index cf1b2dd1..1c361ff1 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -5,7 +5,9 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\Mission; +use App\Services\Cartables\Mission\DailyMoveMachineService; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; class DetailController extends Controller { @@ -31,4 +33,11 @@ class DetailController extends Controller return $this->successResponse($rahdaran); } + + public function index(Request $request, DailyMoveMachineService $dailyMoveMachineService): JsonResponse + { + $data = $dailyMoveMachineService->dataTable($request); + + return response()->json($data); + } } diff --git a/app/Models/DailyMoveMachine.php b/app/Models/DailyMoveMachine.php new file mode 100644 index 00000000..033f8681 --- /dev/null +++ b/app/Models/DailyMoveMachine.php @@ -0,0 +1,17 @@ +belongsTo(Mission::class); + } +} diff --git a/app/Services/CMMS/DailyMovingMachinesService.php b/app/Services/CMMS/DailyMovingMachinesService.php new file mode 100644 index 00000000..828a83fd --- /dev/null +++ b/app/Services/CMMS/DailyMovingMachinesService.php @@ -0,0 +1,68 @@ +url = config('cmms_web_services.CHECK_ACTIVITY.url'); + $this->password = config('cmms_web_services.CHECK_ACTIVITY.password'); + $this->username = config('cmms_web_services.CHECK_ACTIVITY.username'); + $this->channelName = 'daily_moving_machine'; + } + + /** + * @throws Exception + */ + public function run(): array + { + try { + return $this->sendRequest(); + } + catch (Exception $e) { + Log::channel($this->channelName) + ->error(get_class($this), + [ + 'message' => $e->getMessage(), + ] + ); + + throw $e; + } + } + + public function sendRequest(): array + { + $inputData = $this->makeInputParameters(); + + return Http::withBody($inputData) + ->throw() + ->withoutVerifying() + ->post($this->url) + ->json(); + } + + private function makeInputParameters(): string + { + $inputData = array( + "username" => $this->username, + "password" => $this->password, + "day" => today(), + "minMileage" => 10, + ); + + return json_encode($inputData); + } +} diff --git a/app/Services/Cartables/Mission/DailyMoveMachineService.php b/app/Services/Cartables/Mission/DailyMoveMachineService.php new file mode 100644 index 00000000..1a63ed8a --- /dev/null +++ b/app/Services/Cartables/Mission/DailyMoveMachineService.php @@ -0,0 +1,25 @@ + env('CMMS_MACHINE_INFO_PASSWORD'), 'ViewName' => env('CMMS_MACHINE_INFO_VIEW_NAME'), ], + + 'CHECK_ACTIVITY' => [ + 'url' => env('CHECKE_LIST_MACHINES_ACTIVITY_URL'), + 'password' => env('CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD'), + 'username' => env('CHECKE_LIST_MACHINES_ACTIVITY_USERNAME'), + ], ]; \ No newline at end of file diff --git a/config/logging.php b/config/logging.php index 972f7be3..14edc387 100644 --- a/config/logging.php +++ b/config/logging.php @@ -147,5 +147,10 @@ return [ 'path' => storage_path('logs/telescope.log'), 'level' => 'info', ], + 'daily_moving_machine' => [ + 'driver' => 'single', + 'path' => storage_path('logs/cmms/daily_moving_machine_service.log'), + 'level' => 'info', + ], ], ]; diff --git a/database/migrations/2025_11_12_155435_create_daily_move_machines_table.php b/database/migrations/2025_11_12_155435_create_daily_move_machines_table.php new file mode 100644 index 00000000..7af2c25b --- /dev/null +++ b/database/migrations/2025_11_12_155435_create_daily_move_machines_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('mission_id')->index()->nullable(); + $table->string('machine_code')->index(); + $table->date('request_date')->index(); + $table->string('type')->nullable(); + $table->unsignedInteger('mileage')->nullable(); + $table->dateTime('exit_time')->nullable(); + $table->dateTime('enter_time')->nullable(); + $table->timestamps(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('report_mission_and_machines'); + } +}; From eaccd760196fee64279b4ee8aef34cb5e948af0d Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 15 Nov 2025 10:34:56 +0330 Subject: [PATCH 38/54] convert many to many to one to many --- .../Mission/ControlUnitController.php | 7 ++- .../V3/Dashboard/Mission/DetailController.php | 2 +- .../Mission/RequestPortalController.php | 44 +++++++++---------- .../Mission/TransportationUnitController.php | 18 +++++++- .../V3/Mission/ControlUnit/StartRequest.php | 1 + .../RequestPortal/ContinueMissionRequest.php | 3 +- .../TransportaionUnit/AllocateRequest.php | 25 +++++++++-- app/Models/Mission.php | 5 +++ .../Mission/TransportationUnitService.php | 2 +- ...15_090251_add_column_to_missions_table.php | 30 +++++++++++++ 10 files changed, 104 insertions(+), 33 deletions(-) create mode 100644 database/migrations/2025_11_15_090251_add_column_to_missions_table.php diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index afda7a93..306f7243 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -14,6 +14,7 @@ use App\Services\Cartables\Mission\ControlUnitService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; class ControlUnitController extends Controller { @@ -24,9 +25,12 @@ class ControlUnitController extends Controller return response()->json($controlUnitService->datatable($request)); } + /** + * @throws Throwable + */ public function start(StartRequest $request, Mission $mission): JsonResponse { - DB::transaction(function () use ($mission) { + DB::transaction(function () use ($mission, $request) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -38,6 +42,7 @@ class ControlUnitController extends Controller 'state_id' => $state, 'state_name' => MissionStates::name($state), 'start_time' => now(), + 'km' => $request->km, ]); }); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index cf1b2dd1..cfc53709 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -13,7 +13,7 @@ class DetailController extends Controller public function machines(Mission $mission): JsonResponse { - return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); + return $this->successResponse($mission->machine()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); } public function rahdaran(Mission $mission): JsonResponse diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index e412de82..3691a8e9 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -13,6 +13,7 @@ use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest; 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\RoadObserved; use App\Services\Cartables\Mission\RequestPortalService; @@ -20,6 +21,7 @@ use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; class RequestPortalController extends Controller { @@ -30,6 +32,9 @@ class RequestPortalController extends Controller return response()->json($requestPortalService->datatable($request)); } + /** + * @throws Throwable + */ public function store(StoreRequest $request): JsonResponse { DB::transaction(function () use ($request) { @@ -65,13 +70,6 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->sync($request->rahdaran); - - if ($category == 3) { - RoadObserved::query() - ->find($request->road_observed_id) - ->missions() - ->attach($mission->id); - } }); return $this->successResponse(); @@ -82,6 +80,9 @@ class RequestPortalController extends Controller return $this->successResponse($mission); } + /** + * @throws Throwable + */ public function continueMission(ContinueMissionRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { @@ -95,6 +96,7 @@ class RequestPortalController extends Controller $state = MissionStates::START_MISSION->value; $category = $request->category_id; + $machine = CMMSMachine::query()->find($request->machine_id); $newMission = Mission::query()->create([ 'user_id' => $user->id, @@ -119,23 +121,20 @@ class RequestPortalController extends Controller 'category_name' => MissionCategory::name($category), 'explanation' => $request->explanation, 'start_time' => now(), + 'machine_id' => $machine->id, + 'machine_name' => $machine->car_name, ]); $newMission->rahdaran()->sync($request->rahdaran); - $newMission->machines()->attach($request->machines); $newMission->rahdaran()->attach($request->driver, ['is_driver' => true]); - - if ($category == 3) { - RoadObserved::query() - ->find($request->road_observed_id) - ->missions() - ->attach($newMission->id); - } }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function update(UpdateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($mission, $request) { @@ -159,31 +158,30 @@ class RequestPortalController extends Controller ]); $mission->rahdaran()->sync($request->rahdaran); - if ($request->category_id == 3) { - RoadObserved::query() - ->find($request->road_observed_id) - ->missions() - ->sync($mission->id); - } }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function destroy(Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { - $mission->rahdaran()->detach(); + $mission->rahdaran()->delete(); $mission->delete(); }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function noProcess(NoProcessRequest $request): JsonResponse { DB::transaction(function () use ($request) { - $start = Carbon::parse($request->start_date); $end = Carbon::parse($request->end_date); $type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value; diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php index 422aa794..b4eb0e76 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -13,6 +13,7 @@ use App\Services\Cartables\Mission\TransportationUnitService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Throwable; class TransportationUnitController extends Controller { @@ -23,10 +24,12 @@ class TransportationUnitController extends Controller return response()->json($transportationUnitService->dataTable($request)); } + /** + * @throws Throwable + */ public function allocate(AllocateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { - $mission->machines()->attach($request->machines); $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); $mission->histories()->create([ @@ -36,19 +39,27 @@ class TransportationUnitController extends Controller ]); $state = MissionStates::PENDING_CONFIRMATION->value; + $machine = CMMSMachine::query()->find($request->machine_id); + $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'km' => $request->km, + 'machine_id' => $machine->id, + 'machine_name' => $machine->car_name, ]); }); return $this->successResponse(); } + /** + * @throws Throwable + */ public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { + $mission->rahdaran()->wherePivot('is_driver', '=', true)->delete(); + $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -62,6 +73,8 @@ class TransportationUnitController extends Controller 'state_id' => $state, 'state_name' => MissionStates::name($state), 'description' => $request->description, + 'machine_id' => null, + 'machine_name' => null, ]); }); @@ -73,6 +86,7 @@ class TransportationUnitController extends Controller return $this->successResponse( CMMSMachine::query() ->where('car_type', '=', $mission->car_type) + ->where('status', '<>', 3) ->get(['machine_code', 'id', 'plak_number', 'car_name']) ); } diff --git a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php index f19a5067..e5d24b77 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php +++ b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php @@ -26,6 +26,7 @@ class StartRequest extends FormRequest { return [ 'code' => 'required|string', + 'km' => 'required', ]; } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php index 905f33ba..bff88565 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/ContinueMissionRequest.php @@ -28,8 +28,7 @@ class ContinueMissionRequest extends FormRequest return [ 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', - 'machines' => 'required|array', - 'machines.*' => 'required|integer|exists:cmms_machines,id', + 'machine_id' => 'required|integer|exists:cmms_machines,id', 'driver' => 'required|integer|exists:rahdaran,id', 'type' => 'required|in:1,2', 'zone' => 'required|in:1,2,3', diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php index 1913dfe7..31ff913d 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php @@ -3,8 +3,10 @@ namespace App\Http\Requests\V3\Mission\TransportaionUnit; use App\Enums\MissionStates; +use App\Models\Mission; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Validator; class AllocateRequest extends FormRequest { @@ -24,10 +26,27 @@ class AllocateRequest extends FormRequest public function rules(): array { return [ - 'machines' => 'required|array', - 'machines.*' => 'required|integer|exists:cmms_machines,id', + 'machine_id' => 'required|integer|exists:cmms_machines,id', 'driver' => 'required|integer|exists:rahdaran,id', - 'km' => 'required', + ]; + } + + public function after(): array + { + return [ + function (Validator $validator) { + $duplicateMission = Mission::query()->where('machine_id', $this->machine_id) + ->whereBetween('start_date', [$this->mission->start_date, $this->mission->end_date]) + ->orWhereBetween('end_date', [$this->mission->start_date, $this->mission->end_date]) + ->exists(); + + if ($duplicateMission) { + $validator->errors()->add( + 'machine', + 'خودروی مورد نظر در این زمان رزرو می باشد' + ); + } + }, ]; } } diff --git a/app/Models/Mission.php b/app/Models/Mission.php index 9d85a9bc..60790c26 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -84,4 +84,9 @@ class Mission extends Model 'missionable_id' ); } + + public function machine(): HasOne + { + return $this->hasOne(CMMSMachine::class); + } } diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php index e0dd71b4..be19780d 100644 --- a/app/Services/Cartables/Mission/TransportationUnitService.php +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -13,7 +13,7 @@ class TransportationUnitService public function dataTable(Request $request) { $query = Mission::query() - ->where('state_id', '=', MissionStates::REQUEST_CREATED->value) + ->whereIn('state_id', [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value]) ->where('edare_shahri_id', '=', Auth::user()->edarate_shahri_id); return DataTableFacade::run( diff --git a/database/migrations/2025_11_15_090251_add_column_to_missions_table.php b/database/migrations/2025_11_15_090251_add_column_to_missions_table.php new file mode 100644 index 00000000..ab13ac14 --- /dev/null +++ b/database/migrations/2025_11_15_090251_add_column_to_missions_table.php @@ -0,0 +1,30 @@ +foreignId('machine_id')->nullable()->constrained('cmms_machines'); + $table->string('machine_name')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('missions', function (Blueprint $table) { + $table->dropForeign('missions_machine_id_foreign'); + $table->dropColumn(['machine_id', 'machine_name']); + }); + } +}; From a54345983d0617e22b40ca0e87ef85b26d4e62a8 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 15 Nov 2025 16:08:06 +0330 Subject: [PATCH 39/54] change some part of code --- .../Commands/DailyMovingMachineCommand.php | 52 +++++++------------ app/Enums/ActivityMachineType.php | 10 ++-- ...ilyMoveMachine.php => AssignmentFails.php} | 2 +- .../CMMS/DailyMovingMachinesService.php | 24 ++++----- .../Mission/DailyMoveMachineService.php | 8 +-- config/cmms_web_services.php | 2 +- database/factories/AssignmentFailsFactory.php | 18 +++++++ ..._155435_create_assignment_fails_table.php} | 12 ++--- 8 files changed, 60 insertions(+), 68 deletions(-) rename app/Models/{DailyMoveMachine.php => AssignmentFails.php} (87%) create mode 100644 database/factories/AssignmentFailsFactory.php rename database/migrations/{2025_11_12_155435_create_daily_move_machines_table.php => 2025_11_12_155435_create_assignment_fails_table.php} (61%) diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index e315e194..96bdf9d6 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -4,7 +4,7 @@ namespace App\Console\Commands; use App\Enums\ActivityMachineType; use App\Models\Mission; -use App\Models\DailyMoveMachine; +use App\Models\AssignmentFails; use App\Services\CMMS\DailyMovingMachinesService; use Exception; use Illuminate\Console\Command; @@ -31,7 +31,8 @@ class DailyMovingMachineCommand extends Command */ public function handle(DailyMovingMachinesService $dailyMovingMachines): void { - $response = $dailyMovingMachines->run(); + $vehiclesInfo = $dailyMovingMachines->run(); + $response =$vehiclesInfo->get('vehiclesInfo', collect()); $date = now()->toDateString(); @@ -39,55 +40,38 @@ class DailyMovingMachineCommand extends Command ->pluck('machineCode'); $mission = Mission::query() - ->whereDate('start_time',today()) + ->whereDate('start_time',$date) ->pluck('machine_code'); - $cmmsOnly = $cmms->diff($mission); $missionOnly = $mission->diff($cmms); - $matching = $cmms->intersect($mission); - - foreach ($matching as $code) { - $cmm = (object) $response->firstWhere('machineCode', $code); - $missionRecord = Mission::where('machine_code', $code) - ->whereDate('start_time', today()) - ->first(); - - DailyMoveMachine::query()->create([ - 'machine_code' => $code, - 'mission_id' => $missionRecord->id , - 'type' => ActivityMachineType::MOTABEGAT->label(), - 'request_date' => $date, - 'mileage' => $cmm->mileage, - 'exit_time' => $cmm->exit_time, - 'enter_time' => $cmm->enter_time, - ]); - } foreach ($cmmsOnly as $code) { - $cmm = (object) $response->firstWhere('machineCode', $code); + $cmm = $response->firstWhere('machineCode', $code); - DailyMoveMachine::query()->create([ + AssignmentFails::query()->create([ 'machine_code' => $code, - 'type' => ActivityMachineType::TEDADE_MACHINES_BISHTAR_AS_MISSION->label(), + 'type' => ActivityMachineType::KHOROJ_BEDONE_MOGAVEZ->label(), 'request_date' => $date, - 'mileage' => $cmm->mileage, - 'exit_time' => $cmm->exit_time, - 'enter_time' => $cmm->enter_time, + 'mileage' => $cmm['mileageKM'], + 'exit_time' => $cmm['exit_time'], + 'enter_time' => $cmm['enter_time'], ]); } foreach ($missionOnly as $code) { - DailyMoveMachine::create([ + $missionRecord = Mission::query()->where('machine_code', $code) + ->whereDate('start_time', today()) + ->get(); + AssignmentFails::query()->create([ 'machine_code' => $code, - 'mission_id' => $mission->id, - 'type' => ActivityMachineType::TEDADE_MISSIONS_BISHTAR_AS_MACHINES->label(), + 'mission_id' => $missionRecord->id, + 'type' => ActivityMachineType::ADAM_TAHAROK->label(), 'request_date' => $date, ]); } - - $this->info('Diffs saved.'); + $this->info("ماشین‌های متحرک بدون مأموریت: " . $cmmsOnly->count()); + $this->info("مأموریت‌های بدون حرکت در CMMS: " . $missionOnly->count()); } - } diff --git a/app/Enums/ActivityMachineType.php b/app/Enums/ActivityMachineType.php index 23cd3879..4a4d2595 100644 --- a/app/Enums/ActivityMachineType.php +++ b/app/Enums/ActivityMachineType.php @@ -4,17 +4,15 @@ namespace App\Enums; enum ActivityMachineType: int { - case MOTABEGAT = 1; - case TEDADE_MACHINES_BISHTAR_AS_MISSION = 2; - case TEDADE_MISSIONS_BISHTAR_AS_MACHINES = 3; + case KHOROJ_BEDONE_MOGAVEZ = 1; + case ADAM_TAHAROK = 2; public function label(): string { return match ($this) { - self::MOTABEGAT => "مطابقت ", - self::TEDADE_MACHINES_BISHTAR_AS_MISSION => " تعداد ماشین ها بیشتر از ماموریت ها", - self::TEDADE_MISSIONS_BISHTAR_AS_MACHINES => "تغداد ماموریت ها بیشتر از ماشین ها ", + self::KHOROJ_BEDONE_MOGAVEZ => "خروج بدون مجوز ", + self::ADAM_TAHAROK => "عدم تحرک", }; } diff --git a/app/Models/DailyMoveMachine.php b/app/Models/AssignmentFails.php similarity index 87% rename from app/Models/DailyMoveMachine.php rename to app/Models/AssignmentFails.php index 033f8681..ea33b98c 100644 --- a/app/Models/DailyMoveMachine.php +++ b/app/Models/AssignmentFails.php @@ -5,7 +5,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class DailyMoveMachine extends Model +class AssignmentFails extends Model { use HasFactory; protected $guarded =[]; diff --git a/app/Services/CMMS/DailyMovingMachinesService.php b/app/Services/CMMS/DailyMovingMachinesService.php index 828a83fd..6383eb10 100644 --- a/app/Services/CMMS/DailyMovingMachinesService.php +++ b/app/Services/CMMS/DailyMovingMachinesService.php @@ -3,6 +3,7 @@ namespace App\Services\CMMS; use Exception; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -13,8 +14,6 @@ class DailyMovingMachinesService protected string $password; protected string $channelName; - - public function __construct() { $this->url = config('cmms_web_services.CHECK_ACTIVITY.url'); @@ -26,12 +25,11 @@ class DailyMovingMachinesService /** * @throws Exception */ - public function run(): array + public function run(): Collection { try { - return $this->sendRequest(); - } - catch (Exception $e) { + return collect( $this->sendRequest()); + } catch (Exception $e) { Log::channel($this->channelName) ->error(get_class($this), [ @@ -56,13 +54,11 @@ class DailyMovingMachinesService private function makeInputParameters(): string { - $inputData = array( - "username" => $this->username, - "password" => $this->password, - "day" => today(), - "minMileage" => 10, - ); - - return json_encode($inputData); + return json_encode([ + "username" => $this->username, + "password" => $this->password, + "day" => today(), + "minMileage" => 10, + ]); } } diff --git a/app/Services/Cartables/Mission/DailyMoveMachineService.php b/app/Services/Cartables/Mission/DailyMoveMachineService.php index 1a63ed8a..b3d08ac1 100644 --- a/app/Services/Cartables/Mission/DailyMoveMachineService.php +++ b/app/Services/Cartables/Mission/DailyMoveMachineService.php @@ -2,20 +2,16 @@ namespace App\Services\Cartables\Mission; -use App\Exceptions\ProhibitedAction; use App\Facades\DataTable\DataTableFacade; -use App\Models\DailyMoveMachine; -use App\Models\Damage; -use App\Models\SafetyAndPrivacy; +use App\Models\AssignmentFails; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; class DailyMoveMachineService { public function dataTable(Request $request) { return DataTableFacade::run( - DailyMoveMachine::query(), + AssignmentFails::query(), $request, allowedFilters: ['*'], allowedSortings: ['*'], diff --git a/config/cmms_web_services.php b/config/cmms_web_services.php index 25be6244..2541aa46 100644 --- a/config/cmms_web_services.php +++ b/config/cmms_web_services.php @@ -8,7 +8,7 @@ return [ ], 'CHECK_ACTIVITY' => [ - 'url' => env('CHECKE_LIST_MACHINES_ACTIVITY_URL'), + 'url' => env('CHECKE_LIST_MACHINES_ACTIVITY_URL'), 'password' => env('CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD'), 'username' => env('CHECKE_LIST_MACHINES_ACTIVITY_USERNAME'), ], diff --git a/database/factories/AssignmentFailsFactory.php b/database/factories/AssignmentFailsFactory.php new file mode 100644 index 00000000..1f5144f5 --- /dev/null +++ b/database/factories/AssignmentFailsFactory.php @@ -0,0 +1,18 @@ +id(); - $table->unsignedBigInteger('mission_id')->index()->nullable(); - $table->string('machine_code')->index(); - $table->date('request_date')->index(); + $table->foreignId('mission_id')->constrained('missions')->nullable(); + $table->string('machine_code')->nullable(); + $table->date('request_date')->nullable(); $table->string('type')->nullable(); - $table->unsignedInteger('mileage')->nullable(); + $table->bigInteger('mileage')->nullable(); $table->dateTime('exit_time')->nullable(); $table->dateTime('enter_time')->nullable(); $table->timestamps(); @@ -30,6 +30,6 @@ return new class extends Migration */ public function down(): void { - Schema::dropIfExists('report_mission_and_machines'); + Schema::dropIfExists('assignment_fails'); } }; From 068b6037c75178bb1bf181caaa3f8055056fb6b0 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 15 Nov 2025 17:41:32 +0330 Subject: [PATCH 40/54] fix code --- app/Console/Commands/DailyMovingMachineCommand.php | 12 ++++++------ .../V3/Dashboard/Mission/DetailController.php | 2 +- app/Services/CMMS/DailyMovingMachinesService.php | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index 96bdf9d6..0b0bacbe 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -32,12 +32,11 @@ class DailyMovingMachineCommand extends Command public function handle(DailyMovingMachinesService $dailyMovingMachines): void { $vehiclesInfo = $dailyMovingMachines->run(); - $response =$vehiclesInfo->get('vehiclesInfo', collect()); + $response = collect($vehiclesInfo['vehiclesInfo']); $date = now()->toDateString(); - $cmms = $response - ->pluck('machineCode'); + $cmms = $response->pluck('machineCode'); $mission = Mission::query() ->whereDate('start_time',$date) @@ -60,12 +59,13 @@ class DailyMovingMachineCommand extends Command } foreach ($missionOnly as $code) { - $missionRecord = Mission::query()->where('machine_code', $code) + $missionId = Mission::query()->where('machine_code', $code) ->whereDate('start_time', today()) - ->get(); + ->value('id'); + AssignmentFails::query()->create([ 'machine_code' => $code, - 'mission_id' => $missionRecord->id, + 'mission_id' => $missionId, 'type' => ActivityMachineType::ADAM_TAHAROK->label(), 'request_date' => $date, ]); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index 1c361ff1..4a99af4f 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -15,7 +15,7 @@ class DetailController extends Controller public function machines(Mission $mission): JsonResponse { - return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); + return $this->successResponse($mission->machine()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); } public function rahdaran(Mission $mission): JsonResponse diff --git a/app/Services/CMMS/DailyMovingMachinesService.php b/app/Services/CMMS/DailyMovingMachinesService.php index 6383eb10..1facb4e8 100644 --- a/app/Services/CMMS/DailyMovingMachinesService.php +++ b/app/Services/CMMS/DailyMovingMachinesService.php @@ -25,10 +25,10 @@ class DailyMovingMachinesService /** * @throws Exception */ - public function run(): Collection + public function run(): array { try { - return collect( $this->sendRequest()); + return $this->sendRequest(); } catch (Exception $e) { Log::channel($this->channelName) ->error(get_class($this), From 3b82149a6d4c51c7012a904c96114205327a1f8f Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 16 Nov 2025 10:23:06 +0330 Subject: [PATCH 41/54] debug --- app/Enums/CmmsMachineStatus.php | 19 +++++++++++++++++++ .../Mission/RequestPortalController.php | 2 +- .../Mission/TransportationUnitController.php | 5 +++-- .../TransportaionUnit/AllocateRequest.php | 2 +- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 app/Enums/CmmsMachineStatus.php diff --git a/app/Enums/CmmsMachineStatus.php b/app/Enums/CmmsMachineStatus.php new file mode 100644 index 00000000..b679da8f --- /dev/null +++ b/app/Enums/CmmsMachineStatus.php @@ -0,0 +1,19 @@ + 'آماده', + self::RESERVE => 'رزرو', + self::DAR_MAMORIAT => 'در ماموریت', + }; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 3691a8e9..564e8356 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -169,7 +169,7 @@ class RequestPortalController extends Controller public function destroy(Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { - $mission->rahdaran()->delete(); + $mission->rahdaran()->detach(); $mission->delete(); }); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php index b4eb0e76..8f78d51b 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; +use App\Enums\CmmsMachineStatus; use App\Enums\MissionStates; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Mission\TransportaionUnit\AllocateRequest; @@ -58,7 +59,7 @@ class TransportationUnitController extends Controller public function deallocate(DeallocateRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($request, $mission) { - $mission->rahdaran()->wherePivot('is_driver', '=', true)->delete(); + $mission->rahdaran()->wherePivot('is_driver', '=', true)->detach(); $mission->histories()->create([ 'user_id' => auth()->user()->id, @@ -86,7 +87,7 @@ class TransportationUnitController extends Controller return $this->successResponse( CMMSMachine::query() ->where('car_type', '=', $mission->car_type) - ->where('status', '<>', 3) +// ->where('status', '<>', CmmsMachineStatus::DAR_MAMORIAT->value) ->get(['machine_code', 'id', 'plak_number', 'car_name']) ); } diff --git a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php index 31ff913d..d5cc2956 100644 --- a/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php +++ b/app/Http/Requests/V3/Mission/TransportaionUnit/AllocateRequest.php @@ -35,7 +35,7 @@ class AllocateRequest extends FormRequest { return [ function (Validator $validator) { - $duplicateMission = Mission::query()->where('machine_id', $this->machine_id) + $duplicateMission = Mission::query()->where('machine_id', '=', $this->machine_id) ->whereBetween('start_date', [$this->mission->start_date, $this->mission->end_date]) ->orWhereBetween('end_date', [$this->mission->start_date, $this->mission->end_date]) ->exists(); From 6c41296f22de0e243f7916712ca2efa8a5638b6d Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 16 Nov 2025 10:45:41 +0330 Subject: [PATCH 42/54] fix code --- .../Commands/DailyMovingMachineCommand.php | 21 ++--- app/Console/Kernel.php | 2 +- .../V3/Dashboard/Mission/DetailController.php | 11 +-- .../Mission/ViolationManagementController.php | 79 +++++++++++++++++++ ...signmentFails.php => MissionViolation.php} | 2 +- .../CMMS/DailyMovingMachinesService.php | 6 +- .../Mission/DailyMoveMachineService.php | 4 +- database/factories/AssignmentFailsFactory.php | 4 +- ...55435_create_mission_violations_table.php} | 8 +- 9 files changed, 105 insertions(+), 32 deletions(-) create mode 100644 app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php rename app/Models/{AssignmentFails.php => MissionViolation.php} (87%) rename database/migrations/{2025_11_12_155435_create_assignment_fails_table.php => 2025_11_12_155435_create_mission_violations_table.php} (73%) diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index 0b0bacbe..bc19cbfd 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -4,10 +4,11 @@ namespace App\Console\Commands; use App\Enums\ActivityMachineType; use App\Models\Mission; -use App\Models\AssignmentFails; +use App\Models\MissionViolation; use App\Services\CMMS\DailyMovingMachinesService; use Exception; use Illuminate\Console\Command; +use Illuminate\Support\Carbon; class DailyMovingMachineCommand extends Command { @@ -34,7 +35,7 @@ class DailyMovingMachineCommand extends Command $vehiclesInfo = $dailyMovingMachines->run(); $response = collect($vehiclesInfo['vehiclesInfo']); - $date = now()->toDateString(); + $date = Carbon::yesterday()->toDateString(); $cmms = $response->pluck('machineCode'); @@ -46,27 +47,27 @@ class DailyMovingMachineCommand extends Command $missionOnly = $mission->diff($cmms); foreach ($cmmsOnly as $code) { - $cmm = $response->firstWhere('machineCode', $code); + $cmm = $response->firstWhere('machineCode', '=', $code); - AssignmentFails::query()->create([ + MissionViolation::query()->create([ 'machine_code' => $code, - 'type' => ActivityMachineType::KHOROJ_BEDONE_MOGAVEZ->label(), + 'type' => ActivityMachineType::KHOROJ_BEDONE_MOGAVEZ->value, 'request_date' => $date, 'mileage' => $cmm['mileageKM'], - 'exit_time' => $cmm['exit_time'], - 'enter_time' => $cmm['enter_time'], +// 'exit_time' => $cmm['exit_time'], +// 'enter_time' => $cmm['enter_time'], ]); } foreach ($missionOnly as $code) { $missionId = Mission::query()->where('machine_code', $code) - ->whereDate('start_time', today()) + ->whereDate('start_time', $date) ->value('id'); - AssignmentFails::query()->create([ + MissionViolation::query()->create([ 'machine_code' => $code, 'mission_id' => $missionId, - 'type' => ActivityMachineType::ADAM_TAHAROK->label(), + 'type' => ActivityMachineType::ADAM_TAHAROK->value, 'request_date' => $date, ]); } diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 7fd4011a..4b9554d3 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -50,7 +50,7 @@ class Kernel extends ConsoleKernel ->appendOutputTo(storage_path('logs/telescope.log')); $schedule->command('daily_moving_machine') - ->dailyAt('23:59')->appendOutputTo(storage_path('logs/dailymovingmachine.log')); + ->dailyAt('02:00')->appendOutputTo(storage_path('logs/dailymovingmachine.log')); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index 4a99af4f..cf1b2dd1 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -5,9 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\Mission; -use App\Services\Cartables\Mission\DailyMoveMachineService; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; class DetailController extends Controller { @@ -15,7 +13,7 @@ class DetailController extends Controller public function machines(Mission $mission): JsonResponse { - return $this->successResponse($mission->machine()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); + return $this->successResponse($mission->machines()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); } public function rahdaran(Mission $mission): JsonResponse @@ -33,11 +31,4 @@ class DetailController extends Controller return $this->successResponse($rahdaran); } - - public function index(Request $request, DailyMoveMachineService $dailyMoveMachineService): JsonResponse - { - $data = $dailyMoveMachineService->dataTable($request); - - return response()->json($data); - } } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php b/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php new file mode 100644 index 00000000..4e6e95ad --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php @@ -0,0 +1,79 @@ +dataTable($request); + + return response()->json($data); + } + + public function noProcess(NoProcessRequest $request): JsonResponse + { + DB::transaction(function () use ($request) { + + $start = Carbon::parse($request->start_date); + $end = Carbon::parse($request->end_date); + $type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value; + $user = auth()->user(); + $zone = $request->zone; + $state = MissionStates::END_MISSION->value; + + $mission = Mission::query()->create([ + 'user_id' => $user->id, + 'username' => $user->username, + 'province_id' => $user->province_id, + 'province_name' => $user->province_fa, + 'edare_shahri_id' => $user->edarate_shahri_id ?? null, + 'edare_shahri_name' => $user->edarate_shahri_name ?? null, + 'zone' => $zone, + 'zone_fa' => MissionZones::name($zone), + 'type' => $type, + 'type_fa' => MissionTypes::name($type), + 'start_date' => $request->start_date, + 'end_date' => $request->end_date, + 'end_point' => $request->end_point, + 'area' => json_encode($request->area), + 'category_id' => $request->category_id, + 'category_name' => MissionCategory::name($request->category_id), + 'start_time' => $request->start_date, + 'finish_time' => $request->end_date, + 'state_id' => $state, + 'state_name' => MissionStates::name($state), + 'explanation' => $request->explanation, + 'request_date' => now(), + ]); + + $mission->rahdaran()->sync($request->rahdaran); + $mission->machines()->attach($request->machines); + $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); + + if ($mission->category_id == 2) { + $rpc = new OperatorController; + $rpc->store($mission); + } + }); + + return $this->successResponse(); + } +} diff --git a/app/Models/AssignmentFails.php b/app/Models/MissionViolation.php similarity index 87% rename from app/Models/AssignmentFails.php rename to app/Models/MissionViolation.php index ea33b98c..b1ff3be1 100644 --- a/app/Models/AssignmentFails.php +++ b/app/Models/MissionViolation.php @@ -5,7 +5,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class AssignmentFails extends Model +class MissionViolation extends Model { use HasFactory; protected $guarded =[]; diff --git a/app/Services/CMMS/DailyMovingMachinesService.php b/app/Services/CMMS/DailyMovingMachinesService.php index 1facb4e8..3f891221 100644 --- a/app/Services/CMMS/DailyMovingMachinesService.php +++ b/app/Services/CMMS/DailyMovingMachinesService.php @@ -3,7 +3,7 @@ namespace App\Services\CMMS; use Exception; -use Illuminate\Support\Collection; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -54,10 +54,12 @@ class DailyMovingMachinesService private function makeInputParameters(): string { + $day = Carbon::yesterday()->toDateString(); + return json_encode([ "username" => $this->username, "password" => $this->password, - "day" => today(), + "day" => $day, "minMileage" => 10, ]); } diff --git a/app/Services/Cartables/Mission/DailyMoveMachineService.php b/app/Services/Cartables/Mission/DailyMoveMachineService.php index b3d08ac1..c074fba6 100644 --- a/app/Services/Cartables/Mission/DailyMoveMachineService.php +++ b/app/Services/Cartables/Mission/DailyMoveMachineService.php @@ -3,7 +3,7 @@ namespace App\Services\Cartables\Mission; use App\Facades\DataTable\DataTableFacade; -use App\Models\AssignmentFails; +use App\Models\MissionViolation; use Illuminate\Http\Request; class DailyMoveMachineService @@ -11,7 +11,7 @@ class DailyMoveMachineService public function dataTable(Request $request) { return DataTableFacade::run( - AssignmentFails::query(), + MissionViolation::query(), $request, allowedFilters: ['*'], allowedSortings: ['*'], diff --git a/database/factories/AssignmentFailsFactory.php b/database/factories/AssignmentFailsFactory.php index 1f5144f5..27e8e5f4 100644 --- a/database/factories/AssignmentFailsFactory.php +++ b/database/factories/AssignmentFailsFactory.php @@ -2,12 +2,12 @@ namespace Database\Factories; -use App\Models\AssignmentFails; +use App\Models\MissionViolation; use Illuminate\Database\Eloquent\Factories\Factory; class AssignmentFailsFactory extends Factory { - protected $model = AssignmentFails::class; + protected $model = MissionViolation::class; public function definition(): array { diff --git a/database/migrations/2025_11_12_155435_create_assignment_fails_table.php b/database/migrations/2025_11_12_155435_create_mission_violations_table.php similarity index 73% rename from database/migrations/2025_11_12_155435_create_assignment_fails_table.php rename to database/migrations/2025_11_12_155435_create_mission_violations_table.php index b59d5f16..c741572f 100644 --- a/database/migrations/2025_11_12_155435_create_assignment_fails_table.php +++ b/database/migrations/2025_11_12_155435_create_mission_violations_table.php @@ -11,12 +11,12 @@ return new class extends Migration */ public function up(): void { - Schema::create('assignment_fails', function (Blueprint $table) { + Schema::create('mission_violations', function (Blueprint $table) { $table->id(); - $table->foreignId('mission_id')->constrained('missions')->nullable(); + $table->foreignId('mission_id')->nullable()->constrained('missions'); $table->string('machine_code')->nullable(); $table->date('request_date')->nullable(); - $table->string('type')->nullable(); + $table->tinyInteger('type')->nullable(); $table->bigInteger('mileage')->nullable(); $table->dateTime('exit_time')->nullable(); $table->dateTime('enter_time')->nullable(); @@ -30,6 +30,6 @@ return new class extends Migration */ public function down(): void { - Schema::dropIfExists('assignment_fails'); + Schema::dropIfExists('mission_violations'); } }; From 087f22f8c9dd06e46a6693a4ff8ba08f76e19f20 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 17 Nov 2025 14:44:19 +0330 Subject: [PATCH 43/54] create new column for harim --- .../Dashboard/Harim/HarimOfficeController.php | 1 + .../HarimOffice/ComputingPaymentRequest.php | 2 ++ ...3_add_final_plan_space_to_harims_table.php | 30 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index b5fc58e9..db93216a 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -160,6 +160,7 @@ class HarimOfficeController extends Controller 'position' => $request->position, 'final_area_space' => $request->final_area_space, 'road_type' => $request->road_type, + 'final_plan_space' => $request->final_plan_space, 'payment_amount' => $request->payment_amount, ] ); diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php index f4dc8d67..0e51e601 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -5,6 +5,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Validator; class ComputingPaymentRequest extends FormRequest { @@ -29,6 +30,7 @@ class ComputingPaymentRequest extends FormRequest 'road_type' => 'required|numeric|decimal:0,1', 'position' => 'required|numeric|decimal:0,1', 'final_area_space' => 'required|numeric|decimal:0,2', + 'final_plan_space' => 'required|numeric|decimal:0,2', 'payment_amount' => 'required|numeric|decimal:0,2', 'expert_description' => 'required|string', ]; diff --git a/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php new file mode 100644 index 00000000..348d4924 --- /dev/null +++ b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php @@ -0,0 +1,30 @@ +decimal('final_plan_space')->nullable(); + + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('harims', function (Blueprint $table) { + $table->dropColumn('final_plan_space'); + }); + } +}; From d441ebd0b4f36cedff7c98cd71424ad3789cd8e5 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Tue, 18 Nov 2025 10:14:26 +0330 Subject: [PATCH 44/54] create new route --- routes/v3.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/routes/v3.php b/routes/v3.php index a06507fa..cc4486da 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -17,6 +17,7 @@ use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; +use App\Http\Controllers\V3\Dashboard\Mission\ViolationManagementController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; @@ -520,7 +521,14 @@ Route::prefix('missions') Route::get('/machines/{mission}', 'machines')->name('machines'); Route::get('/rahdaran/{mission}', 'rahdaran')->name('rahdaran'); }); + Route::prefix('violation_management') + ->name('violationManagement.') + ->controller(ViolationManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + }); }); + Route::prefix('harim') ->name('harim.') ->group(function () { From 5672c6eb0dea416510adcf54d9e73684c2fb88e9 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 19 Nov 2025 09:25:17 +0330 Subject: [PATCH 45/54] crate new project --- .../Commands/GetMachinesInfoListCommand.php | 10 ++++-- .../ConfirmGuaranteeLetterNeedListener.php | 19 +++++++++- .../Harim/ConfirmNoRoadAccessNeedListener.php | 19 +++++++++- .../ConfirmRoadAccessEditNeedListener.php | 19 +++++++++- .../Harim/ConfirmRoadAccessNeedListener.php | 19 +++++++++- .../Harim/PaymentExecutedListener.php | 19 +++++++++- .../Dashboard/Harim/RejectRequestListener.php | 19 +++++++++- app/Models/Harim.php | 7 ++++ .../SendAccessRoadStatusService.php | 20 ++--------- .../PanjarehVahed/SendPaymentInfoService.php | 20 ++--------- ...3636_add_column_to_cmms_machines_table.php | 35 +++++++++++++++++++ 11 files changed, 161 insertions(+), 45 deletions(-) create mode 100644 database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php diff --git a/app/Console/Commands/GetMachinesInfoListCommand.php b/app/Console/Commands/GetMachinesInfoListCommand.php index 4f01d45d..a11742cd 100644 --- a/app/Console/Commands/GetMachinesInfoListCommand.php +++ b/app/Console/Commands/GetMachinesInfoListCommand.php @@ -35,9 +35,9 @@ class GetMachinesInfoListCommand extends Command $updatedRows = 0; - if (isset($response['vw_MachBankFull'])) { + if (isset($response['vw_MachBankFull2'])) { - foreach ($response['vw_MachBankFull'] as $entry) { + foreach ($response['vw_MachBankFull2'] as $entry) { // Insert data into the database CMMSMachine::query()->updateOrCreate( [ @@ -54,8 +54,12 @@ class GetMachinesInfoListCommand extends Command 'car_id' => $entry['Id'], 'unit_group' => $entry['UnitGroup'] == [] ? null : $entry['UnitGroup'], 'plak_number' => $entry['PlakNumber'] ?? null, + 'province_id' => $entry['UnitGroupCode'] ?? null, + 'city_id' => $entry['UnitCode'] ?? null, + 'station_id' => $entry['Layer3Code'] ?? null, ]); - $updatedRows += 1; + + ++$updatedRows; } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php index 69dd473d..bcee0cf0 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php @@ -23,7 +23,24 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue */ public function handle(ConfirmGuaranteeLetterNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php index 6161f4bc..7c779d46 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php @@ -23,7 +23,24 @@ class ConfirmNoRoadAccessNeedListener implements ShouldQueue */ public function handle(ConfirmNoRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php index 81844a0b..ad5903ab 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php @@ -23,7 +23,24 @@ class ConfirmRoadAccessEditNeedListener implements ShouldQueue */ public function handle(ConfirmRoadAccessEditNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php index 60104829..fb8e1cc9 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php @@ -3,6 +3,7 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; +use App\Models\Harim; use App\Services\PanjarehVahed\SendAccessRoadStatusService; use Exception; use Illuminate\Contracts\Queue\ShouldQueue; @@ -25,7 +26,23 @@ class ConfirmRoadAccessNeedListener implements ShouldQueue */ public function handle(ConfirmRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php index 69a5234c..e78975d9 100644 --- a/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php @@ -24,7 +24,24 @@ class PaymentExecutedListener implements ShouldQueue */ public function handle(PaymentExecutedEvent $event, SendPaymentInfoService $sendPaymentInfoService): void { - $sendPaymentInfoService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendPaymentInfoService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'warrantStatus' => $event->harim->need_payment , + 'amountPaid' => $arrayData['amountPaid'], + ], + + 'token' => $arrayData['token'], + ]); + $sendPaymentInfoService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php index 84534c51..6c1a148a 100644 --- a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php +++ b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php @@ -23,7 +23,24 @@ class RejectRequestListener implements ShouldQueue */ public function handle(RejectRequestEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 3, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 2af054c4..95f97ebf 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -62,4 +62,11 @@ class Harim extends Model }, ); } + + public function latestDescription() + { + return $this->hasMany(HarimHistory::class) + ->latestOfMany() + ->value('expert_description'); + } } diff --git a/app/Services/PanjarehVahed/SendAccessRoadStatusService.php b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php index c9704dcd..0cdd351e 100644 --- a/app/Services/PanjarehVahed/SendAccessRoadStatusService.php +++ b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php @@ -48,27 +48,11 @@ class SendAccessRoadStatusService ->json(); } - public function makeInputParameters($data): void + public function makeInputParameters($input): void { - $arrayData = json_decode($data, true); - - $inputParameters = [ - 'data' => [ - 'actionId' => $arrayData['actionId'], - 'ruleId' => $arrayData['ruleId'], - 'activityId' => $arrayData['activityId'], - 'requestId' => $arrayData['requestId'], - 'taskId' => $arrayData['taskId'], - 'code' => $arrayData['code'], - 'resultStatus' => $arrayData['resultStatus'], - 'Description' => $arrayData['Description'], - ], - 'token' => $arrayData['token'], - ]; - $key = config('harim_web_services.Harim_Info.key'); $iv = config('harim_web_services.Harim_Info.iv'); - $this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv); + $this->inputParameters = openssl_encrypt(json_encode($input), 'aes-256-cbc', $key, false, $iv); } } \ No newline at end of file diff --git a/app/Services/PanjarehVahed/SendPaymentInfoService.php b/app/Services/PanjarehVahed/SendPaymentInfoService.php index cfd09b97..2a591e2c 100644 --- a/app/Services/PanjarehVahed/SendPaymentInfoService.php +++ b/app/Services/PanjarehVahed/SendPaymentInfoService.php @@ -48,27 +48,11 @@ class SendPaymentInfoService ->json(); } - public function makeInputParameters($data): void + public function makeInputParameters($input): void { - $arrayData = json_decode($data, true); - - $inputParameters = [ - 'data' => [ - 'actionId' => $arrayData['actionId'], - 'ruleId' => $arrayData['ruleId'], - 'activityId' => $arrayData['activityId'], - 'requestId' => $arrayData['requestId'], - 'taskId' => $arrayData['taskId'], - 'code' => $arrayData['code'], - 'warrantStatus' => $arrayData['warrantStatus'], - 'amountPaid' => $arrayData['amountPaid'], - ], - 'token' => $arrayData['token'], - ]; - $key = config('harim_web_services.Harim_Info.key'); $iv = config('harim_web_services.Harim_Info.iv'); - $this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv); + $this->inputParameters = openssl_encrypt(json_encode($input), 'aes-256-cbc', $key, false, $iv); } } \ No newline at end of file diff --git a/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php new file mode 100644 index 00000000..970d867e --- /dev/null +++ b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php @@ -0,0 +1,35 @@ +foreignId('province_id')->nullable()->constrained('provinces'); + $table->foreignId('city_id')->nullable()->constrained('cities'); + $table->foreignId('station_id')->nullable()->constrained('rahdari_points'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cmms_machines', function (Blueprint $table) { + $table->dropForeign('cmms_machines_province_id_foreign'); + $table->dropForeign('cmms_machines_city_id_foreign'); + $table->dropForeign('cmms_machines_station_id_foreign'); + $table->dropColumn('province_id'); + $table->dropColumn('city_id'); + $table->dropColumn('station_id'); + }); + } +}; From f35dada874732f16c3251f2e2fc219e05ce9fb87 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 19 Nov 2025 15:28:26 +0330 Subject: [PATCH 46/54] check calculater --- .env.example | 4 +- .../HarimOffice/ComputingPaymentRequest.php | 38 +++++++++++++++++-- config/harim_web_services.php | 4 ++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 5ce02157..994bd3e2 100644 --- a/.env.example +++ b/.env.example @@ -101,4 +101,6 @@ HARIM_ENCRYPTION_IV="1111000011110101" CHECKE_LIST_MACHINES_ACTIVITY_URL='fms.141.ir:7030/api/RMS/GetMovingVehicles', CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD= -CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= \ No newline at end of file +CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= + +HARIM_AMOUNT_PER=1 \ No newline at end of file diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php index 0e51e601..63116bce 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -29,10 +29,42 @@ class ComputingPaymentRequest extends FormRequest 'traffic' => 'required|numeric|decimal:0,1', 'road_type' => 'required|numeric|decimal:0,1', 'position' => 'required|numeric|decimal:0,1', - 'final_area_space' => 'required|numeric|decimal:0,2', - 'final_plan_space' => 'required|numeric|decimal:0,2', - 'payment_amount' => 'required|numeric|decimal:0,2', + 'final_area_space' => 'required|numeric|decimal:0,2', //عرصه + 'final_plan_space' => 'required|numeric|decimal:0,2', // عیان + 'payment_amount' => 'required|numeric', 'expert_description' => 'required|string', ]; } + + public function after(): array + { + return [ + function () { + $fe = config('harim_web_services.Harim_Payment.per'); + $arse = ( + $this->traffic * + $this->road_type * + $this->position * + $fe* + $this->final_area_space + ); + $ayan =( + $this->traffic * + $this->road_type * + $this->position * + $fe* + $this->final_plan_space + ); + $result = floor($arse + $ayan); + + if ($result !== $this->payment_amount) { + $this->validator->errors()->add( + 'payment_amount', + 'payment_amount مقادیر بدست امده صحیح نمی باشد.' + ); + } + } + ]; + } + } diff --git a/config/harim_web_services.php b/config/harim_web_services.php index 437739e7..1b1e6f65 100644 --- a/config/harim_web_services.php +++ b/config/harim_web_services.php @@ -35,4 +35,8 @@ return [ 'key' => env('HARIM_ENCRYPTION_KEY'), 'iv' => env('HARIM_ENCRYPTION_IV'), ], + + 'Harim_Payment' => [ + 'per' => env('HARIM_AMOUNT_PER'), + ] ]; From 6a8d27b2c34f7e01a2539232db49900b67b727b2 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 26 Nov 2025 09:46:17 +0330 Subject: [PATCH 47/54] debug --- .env.example | 2 +- .../V3/Dashboard/Harim/DetailController.php | 16 +++++++++-- .../Harim/GeneralManagerController.php | 28 +++++++++++++++++++ .../Dashboard/Harim/HarimOfficeController.php | 24 +++++++++++++++- .../Harim/ProvinceOfficeController.php | 5 +++- .../Harim/TechnicalDeputyController.php | 21 +++++++++++++- .../HarimOffice/ComputingPaymentRequest.php | 8 +++--- .../ConfirmGuaranteeLetterNeedListener.php | 2 +- config/harim_web_services.php | 2 +- ...155435_create_mission_violations_table.php | 1 - ...3_add_final_plan_space_to_harims_table.php | 2 -- ...3636_add_column_to_cmms_machines_table.php | 9 ++++-- 12 files changed, 102 insertions(+), 18 deletions(-) diff --git a/.env.example b/.env.example index 994bd3e2..4e0ec85b 100644 --- a/.env.example +++ b/.env.example @@ -103,4 +103,4 @@ CHECKE_LIST_MACHINES_ACTIVITY_URL='fms.141.ir:7030/api/RMS/GetMovingVehicles', CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD= CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= -HARIM_AMOUNT_PER=1 \ No newline at end of file +HARIM_AMOUNT_FEE=1 \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php index 6d0b0fb0..17c0aad1 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php @@ -2,18 +2,30 @@ namespace App\Http\Controllers\V3\Dashboard\Harim; +use App\Exceptions\ProhibitedAction; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; +use App\Models\Harim; use App\Models\HarimState; use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; +use Throwable; class DetailController extends Controller { use ApiResponse; - public function states(Request $request): JsonResponse + public function states(): JsonResponse { return $this->successResponse(HarimState::query()->get(['id', 'name'])); } + + /** + * @throws Throwable + */ + public function histories(Harim $harim): JsonResponse + { + throw_if($this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id, new ProhibitedAction("unauthorized")); + + return $this->successResponse($harim->histories()->get(['id', 'expert_description', 'action_name', 'previous_state_name'])); + } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index e0c45aba..14a5a8ac 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -26,6 +26,7 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Throwable; class GeneralManagerController extends Controller { @@ -46,6 +47,9 @@ class GeneralManagerController extends Controller return response()->json($data); } + /** + * @throws Throwable + */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -62,6 +66,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -76,6 +83,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referFile(ReferFileRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -90,6 +100,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccessNeed(ConfirmRoadAccessNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -106,6 +119,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmNoRoadAccessNeed(ConfirmNoRoadAccessNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -122,6 +138,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccessEditNeed(ConfirmRoadAccessEditNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -138,6 +157,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmGuaranteeLetterNeed(ConfirmGuaranteeLetterNeedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -159,6 +181,9 @@ class GeneralManagerController extends Controller return $this->successResponse($harim->load('histories')); } + /** + * @throws Throwable + */ public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -173,6 +198,9 @@ class GeneralManagerController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index db93216a..d16d128f 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -19,6 +19,7 @@ use App\Models\Harim; use App\Models\Province; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Throwable; class HarimOfficeController extends Controller { @@ -39,6 +40,9 @@ class HarimOfficeController extends Controller return response()->json($data); } + /** + * @throws Throwable + */ public function rejectRequest(RejectRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -54,6 +58,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -68,6 +75,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function needRoadAccess(NeedRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -85,6 +95,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function withoutRoadAccess(WithoutRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -102,6 +115,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function fileAccepted(FileAcceptedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -117,6 +133,9 @@ class HarimOfficeController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function fileRejected(FileRejectedRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -134,7 +153,7 @@ class HarimOfficeController extends Controller public function show(ShowRequest $request, Harim $harim): JsonResponse { - return $this->successResponse($harim->load('histories')); + return $this->successResponse($harim); } public function referToCity(Request $request, Harim $harim) @@ -148,6 +167,9 @@ class HarimOfficeController extends Controller ]); } + /** + * @throws Throwable + */ public function computingPayment(ComputingPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index 9e38f1af..fba863cb 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -12,6 +12,7 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Throwable; class ProvinceOfficeController extends Controller { @@ -31,9 +32,11 @@ class ProvinceOfficeController extends Controller ); return response()->json($data); - } + /** + * @throws Throwable + */ public function feedback(FeedBackRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index 4323f36c..9e29b326 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -17,6 +17,7 @@ use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Throwable; class TechnicalDeputyController extends Controller { @@ -37,6 +38,9 @@ class TechnicalDeputyController extends Controller return response()->json($data); } + /** + * @throws Throwable + */ public function confirmRequest(ConfirmRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -51,6 +55,9 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRequest(ReferRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -65,6 +72,9 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmRoadAccess(ConfirmRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -79,6 +89,9 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function referRoadAccess(ReferRoadAccessRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -95,9 +108,12 @@ class TechnicalDeputyController extends Controller public function show(ShowRequest $request, Harim $harim): JsonResponse { - return $this->successResponse($harim->load('histories')); + return $this->successResponse($harim); } + /** + * @throws Throwable + */ public function referPayment(ReferPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( @@ -112,6 +128,9 @@ class TechnicalDeputyController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function confirmPayment(ConfirmPaymentRequest $request, Harim $harim): JsonResponse { $harim->updateStateWithHistory( diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php index 63116bce..4c4670a5 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -40,24 +40,24 @@ class ComputingPaymentRequest extends FormRequest { return [ function () { - $fe = config('harim_web_services.Harim_Payment.per'); + $fee = config('harim_web_services.Harim_Payment.fee'); $arse = ( $this->traffic * $this->road_type * $this->position * - $fe* + $fee * $this->final_area_space ); $ayan =( $this->traffic * $this->road_type * $this->position * - $fe* + $fee * $this->final_plan_space ); $result = floor($arse + $ayan); - if ($result !== $this->payment_amount) { + if ($result != $this->payment_amount) { $this->validator->errors()->add( 'payment_amount', 'payment_amount مقادیر بدست امده صحیح نمی باشد.' diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php index bcee0cf0..b121fb0f 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php @@ -35,7 +35,7 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue 'taskId' => $arrayData['taskId'], 'code' => $event->harim->id, 'resultStatus' => 1, - 'Description' => $event->harim->last_description, + 'Description' => $event->harim->latestDescription(), ], 'token' => $arrayData['token'], diff --git a/config/harim_web_services.php b/config/harim_web_services.php index 1b1e6f65..dc3f4686 100644 --- a/config/harim_web_services.php +++ b/config/harim_web_services.php @@ -37,6 +37,6 @@ return [ ], 'Harim_Payment' => [ - 'per' => env('HARIM_AMOUNT_PER'), + 'fee' => env('HARIM_AMOUNT_FEE'), ] ]; diff --git a/database/migrations/2025_11_12_155435_create_mission_violations_table.php b/database/migrations/2025_11_12_155435_create_mission_violations_table.php index c741572f..f54d33d0 100644 --- a/database/migrations/2025_11_12_155435_create_mission_violations_table.php +++ b/database/migrations/2025_11_12_155435_create_mission_violations_table.php @@ -21,7 +21,6 @@ return new class extends Migration $table->dateTime('exit_time')->nullable(); $table->dateTime('enter_time')->nullable(); $table->timestamps(); - $table->timestamps(); }); } diff --git a/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php index 348d4924..6692b847 100644 --- a/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php +++ b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php @@ -13,8 +13,6 @@ return new class extends Migration { Schema::table('harims', function (Blueprint $table) { $table->decimal('final_plan_space')->nullable(); - - }); } diff --git a/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php index 970d867e..c6e84ec6 100644 --- a/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php +++ b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php @@ -12,9 +12,12 @@ return new class extends Migration public function up(): void { Schema::table('cmms_machines', function (Blueprint $table) { - $table->foreignId('province_id')->nullable()->constrained('provinces'); - $table->foreignId('city_id')->nullable()->constrained('cities'); - $table->foreignId('station_id')->nullable()->constrained('rahdari_points'); + $table->unsignedTinyInteger('province_id')->nullable(); + $table->foreign('province_id')->references('id')->on('provinces'); + $table->unsignedSmallInteger('city_id')->nullable(); + $table->foreign('city_id')->references('id')->on('cities'); + $table->unsignedSmallInteger('station_id')->nullable(); + $table->foreign('station_id')->references('id')->on('rahdari_points'); }); } From 8fba75a684a66f45b5234eecdeac83f314752e3c Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 26 Nov 2025 13:53:22 +0330 Subject: [PATCH 48/54] create history api --- .../V3/Dashboard/Harim/DetailController.php | 6 ++++-- .../V3/Dashboard/Harim/GeneralManagerController.php | 12 ++++++++++-- .../V3/Dashboard/Harim/HarimOfficeController.php | 10 +++++++++- .../V3/Dashboard/Harim/ProvinceOfficeController.php | 8 +++++++- .../V3/Dashboard/Harim/TechnicalDeputyController.php | 10 +++++++++- .../Dashboard/RoadMaintenanceStationController.php | 8 ++++---- routes/v3.php | 1 + 7 files changed, 44 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php index 17c0aad1..2b63341a 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/DetailController.php @@ -24,8 +24,10 @@ class DetailController extends Controller */ public function histories(Harim $harim): JsonResponse { - throw_if($this->harim->edareh_shahri_id == auth()->user()->edarate_shahri_id, new ProhibitedAction("unauthorized")); + throw_if($harim->province_id != auth()->user()->province_id, new ProhibitedAction("شما دسترسی لازم جهت مشاهده ی این صفحه را ندارید")); - return $this->successResponse($harim->histories()->get(['id', 'expert_description', 'action_name', 'previous_state_name'])); + return $this->successResponse($harim->histories() + ->orderBy('id', 'desc') + ->get(['id', 'expert_description', 'action_name', 'previous_state_name'])); } } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index 14a5a8ac..fac204b1 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -35,7 +35,15 @@ class GeneralManagerController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('province_id', '=', auth()->user()->province_id); + ->where('province_id', '=', auth()->user()->province_id) + ->orderByRaw(" + CASE state + WHEN 4 THEN 1 + WHEN 7 THEN 2 + WHEN 15 THEN 3 + ELSE 4 + END + "); $data = DataTableFacade::run( $query, @@ -178,7 +186,7 @@ class GeneralManagerController extends Controller public function show(ShowRequest $request, Harim $harim): JsonResponse { - return $this->successResponse($harim->load('histories')); + return $this->successResponse($harim); } /** diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index d16d128f..0aa2b0ad 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -28,7 +28,15 @@ class HarimOfficeController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('province_id', '=', auth()->user()->province_id); + ->where('province_id', '=', auth()->user()->province_id) + ->orderByRaw(" + CASE state + WHEN 2 THEN 1 + WHEN 5 THEN 2 + WHEN 13 THEN 3 + ELSE 4 + END + "); $data = DataTableFacade::run( $query, diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index fba863cb..6a3af315 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -22,7 +22,13 @@ class ProvinceOfficeController extends Controller { $user = auth()->user(); $query = Harim::query() - ->where('edareh_shahri_id', '=', $user->edarate_shahri_id); + ->where('edareh_shahri_id', '=', $user->edarate_shahri_id) + ->orderByRaw(" + CASE state + WHEN 1 THEN 1 + ELSE 2 + END + "); $data = DataTableFacade::run( $query, diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index 9e29b326..52ba8c02 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -26,7 +26,15 @@ class TechnicalDeputyController extends Controller public function index(Request $request): JsonResponse { $query = Harim::query() - ->where('province_id', '=', auth()->user()->province_id); + ->where('province_id', '=', auth()->user()->province_id) + ->orderByRaw(" + CASE state + WHEN 3 THEN 1 + WHEN 6 THEN 2 + WHEN 14 THEN 3 + ELSE 4 + END + "); $data = DataTableFacade::run( $query, diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index 967781bb..721fec88 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -112,10 +112,10 @@ class RoadMaintenanceStationController extends Controller RahdariPointHistory::query()->create([ 'user_id' => $request->user()->id, 'point_id' => $rahdariPoint->id, - 'previous_province_id' => $province->id, - 'previous_province_name' => $province->name_fa, - 'previous_city_id' => $city->id, - 'previous_city_name' => $city->name_fa, + 'previous_province_id' => $rahdariPoint->province_id, + 'previous_province_name' => $rahdariPoint->province_name, + 'previous_city_id' => $rahdariPoint->city_id, + 'previous_city_name' => $rahdariPoint->city_name, 'previous_name' => $rahdariPoint->name, 'previous_status' => $rahdariPoint->status, 'previous_type' => $rahdariPoint->type, diff --git a/routes/v3.php b/routes/v3.php index cc4486da..01351520 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -537,6 +537,7 @@ Route::prefix('harim') ->controller(\App\Http\Controllers\V3\Dashboard\Harim\DetailController::class) ->group(function () { Route::get('/states', 'states')->name('states'); + Route::get('/histories/{harim}', 'histories')->name('histories'); }); Route::prefix('province_office') From fb932937dc6decc526bf13b05fc984721990bbb8 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 26 Nov 2025 16:13:55 +0330 Subject: [PATCH 49/54] create accessor --- .../Harim/GeneralManagerController.php | 2 +- .../Dashboard/Harim/HarimOfficeController.php | 2 +- .../Harim/ProvinceOfficeController.php | 2 +- .../Harim/TechnicalDeputyController.php | 2 +- app/Models/Harim.php | 21 +++++++++++++++++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php index fac204b1..fa18738d 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/GeneralManagerController.php @@ -37,7 +37,7 @@ class GeneralManagerController extends Controller $query = Harim::query() ->where('province_id', '=', auth()->user()->province_id) ->orderByRaw(" - CASE state + CASE state_id WHEN 4 THEN 1 WHEN 7 THEN 2 WHEN 15 THEN 3 diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index 0aa2b0ad..1978b02c 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -30,7 +30,7 @@ class HarimOfficeController extends Controller $query = Harim::query() ->where('province_id', '=', auth()->user()->province_id) ->orderByRaw(" - CASE state + CASE state_id WHEN 2 THEN 1 WHEN 5 THEN 2 WHEN 13 THEN 3 diff --git a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php index 6a3af315..ac05c5c9 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/ProvinceOfficeController.php @@ -24,7 +24,7 @@ class ProvinceOfficeController extends Controller $query = Harim::query() ->where('edareh_shahri_id', '=', $user->edarate_shahri_id) ->orderByRaw(" - CASE state + CASE state_id WHEN 1 THEN 1 ELSE 2 END diff --git a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php index 52ba8c02..87fee162 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/TechnicalDeputyController.php @@ -28,7 +28,7 @@ class TechnicalDeputyController extends Controller $query = Harim::query() ->where('province_id', '=', auth()->user()->province_id) ->orderByRaw(" - CASE state + CASE state_id WHEN 3 THEN 1 WHEN 6 THEN 2 WHEN 14 THEN 3 diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 95f97ebf..aa5a1e41 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -69,4 +69,25 @@ class Harim extends Model ->latestOfMany() ->value('expert_description'); } + + protected function forbiddenArea(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } + + protected function finalArea(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } + + protected function finalPlan(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } } From a676383a27b097a61d8a8c942cb7bcba80809c76 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 1 Dec 2025 14:16:37 +0330 Subject: [PATCH 50/54] change som item --- app/Console/Commands/DailyMovingMachineCommand.php | 2 +- app/Console/Kernel.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index bc19cbfd..a7446e07 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -17,7 +17,7 @@ class DailyMovingMachineCommand extends Command * * @var string */ - protected $signature = 'daily_moving_machine'; + protected $signature = 'webservice:daily_moving_machine'; /** * The console command description. diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 4b9554d3..f4c047dd 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -49,7 +49,7 @@ class Kernel extends ConsoleKernel ->dailyAt('04:00') ->appendOutputTo(storage_path('logs/telescope.log')); - $schedule->command('daily_moving_machine') + $schedule->command('webservice:daily_moving_machine') ->dailyAt('02:00')->appendOutputTo(storage_path('logs/dailymovingmachine.log')); } From dc7dc723c85b0408e4d4dd76288906d8efd82ab4 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 1 Dec 2025 16:18:03 +0330 Subject: [PATCH 51/54] change some item in command --- .../Commands/DailyMovingMachineCommand.php | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index a7446e07..0282931e 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -3,6 +3,7 @@ namespace App\Console\Commands; use App\Enums\ActivityMachineType; +use App\Models\CMMSMachine; use App\Models\Mission; use App\Models\MissionViolation; use App\Services\CMMS\DailyMovingMachinesService; @@ -30,7 +31,7 @@ class DailyMovingMachineCommand extends Command * Execute the console command. * @throws Exception */ - public function handle(DailyMovingMachinesService $dailyMovingMachines): void + public function handle(DailyMovingMachinesService $dailyMovingMachines,CMMSMachine $machine): void { $vehiclesInfo = $dailyMovingMachines->run(); $response = collect($vehiclesInfo['vehiclesInfo']); @@ -39,12 +40,17 @@ class DailyMovingMachineCommand extends Command $cmms = $response->pluck('machineCode'); - $mission = Mission::query() + $missions = Mission::query() ->whereDate('start_time',$date) - ->pluck('machine_code'); + ->with('machine') + ->where('machine_id', '=',$machine->id ) + ->get(); - $cmmsOnly = $cmms->diff($mission); - $missionOnly = $mission->diff($cmms); + $missionCodes = $missions->pluck('machine.machine_code')->filter(); + + + $cmmsOnly = $cmms->diff($missionCodes); + $missionOnly = $missionCodes->diff($cmms); foreach ($cmmsOnly as $code) { $cmm = $response->firstWhere('machineCode', '=', $code); @@ -60,13 +66,9 @@ class DailyMovingMachineCommand extends Command } foreach ($missionOnly as $code) { - $missionId = Mission::query()->where('machine_code', $code) - ->whereDate('start_time', $date) - ->value('id'); - MissionViolation::query()->create([ 'machine_code' => $code, - 'mission_id' => $missionId, + 'mission_id' => $missions->id, 'type' => ActivityMachineType::ADAM_TAHAROK->value, 'request_date' => $date, ]); From ad49d7773038efe5becc6d2239d0a2e1cadc6c25 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Tue, 2 Dec 2025 11:16:23 +0330 Subject: [PATCH 52/54] improve last code --- .../Commands/DailyMovingMachineCommand.php | 17 +++++++---------- ...MachineType.php => MissionViolationType.php} | 4 +--- ...1_15_090251_add_column_to_missions_table.php | 4 ++-- 3 files changed, 10 insertions(+), 15 deletions(-) rename app/Enums/{ActivityMachineType.php => MissionViolationType.php} (90%) diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index 0282931e..5b059dfd 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -2,7 +2,7 @@ namespace App\Console\Commands; -use App\Enums\ActivityMachineType; +use App\Enums\MissionViolationType; use App\Models\CMMSMachine; use App\Models\Mission; use App\Models\MissionViolation; @@ -31,7 +31,7 @@ class DailyMovingMachineCommand extends Command * Execute the console command. * @throws Exception */ - public function handle(DailyMovingMachinesService $dailyMovingMachines,CMMSMachine $machine): void + public function handle(DailyMovingMachinesService $dailyMovingMachines): void { $vehiclesInfo = $dailyMovingMachines->run(); $response = collect($vehiclesInfo['vehiclesInfo']); @@ -41,13 +41,10 @@ class DailyMovingMachineCommand extends Command $cmms = $response->pluck('machineCode'); $missions = Mission::query() - ->whereDate('start_time',$date) - ->with('machine') - ->where('machine_id', '=',$machine->id ) + ->whereDate('start_time', $date) ->get(); - $missionCodes = $missions->pluck('machine.machine_code')->filter(); - + $missionCodes = $missions->pluck('machine_code'); $cmmsOnly = $cmms->diff($missionCodes); $missionOnly = $missionCodes->diff($cmms); @@ -57,7 +54,7 @@ class DailyMovingMachineCommand extends Command MissionViolation::query()->create([ 'machine_code' => $code, - 'type' => ActivityMachineType::KHOROJ_BEDONE_MOGAVEZ->value, + 'type' => MissionViolationType::KHOROJ_BEDONE_MOGAVEZ->value, 'request_date' => $date, 'mileage' => $cmm['mileageKM'], // 'exit_time' => $cmm['exit_time'], @@ -68,8 +65,8 @@ class DailyMovingMachineCommand extends Command foreach ($missionOnly as $code) { MissionViolation::query()->create([ 'machine_code' => $code, - 'mission_id' => $missions->id, - 'type' => ActivityMachineType::ADAM_TAHAROK->value, + 'mission_id' => $missions->where('machine_code', '=', $code)->value('id'), + 'type' => MissionViolationType::ADAM_TAHAROK->value, 'request_date' => $date, ]); } diff --git a/app/Enums/ActivityMachineType.php b/app/Enums/MissionViolationType.php similarity index 90% rename from app/Enums/ActivityMachineType.php rename to app/Enums/MissionViolationType.php index 4a4d2595..e9c55b0c 100644 --- a/app/Enums/ActivityMachineType.php +++ b/app/Enums/MissionViolationType.php @@ -2,18 +2,16 @@ namespace App\Enums; -enum ActivityMachineType: int +enum MissionViolationType: int { case KHOROJ_BEDONE_MOGAVEZ = 1; case ADAM_TAHAROK = 2; - public function label(): string { return match ($this) { self::KHOROJ_BEDONE_MOGAVEZ => "خروج بدون مجوز ", self::ADAM_TAHAROK => "عدم تحرک", - }; } } \ No newline at end of file diff --git a/database/migrations/2025_11_15_090251_add_column_to_missions_table.php b/database/migrations/2025_11_15_090251_add_column_to_missions_table.php index ab13ac14..986eb8ba 100644 --- a/database/migrations/2025_11_15_090251_add_column_to_missions_table.php +++ b/database/migrations/2025_11_15_090251_add_column_to_missions_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::table('missions', function (Blueprint $table) { $table->foreignId('machine_id')->nullable()->constrained('cmms_machines'); - $table->string('machine_name')->nullable(); + $table->string('machine_code')->nullable(); }); } @@ -24,7 +24,7 @@ return new class extends Migration { Schema::table('missions', function (Blueprint $table) { $table->dropForeign('missions_machine_id_foreign'); - $table->dropColumn(['machine_id', 'machine_name']); + $table->dropColumn(['machine_id', 'machine_code']); }); } }; From ea79c077cfe8564002494796c86ee8cf625bed15 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 14 Dec 2025 09:19:57 +0330 Subject: [PATCH 53/54] debug the mission --- .../Dashboard/Mission/ControlUnitController.php | 3 +++ .../V3/Dashboard/Mission/DetailController.php | 2 +- .../Mission/RequestPortalController.php | 2 +- .../Mission/TransportationUnitController.php | 4 ++-- .../Harim/ProvinceOffice/FeedBackRequest.php | 6 +++--- .../Dashboard/Mission/SendDataToFMSListener.php | 4 ++-- app/Models/Mission.php | 16 ++++++++++++++-- .../Cartables/Mission/RequestPortalService.php | 2 +- 8 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index 306f7243..93f29906 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -49,6 +49,9 @@ class ControlUnitController extends Controller return $this->successResponse(); } + /** + * @throws Throwable + */ public function finish(FinishRequest $request, Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { diff --git a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php index cfc53709..c253fe46 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/DetailController.php @@ -13,7 +13,7 @@ class DetailController extends Controller public function machines(Mission $mission): JsonResponse { - return $this->successResponse($mission->machine()->get(['cmms_machines.id', 'cmms_machines.machine_code', 'cmms_machines.car_name', 'cmms_machines.plak_number'])); + return $this->successResponse($mission->machine()->get(['id', 'machine_code', 'car_name'])); } public function rahdaran(Mission $mission): JsonResponse diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 564e8356..adf24fe7 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -122,7 +122,7 @@ class RequestPortalController extends Controller 'explanation' => $request->explanation, 'start_time' => now(), 'machine_id' => $machine->id, - 'machine_name' => $machine->car_name, + 'machine_code' => $machine->machine_code, ]); $newMission->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 8f78d51b..bbffd853 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/TransportationUnitController.php @@ -46,7 +46,7 @@ class TransportationUnitController extends Controller 'state_id' => $state, 'state_name' => MissionStates::name($state), 'machine_id' => $machine->id, - 'machine_name' => $machine->car_name, + 'machine_code' => $machine->machine_code, ]); }); @@ -75,7 +75,7 @@ class TransportationUnitController extends Controller 'state_name' => MissionStates::name($state), 'description' => $request->description, 'machine_id' => null, - 'machine_name' => null, + 'machine_code' => null, ]); }); diff --git a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php index c01e213e..94ee2d06 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/ProvinceOffice/FeedBackRequest.php @@ -26,9 +26,9 @@ class FeedBackRequest extends FormRequest { return [ 'expert_description' => 'required|string', - 'forbidden_area' => 'required|array', - 'forbidden_area.type' => 'required|string', - 'forbidden_area.coordinates' => 'required|array', + 'forbidden_area' => 'array', + 'forbidden_area.type' => 'string', + 'forbidden_area.coordinates' => 'array', ]; } } diff --git a/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php b/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php index df8d92f4..90f2671b 100644 --- a/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php +++ b/app/Listeners/V3/Dashboard/Mission/SendDataToFMSListener.php @@ -31,10 +31,10 @@ class SendDataToFMSListener implements ShouldQueue $this->getErrorRateService->setInputParameters([ 'username' => config('fms_web_services.Error_Rate.username'), 'password' => config('fms_web_services.Error_Rate.password'), - 'missionArea' => $mission->area['coordinates'], + 'missionArea' => $mission->getMissionAreaForFms(), 'missionStartDT' => $mission->start_time->format('Y-m-d\TH:i:s'), 'missionEndDT' => $mission->finish_time->format('Y-m-d\TH:i:s'), - 'machineCode' => $mission->machines()->first()->value('machine_code'), + 'machineCode' => $mission->machine_code, 'areaType' => $mission->area['type'] === 'polygon' ? 1 : 2, ]); diff --git a/app/Models/Mission.php b/app/Models/Mission.php index 60790c26..fbce2451 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -5,6 +5,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\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\MorphToMany; @@ -85,8 +86,19 @@ class Mission extends Model ); } - public function machine(): HasOne + public function machine(): BelongsTo { - return $this->hasOne(CMMSMachine::class); + return $this->belongsTo(CMMSMachine::class, 'machine_id'); + } + + public function getMissionAreaForFms(): array + { + return collect($this->area['coordinates']) + ->map(fn ($point) => [ + 'Latitude' => $point[1], // lat + 'Longitude' => $point[0], // lng + ]) + ->values() + ->toArray(); } } diff --git a/app/Services/Cartables/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php index fcd160af..ca765a5e 100644 --- a/app/Services/Cartables/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -15,7 +15,7 @@ class RequestPortalService public function datatable(Request $request) { $user = auth()->user(); - $query = Mission::query()->with('roadObserved:id'); + $query = Mission::query(); if ($user->hasPermissionTo('manage-request-portal-city')) { $query->where('edare_shahri_id', '=', $user->edarate_shahri_id); From 309a5d2579906bfed26850fbc67a458e2476afca Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 14 Dec 2025 10:54:58 +0330 Subject: [PATCH 54/54] remove conflicts --- app/Console/Commands/RoadObservationProblems.php | 3 ++- app/Console/Kernel.php | 4 ++-- routes/v3.php | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Console/Commands/RoadObservationProblems.php b/app/Console/Commands/RoadObservationProblems.php index b585d167..e25b3109 100755 --- a/app/Console/Commands/RoadObservationProblems.php +++ b/app/Console/Commands/RoadObservationProblems.php @@ -78,7 +78,8 @@ class RoadObservationProblems extends Command $mobile = $value->MobileForSendEventSms; } - $cityModel = City::findCityWithLatLng($value->XGeo, $value->YGeo); + $city = findCityFromGeoJson($value->YGeo, $value->XGeo); + $cityModel = $city ? City::query()->find($city['city_id']) : City::query()->find(NikarayanComplaints::mapCities((int) $value->fk_Town)); $rop = RoadObserved::query()->updateOrCreate( ['fk_RegisteredEventMessage' => $value->fk_RegisteredEventMessage], [ diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 296328c1..f4c047dd 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -42,8 +42,8 @@ class Kernel extends ConsoleKernel $schedule->command("webservice:roadobserved --daily-mode") ->dailyAt('00:45')->appendOutputTo(storage_path('logs/nikarayan.log')); - $schedule->command("db:backup") - ->weekly()->at('03:00')->appendOutputTo(storage_path('logs/mariadb-backup.log')); +// $schedule->command("db:backup") +// ->weekly()->at('03:00')->appendOutputTo(storage_path('logs/mariadb-backup.log')); $schedule->command('telescope:prune --hours=48') ->dailyAt('04:00') diff --git a/routes/v3.php b/routes/v3.php index b060cdd2..01351520 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -388,7 +388,7 @@ Route::prefix('safety_and_privacy') Route::get('/map', 'map')->name('map'); Route::post('operator/second_step_store/{safetyAndPrivacy}', 'secondStepStore')->name('secondStepStore')->middleware(['validate-store-access','permission:add-safety-and-privacy','check-axis-type']); Route::post('operator/third_step_store/{safetyAndPrivacy}', 'thirdStepStore')->name('thirdStepStore')->middleware(['validate-store-access','permission:add-safety-and-privacy','check-axis-type']); - Route::post('operator/{safetyAndPrivacy}', 'update')->name('update')->middleware('permission:update-safety-and-privacy'); + Route::post('operator/{safetyAndPrivacy}', 'update')->name('update'); Route::get('operator/{safetyAndPrivacy}', 'show')->name('show'); Route::delete('operator/{safetyAndPrivacy}', 'destroy')->name('destroy')->middleware('permission:delete-safety-and-privacy'); Route::get('/deserialize/{safetyAndPrivacy}', 'deserialize')->name('deserialize');