diff --git a/app/Exports/V3/RoadObservation/ComplaintsReport.php b/app/Exports/V3/RoadObservation/ComplaintsReport.php new file mode 100644 index 00000000..e8012634 --- /dev/null +++ b/app/Exports/V3/RoadObservation/ComplaintsReport.php @@ -0,0 +1,67 @@ + $this->data, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial'); + $event->sheet->getDelegate()->getStyle('A:U') + ->getAlignment() + ->setHorizontal(Alignment::HORIZONTAL_CENTER); + + $event->sheet->getDelegate()->getStyle('A:U') + ->getAlignment() + ->setVertical(Alignment::VERTICAL_CENTER); + } + ]; + } + + public function drawings(): array + { + $drawing = new Drawing(); + $drawing->setName('Logo'); + $drawing->setDescription('This is my logo'); + $drawing->setPath(public_path('/dist/logo.png')); + $drawing->setWidth(50); + $drawing->setHeight(50); + $drawing->setOffsetX(5); + $drawing->setOffsetY(5); + $drawing->setCoordinates('A1'); + + $drawing2 = new Drawing(); + $drawing2->setName('Logo'); + $drawing2->setDescription('This is my logo'); + $drawing2->setPath(public_path('/dist/141icon.png')); + $drawing2->setWidth(50); + $drawing2->setHeight(50); + $drawing2->setOffsetX(5); + $drawing2->setOffsetY(5); + $drawing2->setCoordinates('q1'); + return [$drawing, $drawing2]; + } +} diff --git a/app/Http/Controllers/V3/Dashboard/RoadObservationController.php b/app/Http/Controllers/V3/Dashboard/RoadObservationController.php index 77e53de6..457f3d75 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadObservationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadObservationController.php @@ -1,6 +1,7 @@ json($roadObservationTableservice->complaintsIndex($request)); + return response()->json($roadObservationTableService->complaintsIndex($request)); + } + + public function complaintsReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse + { + $name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; + $data = $roadObservationTableService->complaintsIndex($request); + return Excel::download(new ComplaintsReport($data['data']), $name); } public function register(Request $request, RoadObserved $roadObserved, NikarayanService $nikarayanService): JsonResponse @@ -142,8 +151,7 @@ class RoadObservationController extends Controller public function refer(ReferRequest $request, RoadObserved $roadObserved): JsonResponse { - RoadObservationHistory::query()->create([ - 'id' => $roadObserved->id, + $roadObserved->problemHistories()->create([ 'user_id' => auth()->user()->id, 'action' => 'refer', 'description' => $request->refer_description, @@ -165,17 +173,18 @@ class RoadObservationController extends Controller public function referList(Request $request, RoadObserved $roadObserved): JsonResponse { - $data = RoadObservationHistory::query() - ->where('id', '=', $roadObserved->id) - ->where('action', '=', 'refer') - ->get(); + $referList = []; + $data = $roadObserved->problemHistories()->where('action', '=', 'refer')->get(); + foreach ($data as $key => $value) { - $data[$key]->from_edareh = EdarateShahri::find($value->from_edareh)->name_fa; - $data[$key]->to_edareh = EdarateShahri::find($value->to_edareh)->name_fa; - $user = User::find($value->user_id); - $data[$key]->user = $user->first_name . ' ' . $user->last_name; + $referList[$key]['from_edareh'] = EdarateShahri::query()->find($value->from_edareh)->name_fa; + $referList[$key]['to_edareh'] = EdarateShahri::query()->find($value->to_edareh)->name_fa; + $referList[$key]['from_province'] = Province::query()->find($value->from_province)->name_fa; + $referList[$key]['to_province'] = Province::query()->find($value->to_province)->name_fa; + $user = User::query()->find($value->user_id); + $referList[$key]['user'] = $user->first_name . ' ' . $user->last_name; } - return $this->successResponse($data); + return $this->successResponse($referList); } public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse @@ -200,8 +209,7 @@ class RoadObservationController extends Controller 'status_fa' => null, ]); - RoadObservationHistory::query()->create([ - 'id' => $roadObserved->id, + $roadObserved->problemHistories()->create([ 'user_id' => auth()->user()->id, 'action' => 'restore', 'description' => $request->restore_description, diff --git a/app/Services/Cartables/RoadObservationTableService.php b/app/Services/Cartables/RoadObservationTableService.php index eac2e585..0f733d94 100644 --- a/app/Services/Cartables/RoadObservationTableService.php +++ b/app/Services/Cartables/RoadObservationTableService.php @@ -26,7 +26,8 @@ class RoadObservationTableService if ($user->hasPermissionTo('supervise-fast-react')) { $query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') - ->whereNotNull('road_observeds.status'); + ->whereNotNull('road_observeds.status') + ->select($fields); } elseif ($user->hasPermissionTo('supervise-fast-react-province')) { @@ -37,7 +38,8 @@ class RoadObservationTableService $query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') ->where('road_observeds.province_id', $user->province_id) - ->whereNotNull('road_observeds.status'); + ->whereNotNull('road_observeds.status') + ->select($fields); } return DataTableFacade::run( @@ -96,7 +98,10 @@ class RoadObservationTableService if ($user->hasPermissionTo('show-fast-react')) { $query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') ->where('rms_status', '=', 0) - ->whereNotNull('edarate_shahri_id'); + ->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'); } elseif ($user->hasPermissionTo('show-fast-react-province')) { @@ -106,8 +111,11 @@ class RoadObservationTableService $query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') ->where('rms_status', '=', 0) - ->whereNotNull('edarate_shahri_id') - ->where('road_observeds.province_id', '=', $user->province_id); + ->whereNotNull('road_observeds.province_id') + ->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'); } elseif ($user->hasPermissionTo('show-fast-react-edarate-shahri')) { @@ -119,7 +127,10 @@ class RoadObservationTableService $query = RoadObserved::query()->leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') ->where('rms_status', '=', 0) ->whereNotNull('edarate_shahri_id') - ->where('edarate_shahri_id', '=', $user->edarate_shahri_id); + ->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'); } diff --git a/app/Services/Cartables/RoadPatrolTableService.php b/app/Services/Cartables/RoadPatrolTableService.php index c6f38395..d43a45d7 100644 --- a/app/Services/Cartables/RoadPatrolTableService.php +++ b/app/Services/Cartables/RoadPatrolTableService.php @@ -21,7 +21,7 @@ class RoadPatrolTableService $query = RoadPatrol::query() ->select([ 'province_fa', 'province_id', 'id', 'edare_id', 'edare_name', 'start_time', 'end_time', 'created_at', 'description', - 'distance', 'vehicle_runtime', 'fuel_consumption', 'stop_points,' + 'distance', 'vehicle_runtime', 'fuel_consumption', 'stop_points' ]) ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); } @@ -32,7 +32,7 @@ class RoadPatrolTableService $query = RoadPatrol::query() ->select([ 'province_fa', 'province_id', 'id', 'edare_id', 'edare_name', 'start_time', 'end_time', 'created_at', 'description', - 'distance', 'vehicle_runtime', 'fuel_consumption', 'stop_points,' + 'distance', 'vehicle_runtime', 'fuel_consumption', 'stop_points' ]) ->where('province_id', '=', $user->province_id) ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); @@ -55,7 +55,7 @@ class RoadPatrolTableService $query = RoadPatrol::query() ->select([ 'province_fa', 'province_id', 'id', 'edare_id', 'edare_name', 'start_time', 'end_time', 'created_at', 'description', - 'distance', 'vehicle_runtime', 'fuel_consumption', 'stop_points,' + 'distance', 'vehicle_runtime', 'fuel_consumption', 'stop_points' ]) ->where('operator_id', '=', auth()->user()->id) ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); diff --git a/resources/views/v3/Reports/RoadObservation/ComplaintsReport.blade.php b/resources/views/v3/Reports/RoadObservation/ComplaintsReport.blade.php new file mode 100644 index 00000000..e2d061ba --- /dev/null +++ b/resources/views/v3/Reports/RoadObservation/ComplaintsReport.blade.php @@ -0,0 +1,93 @@ + + + + + + + + گزارش واکنش سریع + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($data as $item) + + + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش رسیدگی به شکایات واکنش سریع +
کد + سوانح + استان + + ادارات شهری + + موضوع گزارش + + نوع گزارش + توضیح گزارش + موقعیت مکانی + شماره تماس گیرنده + تاریخ ثبت گزارش
{{ $item['fk_RegisteredEventMessage'] ?? '-' }}{{ $item['province_fa'] ?? '-' }}{{ $item['edarate_shahri_name_fa'] ?? '-' }}{{ $item['Title'] ?? '-' }}{{ $item['FeatureTypeTitle'] ?? '-' }}{{ $item['Description'] ?? '-' }}{{ isset($item['lat']) && isset($item['lng']) ? $item['lat'] . ' ' . $item['lng'] : '-' }}{{ $item['MobileForSendEventSms'] ?? '-' }}{{ $item['created_at'] ? verta($item['created_at'])->format('Y/n/j H:i:s') : '-' }}
+ + diff --git a/routes/v3.php b/routes/v3.php index 86e0c5fc..b498fc9b 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -298,4 +298,5 @@ Route::prefix('road_observations') Route::post('/restore/{roadObserved}', 'restore') ->middleware('permission:restore-fast-react') ->name('restore'); + Route::get('/complaints_report', 'complaintsReport')->name('complaintsReport'); });