diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index c8fe534b..4d78f378 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -3,7 +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\Requests\V3\Dashboard\Harim\PanjareVahed\GetAccessRoadRequest; use App\Http\Traits\ApiResponse; use App\Models\Harim; use Illuminate\Http\Request; @@ -21,7 +21,7 @@ class PanjareVahedController extends Controller return $this->successResponse(); } - public function getAccessRoute(GetAccessRouteRequest $request,Harim $harim) + public function getAccessRoad(GetAccessRoadRequest $request, Harim $harim) { Harim::update([ 'panjarevahed_id' => $request->panjarevahed_id, diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php similarity index 92% rename from app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php rename to app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index ec269204..cc9a5dab 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRouteRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -5,7 +5,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\PanjareVahed; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; -class GetAccessRouteRequest extends FormRequest +class GetAccessRoadRequest extends FormRequest { /** * Determine if the user is authorized to make this request. diff --git a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php index e8053d43..81b2ce82 100644 --- a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php +++ b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php @@ -37,32 +37,49 @@ class OperatorService public function countryActivity(int $info_id): array { return DB::select(" - WITH province_data AS ( + WITH base AS ( + SELECT + p.id AS province_id, + a.id AS axis_type_id, + COALESCE(SUM(t.step = 1), 0) AS s1, + COALESCE(SUM(t.step = 2), 0) AS s2, + COALESCE(SUM(t.step = 3), 0) AS s3 + FROM provinces p + JOIN axis_types a + LEFT JOIN safety_and_privacy t + ON t.province_id = p.id + AND t.axis_type_id = a.id + AND t.info_id = :infoId + GROUP BY p.id, a.id + ) SELECT - p.id AS province_id, - a.id AS axis_type_id, - SUM(CASE WHEN t.step = 1 THEN 1 ELSE 0 END) AS s1, - SUM(CASE WHEN t.step = 2 THEN 1 ELSE 0 END) AS c2, - SUM(CASE WHEN t.step = 3 THEN 1 ELSE 0 END) AS c3 - 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 + province_id, + axis_type_id, + s1, + s2, + s3, + COALESCE( + SUM(s1 + s2 + s3) + OVER (PARTITION BY province_id), 0 + ) AS total_sum + FROM base + UNION ALL + SELECT -1 AS province_id, axis_type_id, - SUM(s1) AS s1, - SUM(c2) AS c2, - SUM(c3) AS c3 - FROM province_data + COALESCE(SUM(s1), 0) AS s1, + COALESCE(SUM(s2), 0) AS s2, + COALESCE(SUM(s3), 0) AS s3, + COALESCE( + SUM(SUM(s1 + s2 + s3)) OVER (), 0 + ) AS total_sum + FROM base GROUP BY axis_type_id + ORDER BY province_id, axis_type_id + ", [ 'infoId' => $info_id, ]); @@ -71,33 +88,49 @@ class OperatorService public function provinceActivity(int $info_id, int $province_id): array { return DB::select(" - WITH edareh_data AS ( - SELECT + 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 c1, - SUM(CASE WHEN t.step = 2 THEN 1 ELSE 0 END) AS c2, - SUM(CASE WHEN t.step = 3 THEN 1 ELSE 0 END) AS c3 - 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(s1) AS s1, - SUM(c2) AS c2, - SUM(c3) AS c3 - FROM edareh_data - GROUP BY axis_type_id - ORDER BY edareh_id, axis_type_id + COALESCE(SUM(t.step = 1), 0) AS s1, + COALESCE(SUM(t.step = 2), 0) AS s2, + COALESCE(SUM(t.step = 3), 0) AS s3 + FROM edarate_shahri e + JOIN axis_types a ON 1 + LEFT JOIN safety_and_privacy t + ON e.id = t.edare_shahri_id + AND t.axis_type_id = a.id + AND t.info_id = :infoId + WHERE e.province_id = :provinceId + GROUP BY e.id, a.id + ) + SELECT + edareh_id, + axis_type_id, + s1, + s2, + s3, + COALESCE( + SUM(s1 + s2 + s3) + OVER (PARTITION BY edareh_id), 0 + ) AS total_sum + FROM edareh_data + + UNION ALL + + SELECT + -1 AS edareh_id, + axis_type_id, + COALESCE(SUM(s1), 0) AS s1, + COALESCE(SUM(s2), 0) AS s2, + COALESCE(SUM(s3), 0) AS s3, + COALESCE( + SUM(SUM(s1 + s2 + s3)) OVER (), 0 + ) AS total_sum + 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 3b02fe17..1dcb42c3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -565,7 +565,7 @@ Route::prefix('harim') ->name('panjarevahed.') ->controller(PanjarevahedController::class) ->group(function () { - Route::post('/get_access_route','getAccessRoute')->name('getAccessRoute'); + Route::post('/get_access_road','getAccessRoad')->name('getAccessRoad'); }); });