From fae721a3f19e6d931fa3193c47556f7c2fa03c11 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 20 Jan 2025 09:13:22 +0330 Subject: [PATCH 01/14] create report files --- .../CountryActivityPerItemReport.php | 108 ++++++++++++++++ .../CountryActivityPerSubItemReport.php | 122 ++++++++++++++++++ .../ProvinceActivityPerItemReport.php | 116 +++++++++++++++++ .../ProvinceActivityPerSubItemReport.php | 120 +++++++++++++++++ .../Dashboard/RoadItemsProjectController.php | 4 +- .../Dashboard/RoadPatrolProjectController.php | 8 +- 6 files changed, 472 insertions(+), 6 deletions(-) create mode 100644 app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php create mode 100644 app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php create mode 100644 app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php create mode 100644 app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php new file mode 100644 index 00000000..95f88d94 --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php @@ -0,0 +1,108 @@ +fromDate ?? '2021-03-21'; + $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 != -1 THEN 1 END) AS TotalCount + FROM ( + SELECT + province_fa, + province_id, + item, + status + FROM road_items_projects + WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59' + ) AS merged_table + WHERE status = 1 + GROUP BY province_id, province_fa;"; + + $countryActivities = DB::select($query); + + return view('', [ + 'activities' => $countryActivities, + '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..611e0a44 --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php @@ -0,0 +1,122 @@ +fromDate ?? '2021-03-21'; + $toDate = $this->toDate ?? Carbon::now(); + + $query = "SELECT + COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount, + SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum, + + COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount, + SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum, + + COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount, + SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum, + + COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount, + SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum, + + COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount, + SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum, + + COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount, + SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum, + + COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount, + SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum, + + COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount, + SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum, + + COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount, + SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum, + + COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount, + SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum, + + COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount, + SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum, + + COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount, + SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum, + + province_id, + province_fa + + FROM road_items_projects + WHERE item = 1 and status = 1 + AND activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59' + GROUP BY province_id, province_fa + ORDER BY province_id ASC;"; + + $countryActivities = DB::select($query); + + return view('', [ + 'activities' => $countryActivities, + '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/ProvinceActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php new file mode 100644 index 00000000..bd924403 --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php @@ -0,0 +1,116 @@ +fromDate ?? '2021-03-21'; + $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 != -1 THEN 1 END) AS TotalCount + FROM ( + SELECT + province_fa, + province_id, + edarat_name, + edarat_id, + item, + status + FROM road_items_projects + WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59' + ) AS merged_table + WHERE status = 1 + AND province_id = {$this->provinceId} + GROUP BY edarat_id, edarat_name, order by province_id ASC;"; + + $provinceActivities = DB::select($query); + + return view('', [ + 'activities' => $provinceActivities, + '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..f966747e --- /dev/null +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php @@ -0,0 +1,120 @@ +fromDate ?? '2021-03-21'; + $toDate = $this->toDate ?? Carbon::now(); + + $query = "SELECT + COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount, + SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum, + + COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount, + SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum, + + COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount, + SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum, + + COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount, + SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum, + + COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount, + SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum, + + COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount, + SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum, + + COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount, + SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum, + + COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount, + SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum, + + COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount, + SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum, + + COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount, + SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum, + + COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount, + SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum, + + COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount, + SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum, + + province_id, province_fa, city_id, user_name as city_fa + + FROM road_items_projects + WHERE item =1 AND status = 1 + AND province_id = {$this->provinceId} + AND activity_date_time BETWEEN '{$fromDate}' AND '{$toDate}' GROUP BY city_id ORDER BY province_id ASC;"; + + $provinceActivities = DB::select($query); + + return view('', [ + 'activities' => $provinceActivities, + '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/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; From 03fd210671dcf53f3f407aa971299a1cb2962f5a Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 21 Jan 2025 10:31:25 +0330 Subject: [PATCH 02/14] create excel files --- app/Enums/InfoItem.php | 77 +++++++++++++++++++ .../CountryActivityPerSubItemReport.php | 60 ++------------- .../ProvinceActivityPerSubItemReport.php | 58 ++------------ .../Reports/RoadItemsReportController.php | 70 ++++++++++------- .../Reports/RoadItemReportService.php | 70 +++++++++++++++++ routes/v3.php | 4 + 6 files changed, 205 insertions(+), 134 deletions(-) create mode 100644 app/Enums/InfoItem.php create mode 100644 app/Services/Reports/RoadItemReportService.php diff --git a/app/Enums/InfoItem.php b/app/Enums/InfoItem.php new file mode 100644 index 00000000..8d17d409 --- /dev/null +++ b/app/Enums/InfoItem.php @@ -0,0 +1,77 @@ + [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 2 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 3 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 4 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 5 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 6 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 7 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 8 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 9 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 10 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 11 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 12 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 13 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 14 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 15 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 16 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 17 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 20 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + ]; + + return $subitems[$item]; + } + + public static function persianName(int $item): string + { + $persianName = [ + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 20 => '', + ]; + + return $persianName[$item]; + } +} \ No newline at end of file diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php index 611e0a44..9d6426fa 100644 --- a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php @@ -6,6 +6,7 @@ use App\Models\Province; use App\Models\RoadItemsProject; use Carbon\Carbon; use Illuminate\Contracts\View\View; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; @@ -17,65 +18,16 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class CountryActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private ?string $fromDate, private ?string $toDate){} + public function __construct(private Collection $activities){} public function view(): View { - $fromDate = $this->fromDate ?? '2021-03-21'; - $toDate = $this->toDate ?? Carbon::now(); - - $query = "SELECT - COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount, - SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum, - - COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount, - SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum, - - COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount, - SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum, - - COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount, - SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum, - - COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount, - SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum, - - COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount, - SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum, - - COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount, - SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum, - - COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount, - SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum, - - COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount, - SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum, - - COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount, - SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum, - - COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount, - SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum, - - COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount, - SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum, - - province_id, - province_fa - - FROM road_items_projects - WHERE item = 1 and status = 1 - AND activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59' - GROUP BY province_id, province_fa - ORDER BY province_id ASC;"; - - $countryActivities = DB::select($query); + $activities = $this->activities; return view('', [ - 'activities' => $countryActivities, - 'fromDate' => $fromDate, - 'toDate' => $toDate + 'activities' => $activities->data, + 'fromDate' => $activities->fromDate, + 'toDate' => $activities->toDate ]); } diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php index f966747e..6b8be60d 100644 --- a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php @@ -6,6 +6,7 @@ use App\Models\Province; use App\Models\RoadItemsProject; use Carbon\Carbon; use Illuminate\Contracts\View\View; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; @@ -17,63 +18,16 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class ProvinceActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private ?string $fromDate, private ?string $toDate, private string $provinceId,){} + public function __construct(private Collection $activities){} public function view(): View { - $fromDate = $this->fromDate ?? '2021-03-21'; - $toDate = $this->toDate ?? Carbon::now(); - - $query = "SELECT - COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount, - SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum, - - COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount, - SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum, - - COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount, - SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum, - - COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount, - SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum, - - COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount, - SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum, - - COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount, - SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum, - - COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount, - SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum, - - COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount, - SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum, - - COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount, - SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum, - - COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount, - SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum, - - COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount, - SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum, - - COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount, - SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum, - - province_id, province_fa, city_id, user_name as city_fa - - FROM road_items_projects - WHERE item =1 AND status = 1 - AND province_id = {$this->provinceId} - AND activity_date_time BETWEEN '{$fromDate}' AND '{$toDate}' GROUP BY city_id ORDER BY province_id ASC;"; - - $provinceActivities = DB::select($query); + $activities = $this->activities; return view('', [ - 'activities' => $provinceActivities, - 'fromDate' => $fromDate, - 'toDate' => $toDate + 'activities' => $activities->data, + 'fromDate' => $activities->fromDate, + 'toDate' => $activities->toDate ]); } diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 5c0d789c..45b18fc7 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/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php new file mode 100644 index 00000000..25210900 --- /dev/null +++ b/app/Services/Reports/RoadItemReportService.php @@ -0,0 +1,70 @@ +selectRaw('province_id, province_fa'); + + foreach ($subItems as $key => $name) { + $query->selectRaw(" + COUNT(CASE WHEN sub_item = {$key} THEN 1 END) as {$name}Count, + SUM(CASE WHEN sub_item = {$key} THEN sub_item_data END) as {$name}Sum + "); + } + + $query->where('item', '=', $item) + ->where('status', '=', 1) + ->whereBetween('activity_date_time', [$fromDate, $toDate]) + ->groupBy('province_id', 'province_fa') + ->orderBy('province_id'); + + $activities = $query->get(); + + return collect([ + 'data' => $activities, + 'fromDate' => $fromDate, + 'toDate' => $toDate, + ]); + } + + public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): Collection + { + $subItems = InfoItem::subItems($item); + + $query = DB::table('road_items_projects') + ->selectRaw('province_id, province_fa, user_name as city_fa, city_id'); + + foreach ($subItems as $key => $name) { + $query->selectRaw(" + COUNT(CASE WHEN sub_item = {$key} THEN 1 END) as {$name}Count, + SUM(CASE WHEN sub_item = {$key} THEN sub_item_data END) as {$name}Sum + "); + } + + $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(); + + return collect([ + 'data' => $activities, + 'fromDate' => $fromDate, + 'toDate' => $toDate, + ]); + } +} \ No newline at end of file diff --git a/routes/v3.php b/routes/v3.php index 78e8be34..4d3177e0 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -200,6 +200,10 @@ 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') From e6dcd36fc9e01421f4cf9c48829c520a9580d32f Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 22 Jan 2025 11:25:57 +0330 Subject: [PATCH 03/14] create report views --- app/Enums/InfoItem.php | 113 ++++++++++------- .../CountryActivityPerItemReport.php | 29 ++++- .../Reports/RoadItemReportService.php | 11 +- resources/.gitignore | 4 +- .../CountryActivityPerItem.blade.php | 119 ++++++++++++++++++ 5 files changed, 222 insertions(+), 54 deletions(-) create mode 100644 resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php diff --git a/app/Enums/InfoItem.php b/app/Enums/InfoItem.php index 8d17d409..ebd43a83 100644 --- a/app/Enums/InfoItem.php +++ b/app/Enums/InfoItem.php @@ -26,52 +26,77 @@ enum InfoItem: int public static function subItems(int $item): array { $subitems = [ - 1 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 2 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 3 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 4 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 5 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 6 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 7 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 8 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 9 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 10 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 11 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 12 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 13 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 14 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 15 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 16 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 17 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], - 20 => [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13], + 1 => [1 => 'LabeAsphalt', 2 => 'ShaneSazi', 3 => 'GodOftadegi', 4 => 'Lakegiri', + 5 => 'Maremat', 6 => 'BastarHarim', 8 => 'Darzgiri', 9 => 'Mozres', + 10 => 'TarashRooye', 11 => 'Tighzani', 12 => 'Shenrizi', 13 => 'Khakbardari', + 14 => 'TaranesheBardary' + ], + + 2 => [1 => 'PaksaziSathRah', 2 => 'TanfieAbro', 3 => 'PaksaziLashe', 4 => 'PaksaziGhono', + 5 => 'PaksaziTasadofat', 6 => 'AlafKani', 7 => 'PaksaziHarim', 8 => 'JamavariGhateat', + 9 => 'PaksaziParking', 10 => 'PaksaziKenarGharnizPol', 11 => 'PaksaziJazire', + 12 => 'PaksaziTanfieDakhelPol', 13 => 'PaksaziSifon', 14 => 'PaksaziShakheDerakhtan', 15 => 'PaksaziMavadNafti', + 16 => 'AlafKaniDasti', 17 => 'RizeshBardari', 18 => 'JamavariSang', 19 => 'Layeroobi' + ], + + 3 => [1 => 'TabloEkhtari', 2 => 'TabloEtelati', 3 => 'Shabrang', 4 => 'Baztab', 5 => 'TavizTablo', + 6 => 'Maremat', 7 => 'EslahKajShodegi', 8 => 'NasbAlaemMovaghat', 9 => 'ShibShirvani' + ], + + 4 => [1 => 'Miani', 2 => 'Pol', 3 => 'Behsazi'], + + 5 => [1 => 'NegahdariTool', 2 => 'NegahdariHashieh', 3 => 'NegahdariNoghteyi', 4 => 'NegahdariNavahi', + 5 => 'NegahdariMehgir', 6 => 'NegahdariToonel', 7 => 'TamiratCable', 8 => 'TamiratKaleCheragh', + 9 => 'TamiratMafselzani', 10 => 'TamiratTablo', 11 => 'TamiratBorjNoori' + ], + + 6 => [1 => 'KhatkeshiRangGarm', 2 => 'KhatkeshiRangSard', 3 => 'TarsimKhat', + 4 => 'EjrayeTooli', 5 => 'EjrayeArzi', 6 => 'PakKardanKhotoot' + ], + + 7 => [1 => 'RangamiziTablo', 2 => 'RangamiziCheraq', 3 => 'RangimiziPayeRoshanayi', 4 => 'RangamiziPol', + 5 => 'RangamiziDarvazi', 6 => 'RangamiziHefazFelezi', 7 => 'RangamiziNewjersi', 8 => 'RangamiziSoratgah', 9 => 'RangamiziPaye' + ], + + 8 => [1 => 'ShosteshooAlaem', 2 => 'ShosteshooTablo', 3 => 'ShosteshooJadval', 4 => 'ShosteshooNewjersi', + 5 => 'ShosteshooGuardrail', 6 => 'ShosteshooToonel', 7 => 'ShosteshooPol' + ], + + 9 => [1 => 'ImensaziSarguard', 4 => ' TamiratCheraq', 5 => 'IjadShiar', + 6 => 'Zarbegir', 7 => 'NasbSoratgir', 8 => 'IjadLarzanande', + 9 => 'OstevaneImeni', 11 => 'EhdasSoratgir', 12 => 'EjrayeNoghteyi', + 13 => 'EjrayeTooli', 14 => 'TarizMaghtaei', 15 => 'HazfMavane', 16 => 'DivarChini' + ], + + 10 => [4 => 'BarkhordBaDastfroosh', 5 => 'JamavariTabloo', 6 => 'JamavariBanner'], + + 11 => [1 => 'EhdasGharnizPol', 2 => 'Lole', 3 => 'Tatvil', 4 => 'Bazsazi', + 5 => 'TamiratAbro', 6 => 'Maremat', 7 => 'Radie' + ], + + 12 => [1 => 'Zehkeshi', 2 => 'Maremat', 3 => 'Lining', 4 => 'TamirGallery', + 5 => 'Gabarit', 6 => 'Doorbin', 7 => 'Tahvie' + ], + + 13 => [1 => 'Yakhzodaei', 2 => 'BarfRoobi', + 5 => 'MizanNamak', 7 => 'Mosaferin', 8 => 'KomakResani' + ], + + 14 => [1 => 'BenzinMasrafi', 2 => 'GazMasrafi', 3 => 'MavadNafti', 4 => 'Bazsazi', + 8 => 'Service', 9 => 'NamakPash', 10 => 'Jabejayi' + ], + + 15 => [1 => 'Tamirat', 3 => 'Jalasat'], + + 16 => [1 => 'Paksazi', 2 => 'Taradod', 3 => 'BargharariErtebat', 4 => 'AbBordegi', + 5 => 'ShekastegiPol', 6 => 'HedayatTraffici', 7 => 'Bozgoshaei', 8 => 'Jabejayi', 9 => 'Laghgiri' + ], + + 20 => [1 => 'AbniyeFani', 2 => 'Alaem', 3 => 'Taranshe', 4 => 'RoyeAphalt', + 5 => 'HarimRah', 6 => 'MashinAlat'], + ]; return $subitems[$item]; } - - public static function persianName(int $item): string - { - $persianName = [ - 1 => '', - 2 => '', - 3 => '', - 4 => '', - 5 => '', - 6 => '', - 7 => '', - 8 => '', - 9 => '', - 10 => '', - 11 => '', - 12 => '', - 13 => '', - 14 => '', - 15 => '', - 16 => '', - 17 => '', - 20 => '', - ]; - - return $persianName[$item]; - } } \ No newline at end of file diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php index 95f88d94..692f21af 100644 --- a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php @@ -43,7 +43,7 @@ class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSi COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount, province_fa, province_id, - COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalCount + COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalProvinceCount FROM ( SELECT province_fa, @@ -56,10 +56,31 @@ class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSi WHERE status = 1 GROUP BY province_id, province_fa;"; - $countryActivities = DB::select($query); + $provinceActivities = collect(DB::select($query)); - return view('', [ - 'activities' => $countryActivities, + $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 ]); diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php index 25210900..25ae1cdc 100644 --- a/app/Services/Reports/RoadItemReportService.php +++ b/app/Services/Reports/RoadItemReportService.php @@ -2,7 +2,7 @@ namespace App\Services\Reports; -use App\Enums\InfoItem; +use App\Models\InfoItem; use Illuminate\Http\Request; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; @@ -11,15 +11,15 @@ class RoadItemReportService { public function countryActivityPerSubItem(int $item, string $fromDate, string $toDate): Collection { - $subItems = InfoItem::subItems($item); + $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str']); $query = DB::table('road_items_projects') ->selectRaw('province_id, province_fa'); - foreach ($subItems as $key => $name) { + foreach ($subItems as $subItem) { $query->selectRaw(" - COUNT(CASE WHEN sub_item = {$key} THEN 1 END) as {$name}Count, - SUM(CASE WHEN sub_item = {$key} THEN sub_item_data END) as {$name}Sum + 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} "); } @@ -35,6 +35,7 @@ class RoadItemReportService 'data' => $activities, 'fromDate' => $fromDate, 'toDate' => $toDate, + 'titles' => $subItems->pluck('sub_item_str') ]); } diff --git a/resources/.gitignore b/resources/.gitignore index 9db1b5b1..58b2b566 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..17c4040e --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php @@ -0,0 +1,119 @@ + + + + + + + + کشوری + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @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') }} + +
اداره کل + فعالیت های + جاری و روزانه راهداری + کل
مرمت رویهپاکسازیعلائمحفاظروشناییخط کشیرنگ آمیزیشستشوایمن سازیحریمپلتونل و گالریعملیات زمستانیماشین آلاتراهدارخانهموارد اضطراری
{{ $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'] }}
کشوری{{ $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'] }}
+ + + + From 7ba7ebaa31169e11ed4f3f2a4889fb28c3eebd50 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 22 Jan 2025 11:51:07 +0330 Subject: [PATCH 04/14] create city report excel per item --- .../ProvinceActivityPerItemReport.php | 29 ++++- .../CountryActivityPerItem.blade.php | 36 +++--- .../ProvinceActivityPerItem.blade.php | 119 ++++++++++++++++++ 3 files changed, 162 insertions(+), 22 deletions(-) create mode 100644 resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php index bd924403..5afd7875 100644 --- a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php @@ -48,7 +48,7 @@ class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoS province_id, edarat_name, edarat_id, - COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalCount + COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalCityCount FROM ( SELECT province_fa, @@ -64,10 +64,31 @@ class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoS AND province_id = {$this->provinceId} GROUP BY edarat_id, edarat_name, order by province_id ASC;"; - $provinceActivities = DB::select($query); + $cityActivities = collect(DB::select($query)); - return view('', [ - 'activities' => $provinceActivities, + $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 ]); diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php index 17c4040e..1fb13aec 100644 --- a/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php @@ -69,24 +69,24 @@ @foreach ($provinceCount as $activity) - {{ $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'] }} + {{ $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 }} @endforeach 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..abacb6e1 --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php @@ -0,0 +1,119 @@ + + + + + + + + استانی + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @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') }} + +
اداره کل + فعالیت های + جاری و روزانه راهداری + کل
مرمت رویهپاکسازیعلائمحفاظروشناییخط کشیرنگ آمیزیشستشوایمن سازیحریمپلتونل و گالریعملیات زمستانیماشین آلاتراهدارخانهموارد اضطراری
{{ $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->TotalCityCount }}
کشوری{{ $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'] }}
+ + + + From dab16915da7c10df06e995888083193b050b2f69 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 22 Jan 2025 14:27:39 +0330 Subject: [PATCH 05/14] create province excel report --- .../CountryActivityPerItemReport.php | 6 +-- .../ProvinceActivityPerItemReport.php | 8 ++-- .../CountryActivityPerItem.blade.php | 41 +++++++++--------- .../ProvinceActivityPerItem.blade.php | 43 ++++++++++--------- 4 files changed, 50 insertions(+), 48 deletions(-) diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php index 692f21af..a5f33307 100644 --- a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php @@ -21,7 +21,7 @@ class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSi public function view(): View { - $fromDate = $this->fromDate ?? '2021-03-21'; + $fromDate = $this->fromDate ?? '2021-03-21 00:00:00'; $toDate = $this->toDate ?? \Carbon\Carbon::now(); $query = "SELECT @@ -43,7 +43,7 @@ class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSi COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount, province_fa, province_id, - COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalProvinceCount + COUNT(CASE WHEN item != 20 THEN 1 END) AS TotalProvinceCount FROM ( SELECT province_fa, @@ -51,7 +51,7 @@ class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSi item, status FROM road_items_projects - WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59' + WHERE activity_date_time BETWEEN '{$fromDate}' and '{$toDate}' ) AS merged_table WHERE status = 1 GROUP BY province_id, province_fa;"; diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php index 5afd7875..7b8f99b2 100644 --- a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php @@ -24,7 +24,7 @@ class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoS public function view(): View { - $fromDate = $this->fromDate ?? '2021-03-21'; + $fromDate = $this->fromDate ?? '2021-03-21 00:00:00'; $toDate = $this->toDate ?? \Carbon\Carbon::now(); $query = "SELECT @@ -48,7 +48,7 @@ class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoS province_id, edarat_name, edarat_id, - COUNT(CASE WHEN item != -1 THEN 1 END) AS TotalCityCount + COUNT(CASE WHEN item != 20 THEN 1 END) AS TotalCityCount FROM ( SELECT province_fa, @@ -58,11 +58,11 @@ class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoS item, status FROM road_items_projects - WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59' + 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;"; + GROUP BY edarat_id, edarat_name order by province_id ASC;"; $cityActivities = collect(DB::select($query)); diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php index 1fb13aec..cc387f3d 100644 --- a/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php @@ -67,6 +67,27 @@ + + کل کشور + {{ $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'] }} + + @foreach ($provinceCount as $activity) {{ $activity->province_fa }} @@ -89,26 +110,6 @@ {{ $activity->TotalProvinceCount }} @endforeach - - کشوری - {{ $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'] }} - diff --git a/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php index abacb6e1..55a708ee 100644 --- a/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php +++ b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php @@ -67,9 +67,30 @@ + + کل استان + {{ $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'] }} + + @foreach ($cityCount as $activity) - {{ $activity->province_fa }} + {{ $activity->edarat_name }} {{ $activity->MarematRooyeCount }} {{ $activity->PaksaziCount }} {{ $activity->AlaemCount }} @@ -89,26 +110,6 @@ {{ $activity->TotalCityCount }} @endforeach - - کشوری - {{ $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'] }} - From ac2cb74398d3ce917b3f4ae6fc1f5aab6cf2cdf2 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 25 Jan 2025 13:34:45 +0330 Subject: [PATCH 06/14] add detail to api --- .../CountryActivityPerSubItemReport.php | 5 +- app/Http/Controllers/DevelopController.php | 2 +- .../RoadItemsProjectController.php | 4 +- .../Dashboard/RoadItemsProjectController.php | 4 +- .../Reports/RoadItemReportService.php | 28 +++++--- .../CountryActivityPerSubItem.blade.php | 70 +++++++++++++++++++ 6 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php index 9d6426fa..c54e9f9e 100644 --- a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php @@ -24,10 +24,11 @@ class CountryActivityPerSubItemReport implements FromView, WithEvents, ShouldAut { $activities = $this->activities; - return view('', [ + return view('v3.Reports.RoadItems.CountryActivityPerSubItem', [ 'activities' => $activities->data, 'fromDate' => $activities->fromDate, - 'toDate' => $activities->toDate + 'toDate' => $activities->toDate, + 'details' => $activities->details ]); } 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/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php index 25ae1cdc..34da3e02 100644 --- a/app/Services/Reports/RoadItemReportService.php +++ b/app/Services/Reports/RoadItemReportService.php @@ -11,10 +11,10 @@ class RoadItemReportService { public function countryActivityPerSubItem(int $item, string $fromDate, string $toDate): Collection { - $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str']); + $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str', 'sub_item_unit']); $query = DB::table('road_items_projects') - ->selectRaw('province_id, province_fa'); + ->selectRaw('province_id, province_fa, sub_item'); foreach ($subItems as $subItem) { $query->selectRaw(" @@ -31,25 +31,36 @@ class RoadItemReportService $activities = $query->get(); + $totalItemCount = [ + 'province_fa' => 'کشوری' + ]; + + foreach ($subItems as $subItem) { + $totalItemCount = [ + "total_count_{$subItem->sub_item}" => $activities->sum("Count_{$subItem->sub_item}"), + "total_sum_{$subItem->sub_item}" => $activities->sum("Sum_{$subItem->sub_item}"), + ]; + } + return collect([ - 'data' => $activities, + 'data' => $activities->push($totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, - 'titles' => $subItems->pluck('sub_item_str') + 'details' => $subItems, ]); } public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): Collection { - $subItems = InfoItem::subItems($item); + $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str', 'sub_item_unit']); $query = DB::table('road_items_projects') ->selectRaw('province_id, province_fa, user_name as city_fa, city_id'); - foreach ($subItems as $key => $name) { + foreach ($subItems as $subItem) { $query->selectRaw(" - COUNT(CASE WHEN sub_item = {$key} THEN 1 END) as {$name}Count, - SUM(CASE WHEN sub_item = {$key} THEN sub_item_data END) as {$name}Sum + 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} "); } @@ -66,6 +77,7 @@ class RoadItemReportService 'data' => $activities, 'fromDate' => $fromDate, 'toDate' => $toDate, + 'details' => $subItems ]); } } \ No newline at end of file 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..b1f288a5 --- /dev/null +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php @@ -0,0 +1,70 @@ + + + + + + + کشوری + + + + + + + + + + + + + + + + > + + + + + + + @foreach($details as $detail) + + + + + + + @foreach ($activities as $activity) + + + + @if($activity->sub_item == $detail->sub_item) + + + @endif + + + @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->unit }}مجموع +
+
+
{{ $activity->province_fa }}{{ $activity->Count_ }}{{ round($activity->Sum_, 1) }}
+ + + + \ No newline at end of file From 735e7f68e54e5198825ec2b792a396bca4a39b8a Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 25 Jan 2025 14:01:19 +0330 Subject: [PATCH 07/14] fix the blade --- .../CountryActivityPerSubItemReport.php | 15 +++++---------- app/Services/Reports/RoadItemReportService.php | 9 ++++----- .../RoadItems/CountryActivityPerSubItem.blade.php | 10 +++++----- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php index c54e9f9e..16fc87cf 100644 --- a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php @@ -2,12 +2,7 @@ namespace App\Exports\V3\RoadItemsProjects; -use App\Models\Province; -use App\Models\RoadItemsProject; -use Carbon\Carbon; use Illuminate\Contracts\View\View; -use Illuminate\Support\Collection; -use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; @@ -18,17 +13,17 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class CountryActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private Collection $activities){} + public function __construct(private array $activities){} public function view(): View { $activities = $this->activities; return view('v3.Reports.RoadItems.CountryActivityPerSubItem', [ - 'activities' => $activities->data, - 'fromDate' => $activities->fromDate, - 'toDate' => $activities->toDate, - 'details' => $activities->details + 'activities' => $activities["data"], + 'fromDate' => $activities["fromDate"], + 'toDate' => $activities["toDate"], + 'details' => $activities["details"] ]); } diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php index 34da3e02..146d3250 100644 --- a/app/Services/Reports/RoadItemReportService.php +++ b/app/Services/Reports/RoadItemReportService.php @@ -3,13 +3,12 @@ namespace App\Services\Reports; use App\Models\InfoItem; -use Illuminate\Http\Request; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; class RoadItemReportService { - public function countryActivityPerSubItem(int $item, string $fromDate, string $toDate): Collection + public function countryActivityPerSubItem(int $item, string $fromDate, string $toDate): array { $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str', 'sub_item_unit']); @@ -36,18 +35,18 @@ class RoadItemReportService ]; foreach ($subItems as $subItem) { - $totalItemCount = [ + $totalItemCount[] = [ "total_count_{$subItem->sub_item}" => $activities->sum("Count_{$subItem->sub_item}"), "total_sum_{$subItem->sub_item}" => $activities->sum("Sum_{$subItem->sub_item}"), ]; } - return collect([ + return [ 'data' => $activities->push($totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, 'details' => $subItems, - ]); + ]; } public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): Collection diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php index b1f288a5..8f465ba1 100644 --- a/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php @@ -42,7 +42,7 @@ {{ $detail->sub_item_str }}
تعداد - {{ $detail->unit }}مجموع + {{ $detail["sub_item_unit"] }}مجموع
@@ -52,11 +52,11 @@ @foreach ($activities as $activity) - {{ $activity->province_fa }} + {{ $activity["province_fa"] }} - @if($activity->sub_item == $detail->sub_item) - {{ $activity->Count_ }} - {{ round($activity->Sum_, 1) }} + @if($activity["sub_item"] == $detail["sub_item"]) + {{ $activity["Count_{$activity["sub_item"]}"] }} + {{ round($activity["Sum_{$activity["sub_item"]}"], 1) }} @endif From 2e10afa5eb00b49c12a6b47bb75c445b01c0f08a Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 09:44:27 +0330 Subject: [PATCH 08/14] create blade files --- .../Reports/RoadItemReportService.php | 27 +++++-- .../CountryActivityPerSubItem.blade.php | 50 +++++++------ .../ProvinceActivityPerSubItem.blade.php | 74 +++++++++++++++++++ 3 files changed, 122 insertions(+), 29 deletions(-) create mode 100644 resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php index 146d3250..ae052bfe 100644 --- a/app/Services/Reports/RoadItemReportService.php +++ b/app/Services/Reports/RoadItemReportService.php @@ -10,10 +10,12 @@ class RoadItemReportService { public function countryActivityPerSubItem(int $item, string $fromDate, string $toDate): array { - $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str', 'sub_item_unit']); + $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, sub_item'); + ->selectRaw('province_id, province_fa'); foreach ($subItems as $subItem) { $query->selectRaw(" @@ -45,13 +47,15 @@ class RoadItemReportService 'data' => $activities->push($totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, - 'details' => $subItems, + 'details' => $subItems->keyBy('sub_item'), ]; } public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): Collection { - $subItems = InfoItem::query()->where('item', $item)->get(['sub_item', 'sub_item_str', 'sub_item_unit']); + $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, user_name as city_fa, city_id'); @@ -72,11 +76,22 @@ class RoadItemReportService $activities = $query->get(); + $totalItemCount = [ + 'city_fa' => 'استانی' + ]; + + foreach ($subItems as $subItem) { + $totalItemCount[] = [ + "total_count_{$subItem->sub_item}" => $activities->sum("Count_{$subItem->sub_item}"), + "total_sum_{$subItem->sub_item}" => $activities->sum("Sum_{$subItem->sub_item}"), + ]; + } + return collect([ - 'data' => $activities, + 'data' => $activities->push($totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, - 'details' => $subItems + 'details' => $subItems->keyBy('sub_item') ]); } } \ No newline at end of file diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php index 8f465ba1..62d19ec5 100644 --- a/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php +++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php @@ -23,7 +23,7 @@ - تعداد و احجام فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ + تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ {{verta($fromDate)->format('Y/n/j')}} تا تاریخ @@ -33,34 +33,38 @@ اداره کل + فعالیت های انجام شده + + + + @foreach($details as $detail) + {{ $detail->sub_item_str }} + @endforeach + + + + @foreach($details as $detail) + تعداد + مجموع ({{ $detail->sub_item_unit }}) + @endforeach - @foreach($details as $detail) - - -
- {{ $detail->sub_item_str }} -
- تعداد - {{ $detail["sub_item_unit"] }}مجموع -
-
- - - @foreach ($activities as $activity) - - {{ $activity["province_fa"] }} + @foreach ($activities as $activity) + + {{ $activity->province_fa }} - @if($activity["sub_item"] == $detail["sub_item"]) - {{ $activity["Count_{$activity["sub_item"]}"] }} - {{ round($activity["Sum_{$activity["sub_item"]}"], 1) }} - @endif - - - @endforeach + @foreach ($details as $index => $detail) + + {{ $activity->{'Count_' . ($index)} ?? '-' }} + + + {{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }} + + @endforeach + @endforeach 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 From 01a30c763cb59c9869f34c85e4ce138e51040ef3 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 10:09:22 +0330 Subject: [PATCH 09/14] remove the nested array --- .../Reports/RoadItemsReportController.php | 4 ++-- app/Services/Reports/RoadItemReportService.php | 16 ++++++---------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 45b18fc7..be92abb6 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -252,7 +252,7 @@ class RoadItemsReportController extends Controller $request->toDate, ); - $name = "گزارش کشوری از فعالیت روزانه و جاری({}) - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; return Excel::download(new CountryActivityPerSubItemReport($activities), $name); } @@ -268,7 +268,7 @@ class RoadItemsReportController extends Controller $request->province_id ); - $name = "گزارش استانی از فعالیت روزانه و جاری({}) - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + $name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx'; return Excel::download(new ProvinceActivityPerSubItemReport($activities), $name); } diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php index ae052bfe..c487d526 100644 --- a/app/Services/Reports/RoadItemReportService.php +++ b/app/Services/Reports/RoadItemReportService.php @@ -37,14 +37,12 @@ class RoadItemReportService ]; foreach ($subItems as $subItem) { - $totalItemCount[] = [ - "total_count_{$subItem->sub_item}" => $activities->sum("Count_{$subItem->sub_item}"), - "total_sum_{$subItem->sub_item}" => $activities->sum("Sum_{$subItem->sub_item}"), - ]; + $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($totalItemCount), + 'data' => $activities->push((object)$totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, 'details' => $subItems->keyBy('sub_item'), @@ -81,14 +79,12 @@ class RoadItemReportService ]; foreach ($subItems as $subItem) { - $totalItemCount[] = [ - "total_count_{$subItem->sub_item}" => $activities->sum("Count_{$subItem->sub_item}"), - "total_sum_{$subItem->sub_item}" => $activities->sum("Sum_{$subItem->sub_item}"), - ]; + $totalItemCount["Count_{$subItem->sub_item}"] = $activities->sum("Count_{$subItem->sub_item}"); + $totalItemCount["Sum_{$subItem->sub_item}"] = $activities->sum("Sum_{$subItem->sub_item}"); } return collect([ - 'data' => $activities->push($totalItemCount), + 'data' => $activities->push((object)$totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, 'details' => $subItems->keyBy('sub_item') From 3158ac3102031e0123b3bda2f1aa0e37a1fe5a63 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 11:14:30 +0330 Subject: [PATCH 10/14] debug city export --- .../ProvinceActivityPerSubItemReport.php | 11 ++++++----- app/Services/Reports/RoadItemReportService.php | 8 ++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php index 6b8be60d..2d8aad5a 100644 --- a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php +++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php @@ -18,16 +18,17 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class ProvinceActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private Collection $activities){} + public function __construct(private array $activities){} public function view(): View { $activities = $this->activities; - return view('', [ - 'activities' => $activities->data, - 'fromDate' => $activities->fromDate, - 'toDate' => $activities->toDate + return view('v3.Reports.RoadItems.ProvinceActivityPerSubItem', [ + 'activities' => $activities["data"], + 'fromDate' => $activities["fromDate"], + 'toDate' => $activities["toDate"], + 'details' => $activities["details"] ]); } diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php index c487d526..240d6bb4 100644 --- a/app/Services/Reports/RoadItemReportService.php +++ b/app/Services/Reports/RoadItemReportService.php @@ -49,14 +49,14 @@ class RoadItemReportService ]; } - public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): Collection + 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, user_name as city_fa, city_id'); + ->selectRaw('province_id, province_fa, TRIM(SUBSTRING_INDEX(user_name, "استان", 1)) as city_fa, city_id'); foreach ($subItems as $subItem) { $query->selectRaw(" @@ -83,11 +83,11 @@ class RoadItemReportService $totalItemCount["Sum_{$subItem->sub_item}"] = $activities->sum("Sum_{$subItem->sub_item}"); } - return collect([ + return [ 'data' => $activities->push((object)$totalItemCount), 'fromDate' => $fromDate, 'toDate' => $toDate, 'details' => $subItems->keyBy('sub_item') - ]); + ]; } } \ No newline at end of file From 55f8b453041192b092d19226011c6918a3773dce Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 14:00:12 +0330 Subject: [PATCH 11/14] create road patrol exports --- .../V3/RoadPatrols/CountryActivity.php | 72 ++++++++++ .../V3/RoadPatrols/ProvinceActivity.php | 72 ++++++++++ .../Reports/RoadPatrolReportController.php | 124 +++-------------- .../Reports/RoadPatrolReportService.php | 126 ++++++++++++++++++ .../RoadPatrols/CountryActivity.blade.php | 102 ++++++++++++++ .../RoadPatrols/ProvinceActivity.blade.php | 98 ++++++++++++++ routes/v3.php | 5 +- 7 files changed, 493 insertions(+), 106 deletions(-) create mode 100644 app/Exports/V3/RoadPatrols/CountryActivity.php create mode 100644 app/Exports/V3/RoadPatrols/ProvinceActivity.php create mode 100644 app/Services/Reports/RoadPatrolReportService.php create mode 100644 resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php create mode 100644 resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php diff --git a/app/Exports/V3/RoadPatrols/CountryActivity.php b/app/Exports/V3/RoadPatrols/CountryActivity.php new file mode 100644 index 00000000..06ac17dd --- /dev/null +++ b/app/Exports/V3/RoadPatrols/CountryActivity.php @@ -0,0 +1,72 @@ +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..959f561a --- /dev/null +++ b/app/Exports/V3/RoadPatrols/ProvinceActivity.php @@ -0,0 +1,72 @@ +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/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index 26e218ba..be44d94a 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -8,6 +8,7 @@ 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; @@ -17,54 +18,12 @@ 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 +33,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 +50,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 RoadPatrolTable($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 RoadPatrolTable($activities), $name); } } diff --git a/app/Services/Reports/RoadPatrolReportService.php b/app/Services/Reports/RoadPatrolReportService.php new file mode 100644 index 00000000..bb22cd4d --- /dev/null +++ b/app/Services/Reports/RoadPatrolReportService.php @@ -0,0 +1,126 @@ + $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/views/v3/Reports/RoadPatrols/CountryActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php new file mode 100644 index 00000000..91fc320c --- /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($fromFa)->format('Y/n/j') }} + تا + تاریخ + {{ verta($toFa)->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..c8744f76 --- /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($fromFa)->format('Y/n/j') }} + تا + تاریخ + {{ verta($toFa)->format('Y/n/j') }} + +
+ اداره کل + + گشت راهداری +
+ تعداد کل + + اقدامات لازم جهت رسیدگی آتی + + اقدامات رسیدگی شده + + مجموع مسافت پیمایش شده(کیلومتر) + + تعداد فعالیت صورت گرفته حین گشت زنی +
+ عادی + + فوری + + آنی +
{{ $activity['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 4d3177e0..ae606cc8 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -210,7 +210,8 @@ 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'); }); From 8ecaebf34453dd310eb777742492b042cd5eb753 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 14:18:03 +0330 Subject: [PATCH 12/14] bugfix --- app/Exports/V3/RoadPatrols/CountryActivity.php | 2 -- app/Exports/V3/RoadPatrols/ProvinceActivity.php | 2 -- .../V3/Dashboard/Reports/RoadPatrolReportController.php | 9 ++++----- app/Services/Reports/RoadPatrolReportService.php | 6 ++---- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/app/Exports/V3/RoadPatrols/CountryActivity.php b/app/Exports/V3/RoadPatrols/CountryActivity.php index 06ac17dd..29be9cff 100644 --- a/app/Exports/V3/RoadPatrols/CountryActivity.php +++ b/app/Exports/V3/RoadPatrols/CountryActivity.php @@ -2,9 +2,7 @@ namespace App\Exports\V3\RoadPatrols; -use App\Models\RoadPatrolProject; use Illuminate\Contracts\View\View; -use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; diff --git a/app/Exports/V3/RoadPatrols/ProvinceActivity.php b/app/Exports/V3/RoadPatrols/ProvinceActivity.php index 959f561a..99e41d3b 100644 --- a/app/Exports/V3/RoadPatrols/ProvinceActivity.php +++ b/app/Exports/V3/RoadPatrols/ProvinceActivity.php @@ -2,9 +2,7 @@ namespace App\Exports\V3\RoadPatrols; -use App\Models\RoadPatrolProject; use Illuminate\Contracts\View\View; -use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index be44d94a..8df975dd 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -2,16 +2,15 @@ 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; @@ -56,7 +55,7 @@ class RoadPatrolReportController extends Controller $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new RoadPatrolTable($activities), $name); + return Excel::download(new CountryActivity($activities), $name); } public function provinceActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse @@ -65,6 +64,6 @@ class RoadPatrolReportController extends Controller $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new RoadPatrolTable($activities), $name); + return Excel::download(new ProvinceActivity($activities), $name); } } diff --git a/app/Services/Reports/RoadPatrolReportService.php b/app/Services/Reports/RoadPatrolReportService.php index bb22cd4d..309533b0 100644 --- a/app/Services/Reports/RoadPatrolReportService.php +++ b/app/Services/Reports/RoadPatrolReportService.php @@ -2,8 +2,6 @@ namespace App\Services\Reports; -use App\Models\InfoItem; -use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; class RoadPatrolReportService @@ -29,7 +27,7 @@ class RoadPatrolReportService (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 + FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$toDate.'") temp union SELECT province_fa, @@ -50,7 +48,7 @@ class RoadPatrolReportService (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 + FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$toDate.'") temp GROUP BY province_id' ); From 61f1d49ce38102811b25150f75a39b470b860554 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 14:28:21 +0330 Subject: [PATCH 13/14] rename the mistake of names --- .../V3/RoadPatrols/ProvinceActivity.php | 2 +- .../RoadPatrols/CountryActivity.blade.php | 4 ++-- .../RoadPatrols/ProvinceActivity.blade.php | 24 +++++++++---------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/Exports/V3/RoadPatrols/ProvinceActivity.php b/app/Exports/V3/RoadPatrols/ProvinceActivity.php index 99e41d3b..1d7d0d8d 100644 --- a/app/Exports/V3/RoadPatrols/ProvinceActivity.php +++ b/app/Exports/V3/RoadPatrols/ProvinceActivity.php @@ -20,7 +20,7 @@ class ProvinceActivity implements FromView, WithEvents, ShouldAutoSize, WithDraw { $activities = $this->activities; - return view('v3.Reports.RoadPatrols.CountryActivity', [ + return view('v3.Reports.RoadPatrols.ProvinceActivity', [ 'activities' => $activities["activities"], 'fromDate' => $activities["fromDate"], 'toDate' => $activities["toDate"] diff --git a/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php index 91fc320c..0e94bde7 100644 --- a/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php +++ b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php @@ -29,10 +29,10 @@ گزارش گشت راهداری و ترابری از تاریخ - {{ verta($fromFa)->format('Y/n/j') }} + {{ verta($fromDate)->format('Y/n/j') }} تا تاریخ - {{ verta($toFa)->format('Y/n/j') }} + {{ verta($toDate)->format('Y/n/j') }} diff --git a/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php index c8744f76..602352e5 100644 --- a/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php +++ b/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php @@ -29,10 +29,10 @@ گزارش گشت راهداری و ترابری از تاریخ - {{ verta($fromFa)->format('Y/n/j') }} + {{ verta($fromDate)->format('Y/n/j') }} تا تاریخ - {{ verta($toFa)->format('Y/n/j') }} + {{ verta($toDate)->format('Y/n/j') }} @@ -81,16 +81,16 @@ @foreach ($activities as $activity) - - {{ $activity['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'] }} - + + {{ $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 }} + @endforeach From c1c3a9e90ea98643c8bd502b947b74b706be7463 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 26 Jan 2025 14:36:35 +0330 Subject: [PATCH 14/14] delete info item enum --- app/Enums/InfoItem.php | 102 ----------------------------------------- resources/.gitignore | 2 +- 2 files changed, 1 insertion(+), 103 deletions(-) delete mode 100644 app/Enums/InfoItem.php diff --git a/app/Enums/InfoItem.php b/app/Enums/InfoItem.php deleted file mode 100644 index ebd43a83..00000000 --- a/app/Enums/InfoItem.php +++ /dev/null @@ -1,102 +0,0 @@ - [1 => 'LabeAsphalt', 2 => 'ShaneSazi', 3 => 'GodOftadegi', 4 => 'Lakegiri', - 5 => 'Maremat', 6 => 'BastarHarim', 8 => 'Darzgiri', 9 => 'Mozres', - 10 => 'TarashRooye', 11 => 'Tighzani', 12 => 'Shenrizi', 13 => 'Khakbardari', - 14 => 'TaranesheBardary' - ], - - 2 => [1 => 'PaksaziSathRah', 2 => 'TanfieAbro', 3 => 'PaksaziLashe', 4 => 'PaksaziGhono', - 5 => 'PaksaziTasadofat', 6 => 'AlafKani', 7 => 'PaksaziHarim', 8 => 'JamavariGhateat', - 9 => 'PaksaziParking', 10 => 'PaksaziKenarGharnizPol', 11 => 'PaksaziJazire', - 12 => 'PaksaziTanfieDakhelPol', 13 => 'PaksaziSifon', 14 => 'PaksaziShakheDerakhtan', 15 => 'PaksaziMavadNafti', - 16 => 'AlafKaniDasti', 17 => 'RizeshBardari', 18 => 'JamavariSang', 19 => 'Layeroobi' - ], - - 3 => [1 => 'TabloEkhtari', 2 => 'TabloEtelati', 3 => 'Shabrang', 4 => 'Baztab', 5 => 'TavizTablo', - 6 => 'Maremat', 7 => 'EslahKajShodegi', 8 => 'NasbAlaemMovaghat', 9 => 'ShibShirvani' - ], - - 4 => [1 => 'Miani', 2 => 'Pol', 3 => 'Behsazi'], - - 5 => [1 => 'NegahdariTool', 2 => 'NegahdariHashieh', 3 => 'NegahdariNoghteyi', 4 => 'NegahdariNavahi', - 5 => 'NegahdariMehgir', 6 => 'NegahdariToonel', 7 => 'TamiratCable', 8 => 'TamiratKaleCheragh', - 9 => 'TamiratMafselzani', 10 => 'TamiratTablo', 11 => 'TamiratBorjNoori' - ], - - 6 => [1 => 'KhatkeshiRangGarm', 2 => 'KhatkeshiRangSard', 3 => 'TarsimKhat', - 4 => 'EjrayeTooli', 5 => 'EjrayeArzi', 6 => 'PakKardanKhotoot' - ], - - 7 => [1 => 'RangamiziTablo', 2 => 'RangamiziCheraq', 3 => 'RangimiziPayeRoshanayi', 4 => 'RangamiziPol', - 5 => 'RangamiziDarvazi', 6 => 'RangamiziHefazFelezi', 7 => 'RangamiziNewjersi', 8 => 'RangamiziSoratgah', 9 => 'RangamiziPaye' - ], - - 8 => [1 => 'ShosteshooAlaem', 2 => 'ShosteshooTablo', 3 => 'ShosteshooJadval', 4 => 'ShosteshooNewjersi', - 5 => 'ShosteshooGuardrail', 6 => 'ShosteshooToonel', 7 => 'ShosteshooPol' - ], - - 9 => [1 => 'ImensaziSarguard', 4 => ' TamiratCheraq', 5 => 'IjadShiar', - 6 => 'Zarbegir', 7 => 'NasbSoratgir', 8 => 'IjadLarzanande', - 9 => 'OstevaneImeni', 11 => 'EhdasSoratgir', 12 => 'EjrayeNoghteyi', - 13 => 'EjrayeTooli', 14 => 'TarizMaghtaei', 15 => 'HazfMavane', 16 => 'DivarChini' - ], - - 10 => [4 => 'BarkhordBaDastfroosh', 5 => 'JamavariTabloo', 6 => 'JamavariBanner'], - - 11 => [1 => 'EhdasGharnizPol', 2 => 'Lole', 3 => 'Tatvil', 4 => 'Bazsazi', - 5 => 'TamiratAbro', 6 => 'Maremat', 7 => 'Radie' - ], - - 12 => [1 => 'Zehkeshi', 2 => 'Maremat', 3 => 'Lining', 4 => 'TamirGallery', - 5 => 'Gabarit', 6 => 'Doorbin', 7 => 'Tahvie' - ], - - 13 => [1 => 'Yakhzodaei', 2 => 'BarfRoobi', - 5 => 'MizanNamak', 7 => 'Mosaferin', 8 => 'KomakResani' - ], - - 14 => [1 => 'BenzinMasrafi', 2 => 'GazMasrafi', 3 => 'MavadNafti', 4 => 'Bazsazi', - 8 => 'Service', 9 => 'NamakPash', 10 => 'Jabejayi' - ], - - 15 => [1 => 'Tamirat', 3 => 'Jalasat'], - - 16 => [1 => 'Paksazi', 2 => 'Taradod', 3 => 'BargharariErtebat', 4 => 'AbBordegi', - 5 => 'ShekastegiPol', 6 => 'HedayatTraffici', 7 => 'Bozgoshaei', 8 => 'Jabejayi', 9 => 'Laghgiri' - ], - - 20 => [1 => 'AbniyeFani', 2 => 'Alaem', 3 => 'Taranshe', 4 => 'RoyeAphalt', - 5 => 'HarimRah', 6 => 'MashinAlat'], - - ]; - - return $subitems[$item]; - } -} \ No newline at end of file diff --git a/resources/.gitignore b/resources/.gitignore index 58b2b566..a50fbbe5 100644 --- a/resources/.gitignore +++ b/resources/.gitignore @@ -1,3 +1,3 @@ /views/* !/views/v3/ -!/views/v3/*` \ No newline at end of file +!/views/v3/* \ No newline at end of file