Merge pull request #61 from witelgroup/feature/ManageReportSafty

change structure report in safty and privecy
This commit is contained in:
Amir Ghasempoor
2025-10-08 09:00:02 +03:30
committed by GitHub
4 changed files with 117 additions and 28 deletions

View File

@@ -17,9 +17,10 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
class AccessRoadActivityController extends Controller
{
use ApiResponse;
public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->countryActivity(90);
$data = $operatorService->countryActivity(90, $request);
return $this->successResponse([
'activities' => $data,
@@ -31,8 +32,8 @@ class AccessRoadActivityController extends Controller
{
$data = $operatorService->provinceActivity(
info_id: 90,
province_id: $request->input('province_id')
$request,
90,
);
return $this->successResponse([
@@ -42,7 +43,7 @@ class AccessRoadActivityController extends Controller
}
public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->countryActivity(90);
$data = $operatorService->countryActivity(90, $request);
$name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
return Excel::download(new ExcelReport($data), $name);
}
@@ -50,8 +51,8 @@ class AccessRoadActivityController extends Controller
public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->provinceActivity(
info_id: 90,
province_id: $request->input('province_id')
$request,
90,
);
$name = 'گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
return Excel::download(new AccessRoadReport($data, $request), $name);

View File

@@ -20,7 +20,7 @@ class ConstructionActivityController extends Controller
use ApiResponse;
public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->countryActivity(89);
$data = $operatorService->countryActivity(89, $request);
return $this->successResponse([
'activities' => $data,
@@ -30,8 +30,8 @@ class ConstructionActivityController extends Controller
public function provinceActivity(Request $request, OperatorService $operatorService,): JsonResponse
{
$data = $operatorService->provinceActivity(
info_id: 89,
province_id: $request->input('province_id')
$request,
89,
);
return $this->successResponse([
@@ -46,7 +46,7 @@ class ConstructionActivityController extends Controller
*/
public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->countryActivity(89);
$data = $operatorService->countryActivity(89, $request);
$name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
return Excel::download(new ExcelReport($data), $name);
@@ -59,8 +59,8 @@ class ConstructionActivityController extends Controller
public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->provinceActivity(
info_id: 89,
province_id: $request->input('province_id')
$request,
89,
);
$name = ' گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز' . verta()->now()->format('Y-m-d H-i') . '.xlsx';

View File

@@ -20,7 +20,7 @@ class UtilityPassingActivityController extends Controller
public function countryActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->countryActivity(91);
$data = $operatorService->countryActivity(91, $request);
return $this->successResponse([
'activities' => $data,
@@ -30,8 +30,8 @@ class UtilityPassingActivityController extends Controller
public function provinceActivity(Request $request, OperatorService $operatorService): JsonResponse
{
$data = $operatorService->provinceActivity(
info_id: 91,
province_id: $request->input('province_id')
$request,
91,
);
return $this->successResponse([
@@ -41,7 +41,7 @@ class UtilityPassingActivityController extends Controller
}
public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->countryActivity(91);
$data = $operatorService->countryActivity(91, $request);
$name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
return Excel::download(new ExcelReport($data), $name);
@@ -50,8 +50,8 @@ class UtilityPassingActivityController extends Controller
public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$data = $operatorService->provinceActivity(
info_id: 91,
province_id: $request->input('province_id')
$request,
91,
);
$name = 'گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';

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