diff --git a/app/Exports/V3/RoadObservation/SupervisorCartableReport.php b/app/Exports/V3/RoadObservation/SupervisorCartableReport.php new file mode 100644 index 00000000..224be733 --- /dev/null +++ b/app/Exports/V3/RoadObservation/SupervisorCartableReport.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 new file mode 100644 index 00000000..beb8bb69 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/RoadObservationController.php @@ -0,0 +1,56 @@ + supervisorCartableIndex($request); + foreach ($data['data'] as &$roadItem) { + $roadItem['can_supervise'] = Gate::allows('gate-supervise-road-item', $roadItem) ? 1 : 0; + } + + return response()->json($data); + } + + public function verifyBySupervisor(VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse + { + $statusFa = $request->verify == 1 ? 'تایید شده' : 'عدم تایید'; + + $roadObserved->update([ + 'status' => $request->verify, + 'status_fa' => $statusFa, + 'supervisor_id' => Auth::id(), + 'supervisor_name' => Auth::user()->name, + 'supervisor_description' => $request->description, + 'supervising_time' => now(), + ]); + + Auth::user()->addActivityComplete(1138); + + return response()->json(['status' => 'succeed']); + } + + + public function supervisorCartableReport (Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse + + { + $name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d') . '.xlsx'; + $data = $roadObservationTableService->supervisorCartableIndex($request, true); + + return Excel::download(new SupervisorCartableReport($data['data']), $name); +} + +} diff --git a/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php b/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php new file mode 100644 index 00000000..32d4b335 --- /dev/null +++ b/app/Http/Requests/V3/RoadObservation/VerifyBySupervisorRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + {return [ + 'verify' => ['required', 'in:1,2'], + 'description' => ['nullable', 'string'], + ]; + } +} diff --git a/app/Services/Cartables/RoadObservationTableService.php b/app/Services/Cartables/RoadObservationTableService.php new file mode 100644 index 00000000..035e6445 --- /dev/null +++ b/app/Services/Cartables/RoadObservationTableService.php @@ -0,0 +1,28 @@ +user(); + + if ($user->hasPermissionTo('supervise-fast-react')) { + $query = RoadObserved::query(); + } + elseif ($user->hasPermissionTo('supervise-fast-react-province') && $user->province_id) { + $query = RoadObserved::where('province_id', $user->province_id); + } + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*']); + } +} \ No newline at end of file diff --git a/routes/v3.php b/routes/v3.php index 584c6178..7c618393 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -12,6 +12,7 @@ use App\Http\Controllers\V3\Dashboard\AccidentReceiptController; use App\Http\Controllers\V3\Dashboard\Reports\RoadItemsReportController; use App\Http\Controllers\V3\Dashboard\Reports\RoadPatrolReportController; use App\Http\Controllers\V3\Dashboard\RoadItemsProjectController; +use App\Http\Controllers\V3\Dashboard\RoadObservationController; use App\Http\Controllers\V3\Dashboard\RoadPatrolProjectController; use App\Http\Controllers\V3\FMSVehicleManagementController; use App\Http\Controllers\V3\Harim\DivarkeshiController; @@ -265,3 +266,13 @@ Route::prefix('receipt_reports') Route::get('/province_excel_report', 'provinceExcelReport')->name('provinceExcelReport'); Route::get('/city_excel_report', 'cityExcelReport')->name('cityExcelReport'); }); + +Route::prefix('road_observations') + ->name('roadObservations.') + ->middleware('permission:manage-road-observation') + ->controller(RoadObservationController::class) + ->group(function () { + Route::get('/', 'supervisorIndex')->name('index'); + Route::post('/verify/{road_observed}', 'verifyBySupervisor')->name('verifyBySupervisor'); + Route::get('/report', 'supervisorReport')->name('report'); + });