From d643edebee799ea448de0bd4bab872778a4eb0b4 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 16 Jun 2025 13:12:39 +0330 Subject: [PATCH] add report for road item --- .../ReportController.php} | 39 +++++------ .../ReportService.php} | 65 +------------------ routes/v3.php | 2 +- 3 files changed, 23 insertions(+), 83 deletions(-) rename app/Http/Controllers/V3/Dashboard/{Reports/RoadItemsReportController.php => RoadItem/ReportController.php} (82%) rename app/Services/Cartables/{RoadItemTableService.php => RoadItem/ReportService.php} (67%) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php similarity index 82% rename from app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php rename to app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php index 46b47699..448ec873 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/ReportController.php @@ -1,6 +1,6 @@ countryActivityPerSubItem($request); + $activities = $reportService->countryActivityPerSubItem($request); $provinces = Province::all(['id', 'name_fa']); $subItems = InfoItem::query() ->where('item', $request->item) @@ -47,9 +48,9 @@ class RoadItemsReportController extends Controller ]); } - public function provinceActivityPerSubItem(Request $request, RoadItemTableService $roadItemTableService): JsonResponse + public function provinceActivityPerSubItem(Request $request, ReportService $reportService): JsonResponse { - $activities = $roadItemTableService->provinceActivityPerSubItem($request); + $activities = $reportService->provinceActivityPerSubItem($request); $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); @@ -64,13 +65,13 @@ class RoadItemsReportController extends Controller ]); } - public function countryActivityPerItem(Request $request, RoadItemTableService $roadItemTableService): JsonResponse + public function countryActivityPerItem(Request $request, ReportService $reportService): JsonResponse { if (auth()->check()) { auth()->user()->addActivityComplete(1033); } - $activities = $roadItemTableService->countryActivityPerItem($request); + $activities = $reportService->countryActivityPerItem($request); $provinces = Province::all(['id', 'name_fa']); return $this->successResponse([ @@ -79,9 +80,9 @@ class RoadItemsReportController extends Controller ]); } - public function provinceActivityPerItem(Request $request, RoadItemTableService $roadItemTableService): JsonResponse + public function provinceActivityPerItem(Request $request, ReportService $reportService): JsonResponse { - $activities = $roadItemTableService->provinceActivityPerItem($request); + $activities = $reportService->provinceActivityPerItem($request); $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); return $this->successResponse([ @@ -90,11 +91,11 @@ class RoadItemsReportController extends Controller ]); } - public function countryActivityExcelPerItem(Request $request, RoadItemTableService $roadItemTableService): BinaryFileResponse + public function countryActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - $activities = $roadItemTableService->countryActivityPerItem($request); + $activities = $reportService->countryActivityPerItem($request); return Excel::download(new CountryActivityPerItemReport([ 'activities' => $activities, 'provinces' => Province::all(['id', 'name_fa']), @@ -102,11 +103,11 @@ class RoadItemsReportController extends Controller ]), $name); } - public function provinceActivityExcelPerItem(Request $request, RoadItemTableService $roadItemTableService): BinaryFileResponse + public function provinceActivityExcelPerItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - $activities = $roadItemTableService->provinceActivityPerItem($request); + $activities = $reportService->provinceActivityPerItem($request); return Excel::download(new ProvinceActivityPerItemReport([ 'activities' => $activities, 'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']), @@ -114,11 +115,11 @@ class RoadItemsReportController extends Controller ]), $name); } - public function countryActivityExcelPerSubItem(Request $request, RoadItemTableService $roadItemTableService): BinaryFileResponse + public function countryActivityExcelPerSubItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); $name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - $activities = $roadItemTableService->countryActivityPerSubItem($request); + $activities = $reportService->countryActivityPerSubItem($request); $subItems = InfoItem::query() ->where('item', $request->item) ->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']); @@ -130,10 +131,10 @@ class RoadItemsReportController extends Controller ]), $name); } - public function provinceActivityExcelPerSubItem(Request $request, RoadItemTableService $roadItemTableService): BinaryFileResponse + public function provinceActivityExcelPerSubItem(Request $request, ReportService $reportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $activities = $roadItemTableService->provinceActivityPerSubItem($request); + $activities = $reportService->provinceActivityPerSubItem($request); $name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; $subItems = InfoItem::query() ->where('item', $request->item) diff --git a/app/Services/Cartables/RoadItemTableService.php b/app/Services/Cartables/RoadItem/ReportService.php similarity index 67% rename from app/Services/Cartables/RoadItemTableService.php rename to app/Services/Cartables/RoadItem/ReportService.php index 2638e5c5..7b3916ff 100644 --- a/app/Services/Cartables/RoadItemTableService.php +++ b/app/Services/Cartables/RoadItem/ReportService.php @@ -1,73 +1,12 @@ user(); - $query = null; - - if ($user->hasPermissionTo('show-road-item-supervise-cartable')) { - $query = RoadItemsProject::query() - ->select(['id', 'province_fa', 'edarat_name', 'item', 'item_fa', 'sub_item', 'sub_item_fa', 'sub_item_data', 'unit_fa', 'start_lat', 'start_lng', - 'end_lat', 'end_lng', 'activity_date_time', 'created_at', 'status_fa', 'status']) - ->where('is_new', 1) - ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); - } - elseif ($user->hasPermissionTo('show-road-item-supervise-cartable-province')) { - if (is_null($user->province_id)) { - return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!'); - } - $query = RoadItemsProject::query() - ->select(['id', 'province_fa', 'edarat_name', 'item', 'item_fa', 'sub_item', 'sub_item_fa', 'sub_item_data', 'unit_fa', 'start_lat', 'start_lng', - 'end_lat', 'end_lng', 'activity_date_time', 'created_at', 'status_fa', 'status']) - ->where('is_new', 1) - ->where('province_id', auth()->user()->province_id) - ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); - } - - $data = DataTableFacade::run( - $query, - $request, - allowedFilters: $allowedFilters, - allowedSortings: $allowedSortings); - - return $data; - } - - public function operatorCartableReport(Request $request, $loadRelations = false) - { - $allowedFilters = ['*']; - $allowedSortings = ['*']; - - $query = RoadItemsProject::query() - ->select(['id', 'province_fa', 'edarat_name', 'supervisor_description', 'item', 'item_fa', 'sub_item', 'sub_item_fa', 'sub_item_data', 'unit_fa', 'start_lat', 'start_lng', - 'end_lat', 'end_lng', 'activity_date_time', 'created_at', 'status_fa', 'status']) - ->where('is_new', 1) - ->where('user_id', auth()->user()->id) - ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number']));; - - $data = DataTableFacade::run( - $query, - $request, - allowedFilters: $allowedFilters, - allowedSortings: $allowedSortings); - - return $data; - } - public function countryActivityPerSubItem(Request $request): array { $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); diff --git a/routes/v3.php b/routes/v3.php index 393fb548..39821598 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -218,7 +218,7 @@ Route::prefix('observed_items') Route::prefix('road_item_reports') ->name('roadItemReports.') - ->controller(RoadItemsReportController::class) + ->controller(\App\Http\Controllers\V3\Dashboard\RoadItem\ReportController::class) ->group(function () { Route::get('/get_sub_items', 'getSubItems')->name('getSubItems'); Route::get('/country_activity_per_sub_item', 'countryActivityPerSubItem')->name('countryActivityPerSubItem');