From e6dcd36fc9e01421f4cf9c48829c520a9580d32f Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 22 Jan 2025 11:25:57 +0330 Subject: [PATCH] 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'] }}
+ + + +