diff --git a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php new file mode 100644 index 00000000..c5aef909 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php @@ -0,0 +1,102 @@ +data as $r) { + $pid = (int) $r->province_id; + $name = $r->province_name; + + if ($pid === -1) { + $national = [ + 'province_name' => $name, + 'total_missions' => (int) ($r->total_missions ?? 0), + 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), + 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), + 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + ]; + + continue; + } + + if (! isset($grid[$pid])) { + $grid[$pid] = [ + 'province_name' => $name, + ]; + } + + $grid[$pid]['total_missions'] = (int) ($r->total_missions ?? 0); + $grid[$pid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); + $grid[$pid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); + $grid[$pid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); + $grid[$pid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); + $grid[$pid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 0); + } + + $exportRows = []; + if ($national) { + $exportRows[] = $national; + } + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Report.CountryActivityReport', [ + 'rows' => $exportRows, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + }, + ]; + } + + 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('C1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php new file mode 100644 index 00000000..256fd5c7 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php @@ -0,0 +1,107 @@ +data as $r) { + $cid = (int) $r->city_id; + $name = $r->city_name; + + if ($cid === -1) { + $province = [ + 'city_name' => $name, + 'total_missions' => (int) ($r->total_missions ?? 0), + 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), + 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), + 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + ]; + + continue; + } + + if (! isset($grid[$cid])) { + $grid[$cid] = [ + 'city_name' => $name, + ]; + } + + $grid[$cid]['total_missions'] = (int) ($r->total_missions ?? 0); + $grid[$cid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); + $grid[$cid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); + $grid[$cid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); + $grid[$cid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); + $grid[$cid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 0); + + } + + $exportRows = []; + if ($province) { + $exportRows[] = $province; + } + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Report.ProvinceActivityReport', [ + 'rows' => $exportRows, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + }, + ]; + } + + /** + * @throws Exception + */ + 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('C1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Report/CountryReport.php b/app/Exports/V3/Mission/Report/Violation/CountryReport.php similarity index 75% rename from app/Exports/V3/Mission/Report/CountryReport.php rename to app/Exports/V3/Mission/Report/Violation/CountryReport.php index a7eae8f4..c248c340 100644 --- a/app/Exports/V3/Mission/Report/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -1,6 +1,6 @@ $name, - 'no_mission_count' => (int) ($r->no_mission_count ?? 0), - 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), + 'total_violations' => (int) ($r->total_violations ?? 0), + 'egdam_shode' => (int) ($r->egdam_shode ?? 0), + 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), + 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'sabt_herasat' => (int) ($r->herasat ?? 0), ]; continue; @@ -41,8 +44,11 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent ]; } - $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); - $grid[$pid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + $grid[$pid]['total_violations'] = (int) ($r->total_violations ?? 0); + $grid[$pid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); + $grid[$pid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); + $grid[$pid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); + $grid[$pid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); } diff --git a/app/Exports/V3/Mission/Report/ProvinceReport.php b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php similarity index 76% rename from app/Exports/V3/Mission/Report/ProvinceReport.php rename to app/Exports/V3/Mission/Report/Violation/ProvinceReport.php index 2069f4f9..4d1b02bf 100644 --- a/app/Exports/V3/Mission/Report/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -1,6 +1,6 @@ $name, - 'no_mission_count' => (int) ($r->no_mission_count ?? 0), - 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), + 'total_violations' => (int) ($r->total_violations ?? 0), + 'egdam_shode' => (int) ($r->egdam_shode ?? 0), + 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), + 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'sabt_herasat' => (int) ($r->herasat ?? 0), + ]; continue; @@ -42,8 +46,11 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven ]; } - $grid[$cid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); - $grid[$cid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + $grid[$cid]['total_violations'] = (int) ($r->total_violations ?? 0); + $grid[$cid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); + $grid[$cid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); + $grid[$cid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); + $grid[$cid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php new file mode 100644 index 00000000..d5610e3a --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php @@ -0,0 +1,61 @@ +successResponse([ + 'activities' => $reportMissionService->countryActivity($request), + 'provinces' => Province::all(['id', 'name_fa']), + ]); + } + + public function provinceActivity(Request $request, ReportTradodService $reportMissionService): JsonResponse + { + return $this->successResponse([ + 'activities' =>$reportMissionService->provinceActivity($request), + 'city' => City::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']), + ]); + } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function countryExcelActivity(Request $request, ReportTradodService $reportMissionService): BinaryFileResponse + { + $data = $reportMissionService->countryActivity($request); + $name = 'گزارش کل تردد '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new CountryReport($data), $name); + } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function provinceExcelActivity(Request $request, ReportTradodService $reportMissionService): BinaryFileResponse + { + $data = $reportMissionService->provinceActivity($request); + $name = 'گزارش کل تردد '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new ProvinceReport($data), $name); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php similarity index 72% rename from app/Http/Controllers/V3/Dashboard/Mission/ReportController.php rename to app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php index f4b04424..9be4b05b 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php @@ -1,25 +1,25 @@ successResponse([ 'activities' => $reportService->countryActivity($request), @@ -27,7 +27,7 @@ class ReportController extends Controller ]); } - public function provinceActivity(Request $request, ReportService $reportService): JsonResponse + public function provinceActivity(Request $request, ReportViolationService $reportService): JsonResponse { return $this->successResponse([ 'activities' =>$reportService->provinceActivity($request), @@ -39,7 +39,7 @@ class ReportController extends Controller * @throws Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception */ - public function countryExcelActivity(Request $request, ReportService $reportService): BinaryFileResponse + public function countryExcelActivity(Request $request, ReportViolationService $reportService): BinaryFileResponse { $data = $reportService->countryActivity($request); $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; @@ -51,7 +51,7 @@ class ReportController extends Controller * @throws Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception */ - public function provinceExcelActivity(Request $request, ReportService $reportService): BinaryFileResponse + public function provinceExcelActivity(Request $request, ReportViolationService $reportService): BinaryFileResponse { $data = $reportService->provinceActivity($request); $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php new file mode 100644 index 00000000..86520219 --- /dev/null +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -0,0 +1,161 @@ +user(); + + $query = MissionViolation::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + ); + } + + public function countryActivity(Request $request): array + { + $from = $request->from_date ?? today()->startOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + + $sql = " + WITH r AS ( + SELECT + p.id AS province_id, + p.name_fa AS province_name, + + COUNT(DISTINCT m.id) AS total_missions, + SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, + SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, + SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, + + FROM provinces + + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + + GROUP BY p.id, p.name_fa + ) + + SELECT + -1 AS province_id, + 'کل کشور' AS province_name, + SUM(total_missions) AS total_missions, + SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, + SUM(bafarayand_saeti) AS bafarayand_saeti, + SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, + SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, + SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh + FROM r + + UNION ALL + + SELECT + province_id, + province_name, + total_missions, + taradod_khareg_mahdode, + bafarayand_saeti, + bafarayand_rozaneh, + bedon_bafarayand_saeti, + bedon_bafarayand_rozaneh + FROM r + + ORDER BY + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name + "; + + return DB::select($sql, [ + 'from_mv' => $from, + 'to_mv' => $to, + ]); + } + + public function provinceActivity(Request $request): array + { + $provinceId = $request->province_id ?? auth()->user()->province_id; + $from = $request->from_date ?? today()->startOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + + $sql = " + WITH r AS ( + SELECT + c.id AS city_id, + c.name_fa AS city_name, + + COUNT(DISTINCT m.id) AS total_missions, + SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, + SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, + SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, + + FROM cities c + LEFT JOIN cmms_machines cm + ON cm.city_id = c.id + + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id, c.name_fa + ) + + SELECT + -1 AS city_id, + 'کل استان' AS city_name, + SUM(total_missions) AS total_missions, + SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, + SUM(bafarayand_saeti) AS bafarayand_saeti, + SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, + SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, + SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh + FROM r + + UNION ALL + + SELECT + city_id, + city_name, + total_missions, + taradod_khareg_mahdode, + bafarayand_saeti, + bafarayand_rozaneh, + bedon_bafarayand_saeti, + bedon_bafarayand_rozaneh + FROM r + + ORDER BY + CASE WHEN city_id = -1 THEN 0 ELSE 1 END, + city_name + "; + + return DB::select($sql, [ + 'province_id' => $provinceId, + 'from_mv' => $from, + 'to_mv' => $to, + ]); + } +} diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php similarity index 63% rename from app/Services/Cartables/Mission/ReportService.php rename to app/Services/Cartables/Mission/Report/ReportViolationService.php index 902d100c..8f56dc65 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -1,6 +1,6 @@ = :from_mv - AND mv.created_at <= :to_mv - - LEFT JOIN missions m - ON m.province_id = p.id - AND m.mission_duration != m.in_area_duration - AND m.created_at >= :from_m - AND m.created_at <= :to_m + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv GROUP BY p.id, p.name_fa ) @@ -61,14 +58,23 @@ class ReportService SELECT -1 AS province_id, 'کل کشور' AS province_name, - SUM(no_mission_count) AS no_mission_count, - SUM(out_of_area_count) AS out_of_area_count + SUM(total_violations) AS total_violations, + SUM(egdam_shode) AS egdam_shode, + SUM(bedone_egdam) AS bedone_egdam, + SUM(sabt_gps) AS sabt_gps, + SUM(sabt_herasat) AS sabt_herasat FROM r UNION ALL SELECT - province_id, province_name, no_mission_count, out_of_area_count + province_id, + province_name, + total_violations, + egdam_shode, + bedone_egdam, + sabt_gps, + sabt_herasat FROM r ORDER BY @@ -79,8 +85,6 @@ class ReportService return DB::select($sql, [ 'from_mv' => $from, 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, ]); } @@ -96,8 +100,11 @@ class ReportService c.id AS city_id, c.name_fa AS city_name, - COUNT(DISTINCT mv.id) AS no_mission_count, - COUNT(DISTINCT m.id) AS out_of_area_count + COUNT(DISTINCT mv.id) AS total_violations, + SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END) AS egdam_shode, + SUM(CASE WHEN mv.status = 2 THEN 1 ELSE 0 END) AS bedone_egdam, + SUM(CASE WHEN mv.gps = 1 THEN 1 ELSE 0 END) AS sabt_gps, + SUM(CASE WHEN mv.gps = 0 THEN 1 ELSE 0 END) AS sabt_herasat FROM cities c LEFT JOIN cmms_machines cm @@ -109,12 +116,6 @@ class ReportService AND mv.created_at >= :from_mv AND mv.created_at <= :to_mv - LEFT JOIN missions m - ON m.city_id = c.id - AND m.mission_duration != m.in_area_duration - AND m.created_at >= :from_m - AND m.created_at <= :to_m - WHERE c.province_id = :province_id AND ( c.type_id = 1 @@ -126,14 +127,23 @@ class ReportService SELECT -1 AS city_id, 'کل استان' AS city_name, - SUM(no_mission_count) AS no_mission_count, - SUM(out_of_area_count) AS out_of_area_count + SUM(total_violations) AS total_violations, + SUM(egdam_shode) AS egdam_shode, + SUM(bedone_egdam) AS bedone_egdam, + SUM(sabt_gps) AS sabt_gps, + SUM(sabt_herasat) AS sabt_herasat FROM r UNION ALL SELECT - city_id, city_name, no_mission_count, out_of_area_count + city_id, + city_name, + total_violations, + egdam_shode, + bedone_egdam, + sabt_gps, + sabt_herasat FROM r ORDER BY @@ -145,8 +155,6 @@ class ReportService 'province_id' => $provinceId, 'from_mv' => $from, 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, ]); } } diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index 1abf73da..dbf58e31 100644 --- a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -50,11 +50,23 @@ -خروج بدون ماموریت +کل تخلفات - خارج از محدوده + اقدام شده + + + اقدام نشده + + + ثبت GPS + + + ثبت حراست @@ -63,8 +75,11 @@ @foreach ($rows as $item) {{ $item['province_name'] ?? '-' }} - {{ $item['no_mission_count'] ?? '-' }} - {{ $item['out_of_area_count'] ?? '-' }} + {{ $item['total_violations'] ?? '-' }} + {{ $item['egdam_shode'] ?? '-' }} + {{ $item['bedone_egdam'] ?? '-' }} + {{ $item['sabt_gps'] ?? '-' }} + {{ $item['sabt_herasat'] ?? '-' }} @endforeach diff --git a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php index be25c1e9..c88ca80c 100644 --- a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php @@ -50,14 +50,24 @@ -خروج بدون ماموریت + کل تخلفات - خارج از محدوده + اقدام شده + + اقدام نشده + + + ثبت GPS - + + ثبت حراست + @@ -65,8 +75,11 @@ @foreach ($rows as $item) {{ $item['city_name'] ?? '-' }} - {{ $item['no_mission_count'] ?? '-' }} - {{ $item['out_of_area_count'] ?? '-' }} + {{ $item['total_violations'] ?? '-' }} + {{ $item['egdam_shode'] ?? '-' }} + {{ $item['bedone_egdam'] ?? '-' }} + {{ $item['sabt_gps'] ?? '-' }} + {{ $item['sabt_herasat'] ?? '-' }} @endforeach diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php new file mode 100644 index 00000000..e94c38f2 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php @@ -0,0 +1,93 @@ + + + + + + + + گزارش کل کشور + + + + + +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ استان + +کل تردد + تردد خارج از محدوده + + با فرآیند ساعتی + + با فرآیند روزانه + بدون فرآیند ساعتی + + بدون فرآیند روزانه +
{{ $item['province_name'] ?? '-' }}{{ $item['total_missions'] ?? '-' }}{{ $item['taradod_khareg_mahdode'] ?? '-' }}{{ $item['bafarayand_saeti'] ?? '-' }}{{ $item['bafarayand_rozaneh'] ?? '-' }}{{ $item['bedon_bafarayand_saeti'] ?? '-' }}{{ $item['bedon_bafarayand_rozaneh'] ?? '-' }}
+ + diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php new file mode 100644 index 00000000..d78d2901 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php @@ -0,0 +1,95 @@ + + + + + + + + گزارش ادارات شهرستان + + + + + +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ شهر + + کل تردد + تردد خارج از محدوده + + با فرآیند ساعتی + + با فرآیند روزانه + بدون فرآیند ساعتی + + بدون فرآیند روزانه +
{{ $item['city_name'] ?? '-' }}{{ $item['total_missions'] ?? '-' }}{{ $item['taradod_khareg_mahdode'] ?? '-' }}{{ $item['bafarayand_saeti'] ?? '-' }}{{ $item['bafarayand_rozaneh'] ?? '-' }}{{ $item['bedon_bafarayand_saeti'] ?? '-' }}{{ $item['bedon_bafarayand_rozaneh'] ?? '-' }}
+ + diff --git a/routes/v3.php b/routes/v3.php index d627201f..085febb3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -15,6 +15,8 @@ use App\Http\Controllers\V3\Dashboard\Harim\TechnicalDeputyController; use App\Http\Controllers\V3\Dashboard\ItemsManagementController; use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; +use App\Http\Controllers\V3\Dashboard\Mission\Report\ReportTradodController; +use App\Http\Controllers\V3\Dashboard\Mission\Report\ReportViolationController; use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; use App\Http\Controllers\V3\Dashboard\Mission\ViolationManagementController; @@ -535,7 +537,7 @@ Route::prefix('missions') }); Route::prefix('report') ->name('reports.') - ->controller(\App\Http\Controllers\V3\Dashboard\Mission\ReportController::class) + ->controller(ReportViolationController::class) ->group(function () { Route::get('/country_activity', 'countryActivity')->name('countryActivity') ->middleware('permission:mission-report-country'); @@ -544,6 +546,17 @@ Route::prefix('missions') Route::get('/country_excel_activity', 'countryExcelActivity')->name('countryExcelActivity'); Route::get('/province_excel_activity', 'provinceExcelActivity')->name('provinceExcelActivity'); }); + Route::prefix('report') + ->name('reports.') + ->controller(ReportTradodController::class) + ->group(function () { + Route::get('/country_activity', 'countryActivity')->name('countryActivity') + ->middleware('permission:mission-report-country'); + Route::get('/province_activity', 'provinceActivity')->name('provinceActivity') + ->middleware('permission:mission-report-province'); + Route::get('/country_excel_activity', 'countryExcelActivity')->name('countryExcelActivity'); + Route::get('/province_excel_activity', 'provinceExcelActivity')->name('provinceExcelActivity'); + }); }); Route::prefix('harim')