diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php index f0d25df3..2aacae97 100644 --- a/app/Services/Cartables/Mission/Report/ReportTradodService.php +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -35,36 +35,19 @@ class ReportTradodService SELECT 'کل کشور' AS province_name, -1 AS province_id, - SUM(t.total) AS total, - SUM(t.khareg_mahdode) AS khareg_mahdode, - SUM(t.gps) AS gps, - SUM(t.durations) AS durations, - SUM(t.far_h) AS far_h, - SUM(t.far_d) AS far_d, - SUM(t.un_far_h) AS un_far_h, - SUM(t.un_far_d) AS un_far_d, - SUM(t.item) AS item, - SUM(t.patrol) AS patrol - FROM ( - SELECT - p.id AS province_id, - COUNT(m.id) AS total, - COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, - COALESCE(SUM(m.in_area_duration), 0) AS gps, - COALESCE(SUM(m.mission_duration), 0) AS durations, - COALESCE(SUM(CASE WHEN m.type = 1 THEN 1 ELSE 0 END), 0) AS far_h, - COALESCE(SUM(CASE WHEN m.type = 2 THEN 1 ELSE 0 END), 0) AS far_d, - COALESCE(SUM(CASE WHEN m.type = 3 THEN 1 ELSE 0 END), 0) AS un_far_h, - COALESCE(SUM(CASE WHEN m.type = 4 THEN 1 ELSE 0 END), 0) AS un_far_d, - COALESCE(SUM(CASE WHEN m.category_id = 1 THEN 1 ELSE 0 END), 0) AS item, - COALESCE(SUM(CASE WHEN m.category_id = 2 THEN 1 ELSE 0 END), 0) AS patrol - FROM provinces p - LEFT JOIN missions m - ON m.province_id = p.id - AND m.created_at >= :from_m_1 - AND m.created_at <= :to_m_1 - GROUP BY p.id - ) t + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(CASE WHEN m.type = 1 THEN 1 ELSE 0 END), 0) AS far_h, + COALESCE(SUM(CASE WHEN m.type = 2 THEN 1 ELSE 0 END), 0) AS far_d, + COALESCE(SUM(CASE WHEN m.type = 3 THEN 1 ELSE 0 END), 0) AS un_far_h, + COALESCE(SUM(CASE WHEN m.type = 4 THEN 1 ELSE 0 END), 0) AS un_far_d, + COALESCE(SUM(CASE WHEN m.category_id = 1 THEN 1 ELSE 0 END), 0) AS item, + COALESCE(SUM(CASE WHEN m.category_id = 2 THEN 1 ELSE 0 END), 0) AS patrol + FROM missions m + WHERE m.created_at >= :from_m_1 + AND m.created_at <= :to_m_1 UNION ALL @@ -113,41 +96,20 @@ class ReportTradodService SELECT 'کل استان' AS city_name, -1 AS city_id, - SUM(t.total) AS total, - SUM(t.khareg_mahdode) AS khareg_mahdode, - SUM(t.gps) AS gps, - SUM(t.durations) AS durations, - SUM(t.far_h) AS far_h, - SUM(t.far_d) AS far_d, - SUM(t.un_far_h) AS un_far_h, - SUM(t.un_far_d) AS un_far_d, - SUM(t.item) AS item, - SUM(t.patrol) AS patrol - FROM ( - SELECT - c.id AS city_id, - COUNT(m.id) AS total, - COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, - COALESCE(SUM(m.in_area_duration), 0) AS gps, - COALESCE(SUM(m.mission_duration), 0) AS durations, - COALESCE(SUM(m.type = 1), 0) AS far_h, - COALESCE(SUM(m.type = 2), 0) AS far_d, - COALESCE(SUM(m.type = 3), 0) AS un_far_h, - COALESCE(SUM(m.type = 4), 0) AS un_far_d, - COALESCE(SUM(m.category_id = 1), 0) AS item, - COALESCE(SUM(m.category_id = 2), 0) AS patrol - FROM cities c - LEFT JOIN missions m - ON m.city_id = c.id - AND m.created_at >= :from_m_1 - AND m.created_at <= :to_m_1 - WHERE c.province_id = :province_id_1 - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id - ) t + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(m.type = 1), 0) AS far_h, + COALESCE(SUM(m.type = 2), 0) AS far_d, + COALESCE(SUM(m.type = 3), 0) AS un_far_h, + COALESCE(SUM(m.type = 4), 0) AS un_far_d, + COALESCE(SUM(m.category_id = 1), 0) AS item, + COALESCE(SUM(m.category_id = 2), 0) AS patrol + FROM missions m + WHERE m.created_at >= :from_m_1 + AND m.created_at <= :to_m_1 + AND m.province_id = :province_id_1 UNION ALL diff --git a/app/Services/Cartables/Mission/Report/ReportViolationService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php index 5e9f2c91..45ec40a1 100644 --- a/app/Services/Cartables/Mission/Report/ReportViolationService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -27,7 +27,6 @@ class ReportViolationService public function countryActivity(Request $request): array { $from = $request->from_date ?? today()->startOfDay(); - // اصلاحیه برای جلوگیری از خطا در صورت null بودن to_date $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " @@ -36,29 +35,15 @@ class ReportViolationService SELECT 'کل کشور' AS province_name, -1 AS province_id, - SUM(t.total) AS total, - SUM(t.done) AS done, - SUM(t.undone) AS undone, - SUM(t.gps) AS gps, - SUM(t.herasat) AS herasat, - SUM(t.mil_gps) AS mil_gps - FROM ( - SELECT - p.id AS province_id, - COUNT(mv.id) AS total, - COALESCE(SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END), 0) as done, - COALESCE(SUM(CASE WHEN mv.status = 0 THEN 1 ELSE 0 END), 0) as undone, - COALESCE(SUM(CASE WHEN gps = 1 THEN 1 ELSE 0 END), 0) as gps, - COALESCE(SUM(CASE WHEN gps = 0 THEN 1 ELSE 0 END), 0) as herasat, - COALESCE(SUM(CASE WHEN gps = 1 THEN mileage ELSE 0 END),0) as mil_gps - FROM provinces p - LEFT JOIN mission_violations mv - ON mv.province_id = p.id - AND mv.type = 1 - AND mv.created_at >= :from_mv_1 - AND mv.created_at <= :to_mv_1 - GROUP BY p.id - ) t + COUNT(mv.id) AS total, + COALESCE(SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END), 0) as done, + COALESCE(SUM(CASE WHEN mv.status = 0 THEN 1 ELSE 0 END), 0) as undone, + COALESCE(SUM(CASE WHEN gps = 1 THEN 1 ELSE 0 END), 0) as gps, + COALESCE(SUM(CASE WHEN gps = 0 THEN 1 ELSE 0 END), 0) as herasat, + COALESCE(SUM(CASE WHEN gps = 1 THEN mileage ELSE 0 END),0) as mil_gps + FROM mission_violations mv + WHERE mv.created_at >= :from_mv_1 + AND mv.created_at <= :to_mv_1 UNION ALL @@ -96,7 +81,6 @@ class ReportViolationService { $provinceId = $request->province_id ?? auth()->user()->province_id; $from = $request->from_date ?? today()->startOfDay(); - // اصلاحیه برای جلوگیری از خطا در صورت null بودن to_date $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " @@ -105,34 +89,17 @@ class ReportViolationService SELECT 'کل استان' AS city_name, -1 AS city_id, - SUM(t.total) AS total, - SUM(t.done) AS done, - SUM(t.undone) AS undone, - SUM(t.gps) AS gps, - SUM(t.herasat) AS herasat, - SUM(t.mil_gps) AS mil_gps - FROM ( - SELECT - c.id AS city_id, - COUNT(mv.id) AS total, - COALESCE(SUM(mv.status = 1), 0) AS done, - COALESCE(SUM(mv.status = 0), 0) AS undone, - COALESCE(SUM(mv.gps = 1), 0) AS gps, - COALESCE(SUM(mv.gps = 0), 0) AS herasat, - COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps - FROM cities c - LEFT JOIN mission_violations mv - ON mv.city_id = c.id - AND mv.type = 1 - AND mv.created_at >= :from_mv_1 - AND mv.created_at <= :to_mv_1 - WHERE c.province_id = :province_id_1 - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id - ) t + COUNT(mv.id) AS total, + COALESCE(SUM(mv.status = 1), 0) AS done, + COALESCE(SUM(mv.status = 0), 0) AS undone, + COALESCE(SUM(mv.gps = 1), 0) AS gps, + COALESCE(SUM(mv.gps = 0), 0) AS herasat, + COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps + FROM mission_violations mv + WHERE mv.type = 1 + AND mv.created_at >= :from_mv_1 + AND mv.created_at <= :to_mv_1 + AND mv.province_id = :province_id_1 UNION ALL @@ -147,7 +114,7 @@ class ReportViolationService COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps FROM cities c LEFT JOIN mission_violations mv - ON mv.city_id = c.id + ON mv.city_id = c.id AND mv.type = 1 AND mv.created_at >= :from_mv_2 AND mv.created_at <= :to_mv_2