create new thing

This commit is contained in:
2025-08-27 10:44:23 +03:30
parent 3049556f0c
commit 68796489f8
4 changed files with 81 additions and 48 deletions

View File

@@ -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,

View File

@@ -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.

View File

@@ -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,

View File

@@ -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');
});
});