change structure report in safty and privecy

This commit is contained in:
2025-10-07 14:58:56 +03:30
parent c3b7780cf6
commit 6d0fa61989
4 changed files with 117 additions and 28 deletions

View File

@@ -34,8 +34,38 @@ class OperatorService
);
}
public function countryActivity(int $info_id): array
public function countryActivity(int $info_id, Request $request): array
{
$params = [
'infoId' => $info_id,
];
$dateFields = [
'created_at',
'activity_date_time',
'judiciary_document_upload_date',
'action_date',
];
foreach ($dateFields as $field) {
$params["{$field}_from"] = null;
$params["{$field}_to"] = null;
$params["{$field}_from_2"] = null;
$params["{$field}_to_2"] = null;
}
foreach (json_decode($request->filters, true) as $filter) {
if ($filter['fn'] === "between")
{
$field = $filter['id'];
$params["{$field}_from"] = $filter['value'][0] . ' 00:00:00';
$params["{$field}_to"] = $filter['value'][1] . ' 23:59:59';
$params["{$field}_from_2"] = $filter['value'][0] . ' 00:00:00';
$params["{$field}_to_2"] = $filter['value'][1] . ' 23:59:59';
}
}
return DB::select("
WITH base AS (
SELECT
@@ -51,6 +81,21 @@ class OperatorService
ON t.province_id = p.id
AND t.axis_type_id = a.id
AND t.info_id = :infoId
AND (
(:created_at_from IS NULL OR :created_at_to IS NULL)
OR t.created_at BETWEEN :created_at_from_2 AND :created_at_to_2)
AND (
(:activity_date_time_from IS NULL OR :activity_date_time_to IS NULL)
OR t.activity_date_time BETWEEN :activity_date_time_from_2 AND :activity_date_time_to_2
)
AND (
(:judiciary_document_upload_date_from IS NULL OR :judiciary_document_upload_date_to IS NULL)
OR t.judiciary_document_upload_date BETWEEN :judiciary_document_upload_date_from_2 AND :judiciary_document_upload_date_to_2
)
AND (
(:action_date_from IS NULL OR :action_date_to IS NULL)
OR t.action_date BETWEEN :action_date_from_2 AND :action_date_to_2
)
GROUP BY p.id, a.id
)
SELECT
@@ -83,13 +128,44 @@ class OperatorService
ORDER BY province_id, axis_type_id
", [
'infoId' => $info_id,
]);
",$params);
}
public function provinceActivity(int $info_id, int $province_id): array
public function provinceActivity(Request $request, int $info_id): array
{
$params = [
'infoId' => $info_id,
];
$dateFields = [
'created_at',
'activity_date_time',
'judiciary_document_upload_date',
'action_date',
];
foreach ($dateFields as $field) {
$params["{$field}_from"] = NULL;
$params["{$field}_to"] = NULL;
$params["{$field}_from_2"] = NULL;
$params["{$field}_to_2"] = NULL;
}
foreach (json_decode($request->filters, true) as $filter) {
if ($filter['fn'] === "between")
{
$field = $filter['id'];
$params["{$field}_from"] = $filter['value'][0] . ' 00:00:00';
$params["{$field}_to"] = $filter['value'][1] . ' 23:59:59';
$params["{$field}_from_2"] = $filter['value'][0] . ' 00:00:00';
$params["{$field}_to_2"] = $filter['value'][1] . ' 23:59:59';
}
if ($filter['id'] === "province_id")
{
$params["provinceId"] = $filter['value'];
}
}
return DB::select("
WITH edareh_data AS (
SELECT
@@ -105,6 +181,21 @@ class OperatorService
ON e.id = t.edare_shahri_id
AND t.axis_type_id = a.id
AND t.info_id = :infoId
AND (
(:created_at_from IS NULL OR :created_at_to IS NULL)
OR t.created_at BETWEEN :created_at_from_2 AND :created_at_to_2)
AND (
(:activity_date_time_from IS NULL OR :activity_date_time_to IS NULL)
OR t.activity_date_time BETWEEN :activity_date_time_from_2 AND :activity_date_time_to_2
)
AND (
(:judiciary_document_upload_date_from IS NULL OR :judiciary_document_upload_date_to IS NULL)
OR t.judiciary_document_upload_date BETWEEN :judiciary_document_upload_date_from_2 AND :judiciary_document_upload_date_to_2
)
AND (
(:action_date_from IS NULL OR :action_date_to IS NULL)
OR t.action_date BETWEEN :action_date_from_2 AND :action_date_to_2
)
WHERE e.province_id = :provinceId
GROUP BY e.id, a.id
)
@@ -137,9 +228,6 @@ class OperatorService
GROUP BY axis_type_id
ORDER BY edare_id , axis_type_id
", [
'provinceId' => $province_id,
'infoId' => $info_id,
]);
", $params);
}
}