From 2b132959d348c349c37084dc957763a609bfe6bd Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 26 Feb 2025 10:56:08 +0330 Subject: [PATCH] create report cartable --- .../RoadObservationReportController.php | 28 +++++++++ .../Cartables/RoadItemTableService.php | 6 +- .../Cartables/RoadObservationTableService.php | 59 ++++++++++++++++--- 3 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 app/Http/Controllers/V3/Dashboard/Reports/RoadObservationReportController.php diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadObservationReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadObservationReportController.php new file mode 100644 index 00000000..eb20abf8 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadObservationReportController.php @@ -0,0 +1,28 @@ +reportIndex($request); + return response()->json($data['data']); + } + + public function excelReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse + { + $name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $data = $roadObservationTableService->reportIndex($request); + return Excel::download(new ReportComplaintsExport($data), $name); + } +} diff --git a/app/Services/Cartables/RoadItemTableService.php b/app/Services/Cartables/RoadItemTableService.php index 0ff0a29f..0b64e741 100644 --- a/app/Services/Cartables/RoadItemTableService.php +++ b/app/Services/Cartables/RoadItemTableService.php @@ -21,7 +21,7 @@ class RoadItemTableService if ($user->hasPermissionTo('show-road-item-supervise-cartable')) { $query = RoadItemsProject::query() - ->select(['id', 'province_fa', 'edarat_name', 'item_id', 'item_fa', 'sub_item_id', 'sub_item_fa', 'sub_item_data', 'unit_fa', 'start_lat', 'start_lng', + ->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'])); @@ -31,7 +31,7 @@ class RoadItemTableService return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!'); } $query = RoadItemsProject::query() - ->select(['id', 'province_fa', 'edarat_name', 'item_id', 'item_fa', 'sub_item_id', 'sub_item_fa', 'sub_item_data', 'unit_fa', 'start_lat', 'start_lng', + ->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) @@ -53,7 +53,7 @@ class RoadItemTableService $allowedSortings = ['*']; $query = RoadItemsProject::query() - ->select(['id', 'supervisor_description', 'item_id', 'item_fa', 'sub_item_id', 'sub_item_fa', 'sub_item_data', 'unit_fa', 'start_lat', 'start_lng', + ->select(['id', '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) diff --git a/app/Services/Cartables/RoadObservationTableService.php b/app/Services/Cartables/RoadObservationTableService.php index a245656a..e70bf2b9 100644 --- a/app/Services/Cartables/RoadObservationTableService.php +++ b/app/Services/Cartables/RoadObservationTableService.php @@ -19,8 +19,8 @@ class RoadObservationTableService 'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', 'rms_description', 'rms_status', 'rms_last_activity_fa', 'rms_last_activity', - 'road_observeds.province_id', 'province_fa', 'city_fa', 'edarate_shahri.name_fa', - 'status', 'status_fa', 'supervisor_description', 'supervising_time' + 'road_observeds.province_id', 'province_fa', 'city_id', 'city_fa', 'edarate_shahri.name_fa', + 'status', 'status_fa', 'supervisor_description', 'supervising_time', 'image_after', 'image_before' ]; @@ -56,13 +56,13 @@ class RoadObservationTableService $fields = [ 'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', - 'rms_description', 'rms_status', 'rms_start_latlng', 'rms_last_activity_fa', - 'rms_last_activity', 'road_observeds.province_id', 'province_fa', 'city_fa', + 'rms_description', 'rms_status', 'rms_start_latlng', 'rms_last_activity_fa', 'image_after', 'image_before', + 'rms_last_activity', 'road_observeds.province_id', 'province_fa', 'city_id', 'city_fa', 'edarate_shahri.name_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time' ]; $query = RoadObserved::query() - ->where('rms_status', '!=', 0) + ->where('rms_status', '<>', 0) ->whereNotNull('road_observeds.province_id') ->whereNotNull('status') ->leftJoin('edarate_shahri', 'road_observeds.edarate_shahri_id', '=', 'edarate_shahri.id') @@ -97,7 +97,7 @@ class RoadObservationTableService ->whereNotNull('edarate_shahri_id') ->selectRaw('fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms, road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status, - status_fa, supervisor_description, rms_description, province_fa, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng' + status_fa, supervisor_description, rms_description, province_fa, city_id, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng' ); } elseif ($user->hasPermissionTo('show-fast-react-province')) { @@ -112,7 +112,7 @@ class RoadObservationTableService ->where('road_observeds.province_id', '=', $user->province_id) ->selectRaw('fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms, road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status, - status_fa, supervisor_description, rms_description, province_fa, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng' + status_fa, supervisor_description, rms_description, province_fa, city_id, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng' ); } @@ -128,7 +128,7 @@ class RoadObservationTableService ->where('edarate_shahri_id', '=', $user->edarate_shahri_id) ->selectRaw('fk_RegisteredEventMessage, road_observeds.id, Title, FeatureTypeTitle, MobileForSendEventSms, road_observeds.created_at, rms_last_activity, rms_last_activity_fa, status, - status_fa, supervisor_description, rms_description, province_fa, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng' + status_fa, supervisor_description, rms_description, province_fa, city_id, city_fa, Description, edarate_shahri.name_fa as edarate_shahri_name_fa, lat, lng' ); } @@ -140,4 +140,47 @@ class RoadObservationTableService allowedSortings: ['*'] ); } + + public function reportIndex(Request $request) + { + $fromDate = $request->from_date . ' 00:00:00'; + $toDate = $request->date_to . ' 23:59:59'; + + $fields = [ + 'fk_RegisteredEventMessage', + 'road_observeds.id', + 'Title', + 'road_observeds.created_at', + 'lat', + 'lng', + 'FeatureTypeTitle', + 'Description', + 'MobileForSendEventSms', + 'road_observeds.province_id', + 'province_fa', + 'city_fa', + 'edarate_shahri.name_fa', + 'rms_last_activity_fa', + 'rms_description' + ]; + + $query = RoadObserved::leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') + ->where('rms_status', "<>", 0) + ->whereNotNull('edarate_shahri_id') + ->whereBetween('road_observeds.created_at', [$fromDate, $toDate]) + ->select($fields); + + $data = DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'] + ); + + return [ + 'data' => $data, + 'fromDate' => $fromDate, + 'toDate' => $toDate, + ]; + } } \ No newline at end of file