From cb8b9683a37d575fc81c3f9cff37b5108d090ca8 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 26 Aug 2025 17:11:48 +0330 Subject: [PATCH] create and fix --- .../Harim/PanjareVahedController.php | 9 ++ .../AccessRoadActivityController.php | 7 +- .../ConstructionActivityController.php | 9 +- .../UtilityPassingActivityController.php | 9 +- .../PanjareVahed/GetAccessRouteRequest.php | 30 ++++ .../SafetyAndPrivacy/OperatorService.php | 132 ++++++++---------- routes/v3.php | 7 + 7 files changed, 121 insertions(+), 82 deletions(-) create mode 100644 app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index d19bac12..c8fe534b 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\V3\Dashboard\Harim; use App\Http\Controllers\Controller; +use App\Http\Requests\V3\Dashboard\Harim\PanjareVahed\GetAccessRouteRequest; use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\Request; @@ -20,4 +21,12 @@ class PanjareVahedController extends Controller return $this->successResponse(); } + public function getAccessRoute(GetAccessRouteRequest $request,Harim $harim) + { + Harim::update([ + 'panjarevahed_id' => $request->panjarevahed_id, + 'polygon' => $request->polygon, + ]); + return $this->successResponse(); + } } diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php index fc297660..0abd41b3 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/AccessRoadActivityController.php @@ -42,14 +42,17 @@ class AccessRoadActivityController extends Controller } public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $operatorService->countryActivity($request); + $data = $operatorService->countryActivity(90); $name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; return Excel::download(new ExcelReport($data), $name); } public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $operatorService->provinceActivity($request); + $data = $operatorService->provinceActivity( + info_id: 90, + province_id: $request->input('province_id') + ); $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 08919373..cef7b562 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php @@ -40,15 +40,20 @@ class ConstructionActivityController extends Controller } public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $operatorService->countryActivity($request); + $data = $operatorService->countryActivity(89); $name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + return Excel::download(new ExcelReport($data), $name); } public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $operatorService->provinceActivity($request); + $data = $operatorService->provinceActivity( + info_id: 89, + province_id: $request->input('province_id') + ); $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 618fdbc4..d11623aa 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/UtilityPassingActivityController.php @@ -41,15 +41,20 @@ class UtilityPassingActivityController extends Controller } public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $operatorService->countryActivity($request); + $data = $operatorService->countryActivity(91); + $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; return Excel::download(new ExcelReport($data), $name); } public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { - $data = $operatorService->provinceActivity($request); + $data = $operatorService->provinceActivity( + info_id: 91, + province_id: $request->input('province_id') + ); $name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + return Excel::download(new UtilityPassingReport($data, $request), $name); } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php new file mode 100644 index 00000000..ec269204 --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php @@ -0,0 +1,30 @@ + + */ + public function rules(): array + { + return [ + 'panjarevahed_id'=> 'required|string', + 'polygon' => 'required|string', + ]; + } +} diff --git a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php index fee91a66..8c9c0e9d 100644 --- a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php +++ b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php @@ -37,88 +37,68 @@ class OperatorService public function countryActivity(int $info_id): array { return DB::select(" - WITH combinations AS ( - SELECT - axis_type_id, - step - FROM ( - SELECT 1 AS axis_type_id UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 - ) a - CROSS JOIN ( - SELECT 1 AS step UNION ALL SELECT 2 UNION ALL SELECT 3 - ) s - ), - provinces AS ( - SELECT DISTINCT province_id FROM safety_and_privacy WHERE info_id = ? - ), - data AS ( - SELECT - p.province_id, - c.axis_type_id, - c.step, - COUNT(sp.id) AS total - FROM combinations c - CROSS JOIN provinces p - LEFT JOIN safety_and_privacy sp - ON sp.axis_type_id = c.axis_type_id - AND sp.step = c.step - AND sp.province_id = p.province_id - AND sp.info_id = ? - GROUP BY p.province_id, c.axis_type_id, c.step - ) - SELECT - province_id, + WITH province_data AS ( + SELECT + p.id AS province_id, + a.id AS axis_type_id, + SUM(CASE WHEN t.step = 1 THEN 1 ELSE 0 END) AS step_1_count, + SUM(CASE WHEN t.step = 2 THEN 1 ELSE 0 END) AS step_2_count, + SUM(CASE WHEN t.step = 3 THEN 1 ELSE 0 END) AS step_3_count + FROM provinces p + CROSS JOIN axis_types a + LEFT JOIN safety_and_privacy t + ON p.id = t.province_id + AND a.id = t.axis_type_id + AND t.info_id = :infoId + GROUP BY p.id, a.id + ) + SELECT * FROM province_data + UNION ALL + SELECT + -1 AS province_id, axis_type_id, - step, - total, - SUM(total) OVER (PARTITION BY province_id) AS total_sum - FROM data - ORDER BY province_id, axis_type_id, step - ", [$info_id, $info_id]); + SUM(step_1_count) AS step_1_count, + SUM(step_2_count) AS step_2_count, + SUM(step_3_count) AS step_3_count + FROM province_data + GROUP BY axis_type_id + ORDER BY province_id, axis_type_id + ", [ + 'infoId' => $info_id, + ]); } public function provinceActivity(int $info_id, int $province_id): array { return DB::select(" - WITH combinations AS ( - SELECT axis_type_id, step - FROM ( - SELECT 1 AS axis_type_id UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 - ) a - CROSS JOIN ( - SELECT 1 AS step UNION ALL SELECT 2 UNION ALL SELECT 3 - ) s - ), - edarat AS ( - SELECT id AS edare_id - FROM edarate_shahri - WHERE province_id = :provinceId - ), - data AS ( - SELECT - e.edare_id, - c.axis_type_id, - c.step, - COUNT(sp.id) AS total - FROM combinations c - CROSS JOIN edarat e - LEFT JOIN safety_and_privacy sp - ON sp.axis_type_id = c.axis_type_id - AND sp.step = c.step - AND sp.city_id = e.edare_id - AND sp.info_id = :infoId - GROUP BY e.edare_id, c.axis_type_id, c.step - ) - SELECT - e.edare_id, - d.axis_type_id, - d.step, - d.total, - SUM(d.total) OVER (PARTITION BY e.edare_id) AS total_sum - FROM data d - JOIN edarat e ON e.edare_id = d.edare_id - ORDER BY e.edare_id, d.axis_type_id, d.step - ",[ + WITH edareh_data AS ( + SELECT + e.id AS edareh_id, + a.id AS axis_type_id, + SUM(CASE WHEN t.step = 1 THEN 1 ELSE 0 END) AS step_1_count, + SUM(CASE WHEN t.step = 2 THEN 1 ELSE 0 END) AS step_2_count, + SUM(CASE WHEN t.step = 3 THEN 1 ELSE 0 END) AS step_3_count + FROM edarate_shahri e + CROSS JOIN axis_types a + LEFT JOIN safety_and_privacy t + ON e.id = t.edare_shahri_id + AND a.id = t.axis_type_id + AND t.info_id = :infoId + WHERE e.province_id = :provinceId + GROUP BY e.id, a.id + ) + SELECT * FROM edareh_data + UNION ALL + SELECT + -1 AS edareh_id, + axis_type_id, + SUM(step_1_count) AS step_1_count, + SUM(step_2_count) AS step_2_count, + SUM(step_3_count) AS step_3_count + FROM edareh_data + GROUP BY axis_type_id + ORDER BY edareh_id, axis_type_id + ", [ 'provinceId' => $province_id, 'infoId' => $info_id, ]); diff --git a/routes/v3.php b/routes/v3.php index f211be1a..3b02fe17 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -10,6 +10,7 @@ use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshSampleController; use App\Http\Controllers\V3\Dashboard\Azmayesh\AzmayeshTypeController; use App\Http\Controllers\V3\Dashboard\Harim\GeneralManagerController; use App\Http\Controllers\V3\Dashboard\Harim\HarimOfficeController; +use App\Http\Controllers\V3\Dashboard\Harim\PanjareVahedController; use App\Http\Controllers\V3\Dashboard\Harim\ProvinceOfficeController; use App\Http\Controllers\V3\Dashboard\Harim\TechnicalDeputyController; use App\Http\Controllers\V3\Dashboard\ItemsManagementController; @@ -560,6 +561,12 @@ Route::prefix('harim') Route::post('/confirm_guarantee_letter_need/{harim}', 'confirmGuaranteeLetterNeed')->name('confirmGuaranteeLetterNeed'); Route::get('/{harim}', 'show')->name('show'); }); + Route::prefix('panjarevahed') + ->name('panjarevahed.') + ->controller(PanjarevahedController::class) + ->group(function () { + Route::post('/get_access_route','getAccessRoute')->name('getAccessRoute'); + }); }); Route::prefix('user_management')