diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php new file mode 100644 index 00000000..a5f33307 --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php @@ -0,0 +1,129 @@ +fromDate ?? '2021-03-21 00:00:00'; + $toDate = $this->toDate ?? \Carbon\Carbon::now(); + + $query = "SELECT + COUNT(CASE WHEN item = 1 THEN 1 END) AS MarematRooyeCount, + COUNT(CASE WHEN item = 2 THEN 1 END) AS PaksaziCount, + COUNT(CASE WHEN item = 3 THEN 1 END) AS AlaemCount, + COUNT(CASE WHEN item = 4 THEN 1 END) AS HefazCount, + COUNT(CASE WHEN item = 5 THEN 1 END) AS RoshanayiCount, + COUNT(CASE WHEN item = 6 THEN 1 END) AS KhatkeshiCount, + COUNT(CASE WHEN item = 7 THEN 1 END) AS RangamiziCount, + COUNT(CASE WHEN item = 8 THEN 1 END) AS WashingCount, + COUNT(CASE WHEN item = 9 THEN 1 END) AS ImenSaziCount, + COUNT(CASE WHEN item = 10 THEN 1 END) AS HarimCount, + COUNT(CASE WHEN item = 11 THEN 1 END) AS PolCount, + COUNT(CASE WHEN item = 12 THEN 1 END) AS ToonelCount, + COUNT(CASE WHEN item = 13 THEN 1 END) AS AmaliatZemestaniCount, + COUNT(CASE WHEN item = 14 THEN 1 END) AS MashinAlatCount, + COUNT(CASE WHEN item = 15 THEN 1 END) AS TollhouseCount, + COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount, + province_fa, + province_id, + COUNT(CASE WHEN item != 20 THEN 1 END) AS TotalProvinceCount + FROM ( + SELECT + province_fa, + province_id, + item, + status + FROM road_items_projects + WHERE activity_date_time BETWEEN '{$fromDate}' and '{$toDate}' + ) AS merged_table + WHERE status = 1 + GROUP BY province_id, province_fa;"; + + $provinceActivities = collect(DB::select($query)); + + $totalItemCount = [ + 'totalMarematRooyeCount' => $provinceActivities->sum('MarematRooyeCount'), + 'totalPaksaziCount' => $provinceActivities->sum('PaksaziCount'), + 'totalAlaemCount' => $provinceActivities->sum('AlaemCount'), + 'totalHefazCount' => $provinceActivities->sum('HefazCount'), + 'totalRoshanayiCount' => $provinceActivities->sum('RoshanayiCount'), + 'totalKhatkeshiCount' => $provinceActivities->sum('KhatkeshiCount'), + 'totalRangamiziCount' => $provinceActivities->sum('RangamiziCount'), + 'totalWashingCount' => $provinceActivities->sum('WashingCount'), + 'totalImenSaziCount' => $provinceActivities->sum('ImenSaziCount'), + 'totalHarimCount' => $provinceActivities->sum('HarimCount'), + 'totalPolCount' => $provinceActivities->sum('PolCount'), + 'totalToonelCount' => $provinceActivities->sum('ToonelCount'), + 'totalAmaliatZemestaniCount' => $provinceActivities->sum('AmaliatZemestaniCount'), + 'totalMashinAlatCount' => $provinceActivities->sum('MashinAlatCount'), + 'totalTollhouseCount' => $provinceActivities->sum('TollhouseCount'), + 'totalEmergencyCount' => $provinceActivities->sum('EmergencyCount'), + 'totalCountryCount' => $provinceActivities->sum('TotalProvinceCount'), + ]; + + return view('v3.Reports.RoadItems.CountryActivityPerItem', [ + 'provinceCount' => $provinceActivities, + 'countryCount' => $totalItemCount, + 'fromDate' => $fromDate, + 'toDate' => $toDate + ]); + } + + 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]; + } +} \ No newline at end of file diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php new file mode 100644 index 00000000..16fc87cf --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php @@ -0,0 +1,70 @@ +activities; + + return view('v3.Reports.RoadItems.CountryActivityPerSubItem', [ + 'activities' => $activities["data"], + 'fromDate' => $activities["fromDate"], + 'toDate' => $activities["toDate"], + 'details' => $activities["details"] + ]); + } + + 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]; + } +} \ No newline at end of file diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php new file mode 100644 index 00000000..7b8f99b2 --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php @@ -0,0 +1,137 @@ +fromDate ?? '2021-03-21 00:00:00'; + $toDate = $this->toDate ?? \Carbon\Carbon::now(); + + $query = "SELECT + COUNT(CASE WHEN item = 1 THEN 1 END) AS MarematRooyeCount, + COUNT(CASE WHEN item = 2 THEN 1 END) AS PaksaziCount, + COUNT(CASE WHEN item = 3 THEN 1 END) AS AlaemCount, + COUNT(CASE WHEN item = 4 THEN 1 END) AS HefazCount, + COUNT(CASE WHEN item = 5 THEN 1 END) AS RoshanayiCount, + COUNT(CASE WHEN item = 6 THEN 1 END) AS KhatkeshiCount, + COUNT(CASE WHEN item = 7 THEN 1 END) AS RangamiziCount, + COUNT(CASE WHEN item = 8 THEN 1 END) AS WashingCount, + COUNT(CASE WHEN item = 9 THEN 1 END) AS ImenSaziCount, + COUNT(CASE WHEN item = 10 THEN 1 END) AS HarimCount, + COUNT(CASE WHEN item = 11 THEN 1 END) AS PolCount, + COUNT(CASE WHEN item = 12 THEN 1 END) AS ToonelCount, + COUNT(CASE WHEN item = 13 THEN 1 END) AS AmaliatZemestaniCount, + COUNT(CASE WHEN item = 14 THEN 1 END) AS MashinAlatCount, + COUNT(CASE WHEN item = 15 THEN 1 END) AS TollhouseCount, + COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount, + province_fa, + province_id, + edarat_name, + edarat_id, + COUNT(CASE WHEN item != 20 THEN 1 END) AS TotalCityCount + FROM ( + SELECT + province_fa, + province_id, + edarat_name, + edarat_id, + item, + status + FROM road_items_projects + WHERE activity_date_time BETWEEN '{$fromDate}' and '{$toDate}' + ) AS merged_table + WHERE status = 1 + AND province_id = {$this->provinceId} + GROUP BY edarat_id, edarat_name order by province_id ASC;"; + + $cityActivities = collect(DB::select($query)); + + $totalItemCount = [ + 'totalMarematRooyeCount' => $cityActivities->sum('MarematRooyeCount'), + 'totalPaksaziCount' => $cityActivities->sum('PaksaziCount'), + 'totalAlaemCount' => $cityActivities->sum('AlaemCount'), + 'totalHefazCount' => $cityActivities->sum('HefazCount'), + 'totalRoshanayiCount' => $cityActivities->sum('RoshanayiCount'), + 'totalKhatkeshiCount' => $cityActivities->sum('KhatkeshiCount'), + 'totalRangamiziCount' => $cityActivities->sum('RangamiziCount'), + 'totalWashingCount' => $cityActivities->sum('WashingCount'), + 'totalImenSaziCount' => $cityActivities->sum('ImenSaziCount'), + 'totalHarimCount' => $cityActivities->sum('HarimCount'), + 'totalPolCount' => $cityActivities->sum('PolCount'), + 'totalToonelCount' => $cityActivities->sum('ToonelCount'), + 'totalAmaliatZemestaniCount' => $cityActivities->sum('AmaliatZemestaniCount'), + 'totalMashinAlatCount' => $cityActivities->sum('MashinAlatCount'), + 'totalTollhouseCount' => $cityActivities->sum('TollhouseCount'), + 'totalEmergencyCount' => $cityActivities->sum('EmergencyCount'), + 'TotalProvinceCount' => $cityActivities->sum('TotalCityCount'), + ]; + + return view('v3.Reports.RoadItems.ProvinceActivityPerItem', [ + 'cityCount' => $cityActivities, + 'provinceCount' => $totalItemCount, + 'fromDate' => $fromDate, + 'toDate' => $toDate + ]); + } + + 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]; + } +} \ No newline at end of file diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php new file mode 100644 index 00000000..2d8aad5a --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php @@ -0,0 +1,75 @@ +activities; + + return view('v3.Reports.RoadItems.ProvinceActivityPerSubItem', [ + 'activities' => $activities["data"], + 'fromDate' => $activities["fromDate"], + 'toDate' => $activities["toDate"], + 'details' => $activities["details"] + ]); + } + + 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]; + } +} \ No newline at end of file diff --git a/app/Exports/V3/RoadPatrols/CountryActivity.php b/app/Exports/V3/RoadPatrols/CountryActivity.php new file mode 100644 index 00000000..29be9cff --- /dev/null +++ b/app/Exports/V3/RoadPatrols/CountryActivity.php @@ -0,0 +1,70 @@ +activities; + + return view('v3.Reports.RoadPatrols.CountryActivity', [ + 'activities' => $activities["activities"], + 'fromDate' => $activities["fromDate"], + 'toDate' => $activities["toDate"] + ]); + } + + 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]; + } +} \ No newline at end of file diff --git a/app/Exports/V3/RoadPatrols/ProvinceActivity.php b/app/Exports/V3/RoadPatrols/ProvinceActivity.php new file mode 100644 index 00000000..1d7d0d8d --- /dev/null +++ b/app/Exports/V3/RoadPatrols/ProvinceActivity.php @@ -0,0 +1,70 @@ +activities; + + return view('v3.Reports.RoadPatrols.ProvinceActivity', [ + 'activities' => $activities["activities"], + 'fromDate' => $activities["fromDate"], + 'toDate' => $activities["toDate"] + ]); + } + + 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]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/DevelopController.php b/app/Http/Controllers/DevelopController.php index 9fa55bde..d7eaec3e 100644 --- a/app/Http/Controllers/DevelopController.php +++ b/app/Http/Controllers/DevelopController.php @@ -658,7 +658,7 @@ class DevelopController extends Controller $save = $file->move(storage_path('images'), $fileName); - \App\Helpers\Compress::resize($save); +// \App\Helpers\Compress::resize($save); return response()->json(['msg' => 'ok']); } diff --git a/app/Http/Controllers/RoadItemsProjectController.php b/app/Http/Controllers/RoadItemsProjectController.php index ff774208..502f8ad1 100644 --- a/app/Http/Controllers/RoadItemsProjectController.php +++ b/app/Http/Controllers/RoadItemsProjectController.php @@ -154,13 +154,13 @@ class RoadItemsProjectController extends Controller $after = $request->file('after_image')->store('road_items_projects_new/after', 'public'); $roadItems->files()->create(['path' => $after]); $urlAfter = "/var/www/rms/public/storage/{$after}"; - \App\Helpers\Compress::resize($urlAfter); +// \App\Helpers\Compress::resize($urlAfter); } if ($request->has('before_image')) { $before = $request->file('before_image')->store('/road_items_projects_new/before', 'public'); $roadItems->files()->create(['path' => $before]); $urlBefore = "/var/www/rms/public/storage/{$before}"; - \App\Helpers\Compress::resize($urlBefore); +// \App\Helpers\Compress::resize($urlBefore); } if (auth()->user()) { diff --git a/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php b/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php index 445db4ad..e6e8e907 100644 --- a/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php +++ b/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php @@ -372,7 +372,7 @@ class RoadItemsProjectController extends Controller ]); // $road_item->files()->create(['path' => $after]); $urlAfter = "/var/www/rms/public/storage/{$after}"; - \App\Helpers\Compress::resize($urlAfter); +// \App\Helpers\Compress::resize($urlAfter); } if ($request->has('before_image')) { Storage::delete('public/'. $road_item->files[1]->path); @@ -383,7 +383,7 @@ class RoadItemsProjectController extends Controller ]); // $road_item->files()->create(['path' => $before]); $urlBefore = "/var/www/rms/public/storage/{$before}"; - \App\Helpers\Compress::resize($urlBefore); +// \App\Helpers\Compress::resize($urlBefore); } } diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 5c0d789c..be92abb6 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -2,13 +2,17 @@ namespace App\Http\Controllers\V3\Dashboard\Reports; -use App\Exports\Activities\One\AllSheets as OneSheet; +use App\Exports\V3\RoadItemsProjects\CountryActivityPerItemReport; +use App\Exports\V3\RoadItemsProjects\CountryActivityPerSubItemReport; +use App\Exports\V3\RoadItemsProjects\ProvinceActivityPerItemReport; +use App\Exports\V3\RoadItemsProjects\ProvinceActivityPerSubItemReport; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; use App\Models\InfoItem; use App\Models\Province; use App\Models\RoadItemsProject; +use App\Services\Reports\RoadItemReportService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; @@ -224,38 +228,48 @@ class RoadItemsReportController extends Controller return $this->successResponse($data); } - public function activityExcelPerItem(Request $request): BinaryFileResponse + public function countryActivityExcelPerItem(Request $request): BinaryFileResponse { auth()->user()->addActivityComplete(1034); - $name = 'گزارش از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new OneSheet($request->fromDate, $request->toDate, $request->province), $name); + $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + return Excel::download(new CountryActivityPerItemReport($request->fromDate, $request->toDate), $name); } - public function activityExcelPerSubItem(Request $request) + public function provinceActivityExcelPerItem(Request $request): BinaryFileResponse { - $url_correction = $request->province ? "&province={$request->province}" : ""; + auth()->user()->addActivityComplete(1034); + $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + return Excel::download(new ProvinceActivityPerItemReport($request->fromDate, $request->toDate, $request->province), $name); + } - return match ($request->type) { - 1 => redirect("/reports/two/maremat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 2 => redirect("/reports/two/paksazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 3 => redirect("/reports/two/alaem?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 4 => redirect("/reports/two/hefaz?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 5 => redirect("/reports/two/roshanaei?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 6 => redirect("/reports/two/khatkeshi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 7 => redirect("/reports/two/rangamizi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 8 => redirect("/reports/two/shosteshoo?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 9 => redirect("/reports/two/imensazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 10 => redirect("/reports/two/harim?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 11 => redirect("/reports/two/pol?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 12 => redirect("/reports/two/toonel?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 13 => redirect("/reports/two/zemestani?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 14 => redirect("/reports/two/mashinalat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 15 => redirect("/reports/two/rahdar?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 16 => redirect("/reports/two/ezterari?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - 20 => redirect("/reports/two/bazrasi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), - default => response()->json([ - 'error' => '404' - ], 404), - }; + public function countryActivityExcelPerSubItem(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse + { + auth()->user()->addActivityComplete(1034); + + $activities = $roadItemReportService->countryActivityPerSubItem( + $request->item, + $request->fromDate, + $request->toDate, + ); + + $name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + + return Excel::download(new CountryActivityPerSubItemReport($activities), $name); + } + + public function provinceActivityExcelPerSubItem(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse + { + auth()->user()->addActivityComplete(1034); + + $activities = $roadItemReportService->provinceActivityPerSubItem( + $request->item, + $request->fromDate, + $request->toDate, + $request->province_id + ); + + $name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + + return Excel::download(new ProvinceActivityPerSubItemReport($activities), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index 26e218ba..8df975dd 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -2,69 +2,27 @@ namespace App\Http\Controllers\V3\Dashboard\Reports; -use App\Exports\V2\RoadPatrol\RoadPatrolTable\AllSheets as RoadPatrolTable; +use App\Exports\V3\RoadPatrols\CountryActivity; +use App\Exports\V3\RoadPatrols\ProvinceActivity; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; use App\Models\Province; -use App\Models\RoadPatrolProject; +use App\Services\Reports\RoadPatrolReportService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; class RoadPatrolReportController extends Controller { use ApiResponse; - public function provincePatrolActivity(Request $request): JsonResponse + public function countryPatrolActivity(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse { $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); - $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); + $toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); - $activities = DB::select('SELECT - "کشوری" as province_fa, - -1 as province_id, - COUNT(*) tedade, - SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, - SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, - SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, - SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, - SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, - ROUND(SUM(distance)) as masafat_tey_shode - FROM (SELECT - province_id, - province_fa, - distance, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode - FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp - union - SELECT - province_fa, - province_id, - COUNT(*) tedade, - SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, - SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, - SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, - SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, - SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, - ROUND(SUM(distance)) as masafat_tey_shode - FROM (SELECT - province_id, - province_fa, - distance, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode - FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp - GROUP BY province_id' - ); + $activities = $roadPatrolReportService->countryActivity($fromDate, $toDate); $provinces = Province::all(['id', 'name_fa']); @@ -74,66 +32,14 @@ class RoadPatrolReportController extends Controller ]); } - public function cityPatrolActivity(Request $request): JsonResponse + public function provincePatrolActivity(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse { $request->validate(["province_id" => "required",]); $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); - $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); + $toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); $provinceId = $request->province_id; - $activities = DB::select( - 'SELECT - province_fa, - province_id, - -1 AS edare_id, - "استانی" AS edare_name, - COUNT(*) tedade, - SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, - SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, - SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, - SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, - SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, - ROUND(SUM(distance)) as masafat_tey_shode - FROM (SELECT - province_id, - province_fa, - edare_id, - edare_name, - distance, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode - FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp - UNION - SELECT - province_fa, - province_id, - edare_id, - edare_name, - COUNT(*) tedade, - SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, - SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, - SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, - SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, - SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, - ROUND(SUM(distance)) as masafat_tey_shode - FROM (SELECT - province_id, - province_fa, - edare_id, - edare_name, - distance, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, - (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, - (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode - FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp - GROUP BY edare_id - ' - ); + $activities = $roadPatrolReportService->provinceActivity($fromDate, $toDate, $provinceId); $edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']); @@ -143,12 +49,21 @@ class RoadPatrolReportController extends Controller ]); } - public function excel(Request $request): BinaryFileResponse + public function countryActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse { + $activities = $roadPatrolReportService->countryActivity($request->from_date, $request->to_date); + $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download( - new RoadPatrolTable($request->from_date, $request->date_to), $name - ); + return Excel::download(new CountryActivity($activities), $name); + } + + public function provinceActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse + { + $activities = $roadPatrolReportService->provinceActivity($request->from_date, $request->to_date, $request->province_id); + + $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + + return Excel::download(new ProvinceActivity($activities), $name); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php b/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php index 0d9ecc5e..c2a7d122 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php @@ -35,7 +35,7 @@ class RoadItemsProjectController extends Controller 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item', 'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa', 'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time', - 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code' + 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code', 'rahdaran.code', ); $allowedFilters = $columns; @@ -142,7 +142,7 @@ class RoadItemsProjectController extends Controller 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item', 'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa', 'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time', - 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code' + 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code', 'rahdaran.code', ); $allowedFilters = $columns; diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php index dfac13c0..6d62ba03 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php @@ -33,11 +33,11 @@ class RoadPatrolProjectController extends Controller public function supervisorIndex(Request $request): JsonResponse { $columns = array( - 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'operator_id', + 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'operator_id', 'created_at', 'operator_name', 'officer_plaque', 'officer_phone_number', 'officer_name', 'supervisor_description', 'supervising_time', 'supervisor_name', 'status', 'status_fa', 'distance', 'province_id', 'province_fa', 'edare_id', 'edare_name', - 'start_time', 'end_time','description', 'cmmsMachines.machine_code' + 'start_time', 'end_time','description', 'cmmsMachines.machine_code', 'rahdaran.code', ); $allowedFilters = $columns; @@ -124,9 +124,9 @@ class RoadPatrolProjectController extends Controller public function operatorIndex(Request $request): JsonResponse { $columns = array( - 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'officer_plaque', + 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'officer_plaque', 'created_at', 'officer_phone_number', 'officer_name', 'supervisor_description', 'supervising_time', - 'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time', 'cmmsMachines.machine_code' + 'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time', 'cmmsMachines.machine_code', 'rahdaran.code', ); $allowedFilters = $columns; diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php new file mode 100644 index 00000000..240d6bb4 --- /dev/null +++ b/app/Services/Reports/RoadItemReportService.php @@ -0,0 +1,93 @@ +where('item', $item) + ->orderBy('sub_item') + ->get(['sub_item', 'sub_item_str', 'sub_item_unit']); + + $query = DB::table('road_items_projects') + ->selectRaw('province_id, province_fa'); + + foreach ($subItems as $subItem) { + $query->selectRaw(" + COUNT(CASE WHEN sub_item = {$subItem->sub_item} THEN 1 END) as Count_{$subItem->sub_item}, + SUM(CASE WHEN sub_item = {$subItem->sub_item} THEN sub_item_data END) as Sum_{$subItem->sub_item} + "); + } + + $query->where('item', '=', $item) + ->where('status', '=', 1) + ->whereBetween('activity_date_time', [$fromDate, $toDate]) + ->groupBy('province_id', 'province_fa') + ->orderBy('province_id'); + + $activities = $query->get(); + + $totalItemCount = [ + 'province_fa' => 'کشوری' + ]; + + foreach ($subItems as $subItem) { + $totalItemCount["Count_{$subItem->sub_item}"] = $activities->sum("Count_{$subItem->sub_item}"); + $totalItemCount["Sum_{$subItem->sub_item}"] = $activities->sum("Sum_{$subItem->sub_item}"); + } + + return [ + 'data' => $activities->push((object)$totalItemCount), + 'fromDate' => $fromDate, + 'toDate' => $toDate, + 'details' => $subItems->keyBy('sub_item'), + ]; + } + + public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): array + { + $subItems = InfoItem::query()->where('item', $item) + ->orderBy('sub_item') + ->get(['sub_item', 'sub_item_str', 'sub_item_unit']); + + $query = DB::table('road_items_projects') + ->selectRaw('province_id, province_fa, TRIM(SUBSTRING_INDEX(user_name, "استان", 1)) as city_fa, city_id'); + + foreach ($subItems as $subItem) { + $query->selectRaw(" + COUNT(CASE WHEN sub_item = {$subItem->sub_item} THEN 1 END) as Count_{$subItem->sub_item}, + SUM(CASE WHEN sub_item = {$subItem->sub_item} THEN sub_item_data END) as Sum_{$subItem->sub_item} + "); + } + + $query->where('item', '=', $item) + ->where('status', '=', 1) + ->where('province_id', '=', $provinceId) + ->whereBetween('activity_date_time', [$fromDate, $toDate]) + ->groupBy('city_id') + ->orderBy('province_id'); + + $activities = $query->get(); + + $totalItemCount = [ + 'city_fa' => 'استانی' + ]; + + foreach ($subItems as $subItem) { + $totalItemCount["Count_{$subItem->sub_item}"] = $activities->sum("Count_{$subItem->sub_item}"); + $totalItemCount["Sum_{$subItem->sub_item}"] = $activities->sum("Sum_{$subItem->sub_item}"); + } + + return [ + 'data' => $activities->push((object)$totalItemCount), + 'fromDate' => $fromDate, + 'toDate' => $toDate, + 'details' => $subItems->keyBy('sub_item') + ]; + } +} \ No newline at end of file diff --git a/app/Services/Reports/RoadPatrolReportService.php b/app/Services/Reports/RoadPatrolReportService.php new file mode 100644 index 00000000..309533b0 --- /dev/null +++ b/app/Services/Reports/RoadPatrolReportService.php @@ -0,0 +1,124 @@ + $activities, + 'fromDate' => $fromDate, + 'toDate' => $toDate + ]; + } + + public function provinceActivity(string $fromDate, string $toDate, int $provinceId): array + { + $activities = DB::select( + 'SELECT + province_fa, + province_id, + -1 AS edare_id, + "استانی" AS edare_name, + COUNT(*) tedade, + SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, + SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, + SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, + SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, + SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, + ROUND(SUM(distance)) as masafat_tey_shode + FROM (SELECT + province_id, + province_fa, + edare_id, + edare_name, + distance, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode + FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$toDate.'") temp + UNION + SELECT + province_fa, + province_id, + edare_id, + edare_name, + COUNT(*) tedade, + SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, + SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, + SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, + SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, + SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, + ROUND(SUM(distance)) as masafat_tey_shode + FROM (SELECT + province_id, + province_fa, + edare_id, + edare_name, + distance, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode + FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$toDate.'") temp + GROUP BY edare_id + ' + ); + + return [ + 'activities' => $activities, + 'fromDate' => $fromDate, + 'toDate' => $toDate + ]; + } +} \ No newline at end of file diff --git a/resources/.gitignore b/resources/.gitignore index 9db1b5b1..a50fbbe5 100644 --- a/resources/.gitignore +++ b/resources/.gitignore @@ -1 +1,3 @@ -views +/views/* +!/views/v3/ +!/views/v3/* \ No newline at end of file diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php new file mode 100644 index 00000000..cc387f3d --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php @@ -0,0 +1,120 @@ + + + + + + + + کشوری + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($provinceCount as $activity) + + + + + + + + + + + + + + + + + + + + + @endforeach + + + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش فعالیت روزانه و جاری راهداری از تاریخ + {{ verta($fromDate)->format('Y/n/j') }} + تا + تاریخ + {{ verta($toDate)->format('Y/n/j') }} + +
اداره کل + فعالیت های + جاری و روزانه راهداری + کل
مرمت رویهپاکسازیعلائمحفاظروشناییخط کشیرنگ آمیزیشستشوایمن سازیحریمپلتونل و گالریعملیات زمستانیماشین آلاتراهدارخانهموارد اضطراری
کل کشور{{ $countryCount['totalMarematRooyeCount'] }}{{ $countryCount['totalPaksaziCount'] }}{{ $countryCount['totalAlaemCount'] }}{{ $countryCount['totalHefazCount'] }}{{ $countryCount['totalRoshanayiCount'] }}{{ $countryCount['totalKhatkeshiCount'] }}{{ $countryCount['totalRangamiziCount'] }}{{ $countryCount['totalWashingCount'] }}{{ $countryCount['totalImenSaziCount'] }}{{ $countryCount['totalHarimCount'] }}{{ $countryCount['totalPolCount'] }}{{ $countryCount['totalToonelCount'] }}{{ $countryCount['totalAmaliatZemestaniCount'] }}{{ $countryCount['totalMashinAlatCount'] }}{{ $countryCount['totalTollhouseCount'] }}{{ $countryCount['totalEmergencyCount'] }}{{ $countryCount['totalCountryCount'] }}
{{ $activity->province_fa }}{{ $activity->MarematRooyeCount }}{{ $activity->PaksaziCount }}{{ $activity->AlaemCount }}{{ $activity->HefazCount }}{{ $activity->RoshanayiCount }}{{ $activity->KhatkeshiCount }}{{ $activity->RangamiziCount }}{{ $activity->WashingCount }}{{ $activity->ImenSaziCount }}{{ $activity->HarimCount }}{{ $activity->PolCount }}{{ $activity->ToonelCount }}{{ $activity->AmaliatZemestaniCount }}{{ $activity->MashinAlatCount }}{{ $activity->TollhouseCount }}{{ $activity->EmergencyCount }}{{ $activity->TotalProvinceCount }}
+ + + + diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php new file mode 100644 index 00000000..62d19ec5 --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php @@ -0,0 +1,74 @@ + + + + + + + کشوری + + + + + + + + + + + + + + + + > + + + + + + + + + @foreach($details as $detail) + + @endforeach + + + + @foreach($details as $detail) + + + @endforeach + + + + + + @foreach ($activities as $activity) + + + + @foreach ($details as $index => $detail) + + + @endforeach + + @endforeach + +
+ تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}} +
+ تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ + {{verta($fromDate)->format('Y/n/j')}} + تا + تاریخ + {{verta($toDate)->format('Y/n/j')}} +
اداره کلفعالیت های انجام شده
{{ $detail->sub_item_str }}
تعدادمجموع ({{ $detail->sub_item_unit }})
{{ $activity->province_fa }} + {{ $activity->{'Count_' . ($index)} ?? '-' }} + + {{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }} +
+ + + + \ No newline at end of file diff --git a/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php new file mode 100644 index 00000000..55a708ee --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php @@ -0,0 +1,120 @@ + + + + + + + + استانی + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($cityCount as $activity) + + + + + + + + + + + + + + + + + + + + + @endforeach + + + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش فعالیت روزانه و جاری راهداری از تاریخ + {{ verta($fromDate)->format('Y/n/j') }} + تا + تاریخ + {{ verta($toDate)->format('Y/n/j') }} + +
اداره کل + فعالیت های + جاری و روزانه راهداری + کل
مرمت رویهپاکسازیعلائمحفاظروشناییخط کشیرنگ آمیزیشستشوایمن سازیحریمپلتونل و گالریعملیات زمستانیماشین آلاتراهدارخانهموارد اضطراری
کل استان{{ $provinceCount['totalMarematRooyeCount'] }}{{ $provinceCount['totalPaksaziCount'] }}{{ $provinceCount['totalAlaemCount'] }}{{ $provinceCount['totalHefazCount'] }}{{ $provinceCount['totalRoshanayiCount'] }}{{ $provinceCount['totalKhatkeshiCount'] }}{{ $provinceCount['totalRangamiziCount'] }}{{ $provinceCount['totalWashingCount'] }}{{ $provinceCount['totalImenSaziCount'] }}{{ $provinceCount['totalHarimCount'] }}{{ $provinceCount['totalPolCount'] }}{{ $provinceCount['totalToonelCount'] }}{{ $provinceCount['totalAmaliatZemestaniCount'] }}{{ $provinceCount['totalMashinAlatCount'] }}{{ $provinceCount['totalTollhouseCount'] }}{{ $provinceCount['totalEmergencyCount'] }}{{ $provinceCount['TotalProvinceCount'] }}
{{ $activity->edarat_name }}{{ $activity->MarematRooyeCount }}{{ $activity->PaksaziCount }}{{ $activity->AlaemCount }}{{ $activity->HefazCount }}{{ $activity->RoshanayiCount }}{{ $activity->KhatkeshiCount }}{{ $activity->RangamiziCount }}{{ $activity->WashingCount }}{{ $activity->ImenSaziCount }}{{ $activity->HarimCount }}{{ $activity->PolCount }}{{ $activity->ToonelCount }}{{ $activity->AmaliatZemestaniCount }}{{ $activity->MashinAlatCount }}{{ $activity->TollhouseCount }}{{ $activity->EmergencyCount }}{{ $activity->TotalCityCount }}
+ + + + diff --git a/resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php new file mode 100644 index 00000000..9ff1b3cf --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php @@ -0,0 +1,74 @@ + + + + + + + استانی + + + + + + + + + + + + + + + + > + + + + + + + + + @foreach($details as $detail) + + @endforeach + + + + @foreach($details as $detail) + + + @endforeach + + + + + + @foreach ($activities as $activity) + + + + @foreach ($details as $index => $detail) + + + @endforeach + + @endforeach + +
+ تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}} +
+ تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ + {{verta($fromDate)->format('Y/n/j')}} + تا + تاریخ + {{verta($toDate)->format('Y/n/j')}} +
ادارهفعالیت های انجام شده
{{ $detail->sub_item_str }}
تعدادمجموع ({{ $detail->sub_item_unit }})
{{ $activity->city_fa }} + {{ $activity->{'Count_' . ($index)} ?? '-' }} + + {{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }} +
+ + + + \ No newline at end of file diff --git a/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php new file mode 100644 index 00000000..0e94bde7 --- /dev/null +++ b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php @@ -0,0 +1,102 @@ + + + + + + + + کشوری + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($activities as $activity) + + + + + + + + + + + @endforeach + + + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش گشت راهداری و ترابری از تاریخ + {{ verta($fromDate)->format('Y/n/j') }} + تا + تاریخ + {{ verta($toDate)->format('Y/n/j') }} + +
+ اداره کل + + گشت راهداری +
+ تعداد کل + + اقدامات لازم جهت رسیدگی آتی + + اقدامات رسیدگی شده + + مجموع مسافت پیمایش شده(کیلومتر) + + تعداد فعالیت صورت گرفته حین گشت زنی +
+ عادی + + فوری + + آنی +
{{ $activity->province_fa }}{{ $activity->tedade }}{{ $activity->tedad_mavarede_moshede_shode_adi }}{{ $activity->tedad_mavarede_moshede_shode_fori }}{{ $activity->tedad_mavarede_moshede_shode_ani }}{{ $activity->tedad_mavarede_peygiri_shode }}{{ $activity->masafat_tey_shode }}{{ $activity->tedad_faliyat_sabt_shode }}
+ + + + diff --git a/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php new file mode 100644 index 00000000..602352e5 --- /dev/null +++ b/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php @@ -0,0 +1,98 @@ + + + + + + + + استانی + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($activities as $activity) + + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش گشت راهداری و ترابری از تاریخ + {{ verta($fromDate)->format('Y/n/j') }} + تا + تاریخ + {{ verta($toDate)->format('Y/n/j') }} + +
+ اداره کل + + گشت راهداری +
+ تعداد کل + + اقدامات لازم جهت رسیدگی آتی + + اقدامات رسیدگی شده + + مجموع مسافت پیمایش شده(کیلومتر) + + تعداد فعالیت صورت گرفته حین گشت زنی +
+ عادی + + فوری + + آنی +
{{ $activity->edare_name }}{{ $activity->tedade }}{{ $activity->tedad_mavarede_moshede_shode_adi }}{{ $activity->tedad_mavarede_moshede_shode_fori }}{{ $activity->tedad_mavarede_moshede_shode_ani }}{{ $activity->tedad_mavarede_peygiri_shode }}{{ $activity->masafat_tey_shode }}{{ $activity->tedad_faliyat_sabt_shode }}
+ + diff --git a/routes/v3.php b/routes/v3.php index 78e8be34..ae606cc8 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -200,13 +200,18 @@ Route::prefix('road_item_reports') Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem'); Route::get('/city_activity_per_item', 'cityActivityPerItem')->name('cityActivityPerItem'); Route::get('/map', 'map')->name('map'); + Route::get('/country_activity_excel_per_item', 'countryActivityExcelPerItem')->name('countryActivityExcelPerItem'); + Route::get('/province_activity_excel_per_item', 'provinceActivityExcelPerItem')->name('provinceActivityExcelPerItem'); + Route::get('/country_activity_excel_per_sub_item', 'countryActivityExcelPerSubItem')->name('countryActivityExcelPerSubItem'); + Route::get('/province_activity_excel_per_sub_item', 'provinceActivityExcelPerSubItem')->name('provinceActivityExcelPerSubItem'); }); Route::prefix('road_patrol_reports') ->name('roadPatrolReports.') ->controller(RoadPatrolReportController::class) ->group(function () { + Route::get('/country_activity', 'countryPatrolActivity')->name('countryPatrolActivity'); Route::get('/province_activity', 'provincePatrolActivity')->name('provincePatrolActivity'); - Route::get('/city_activity', 'cityPatrolActivity')->name('cityPatrolActivity'); - Route::get('/excel', 'excel')->name('excel'); + Route::get('/country_activity_excel', 'countryActivityExcel')->name('countryActivityExcel'); + Route::get('/province_activity_excel', 'provinceActivityExcel')->name('provinceActivityExcel'); });