from_date . ' 00:00:00'; $toDate = $request->date_to . ' 23:59:59'; $fields = [ 'fk_RegisteredEventMessage', 'road_observeds.id', 'Title', 'road_observeds.created_at', 'lat', 'lng', 'FeatureTypeTitle', 'Description', 'MobileForSendEventSms', 'road_observeds.province_id', 'province_fa', 'city_fa', 'edarate_shahri.name_fa', 'rms_last_activity_fa', 'rms_description' ]; $query = RoadObserved::leftjoin('edarate_shahri', 'road_observeds.edarate_shahri_id', 'edarate_shahri.id') ->where('rms_status', "<>", 0) ->whereNotNull('edarate_shahri_id') ->whereBetween('road_observeds.created_at', [$fromDate, $toDate]) ->select($fields); $data = DataTableFacade::run( $query, $request, allowedFilters: ['*'], allowedSortings: ['*'] ); return [ 'data' => $data, 'fromDate' => $fromDate, 'toDate' => $toDate, ]; } public function countryActivity(Request $request): array { return DB::select(" SELECT p.id AS province_id, p.name_fa AS province_name, SUM(t.rms_status = 0 ) AS residegiShode, SUM(t.rms_status = 1 ) AS egdamshode, SUM(t.rms_status = 2) AS egdamnashodeh, SUM(t.status = 0 ) AS darhalbarasi, SUM(t.status = 1 ) AS taayidshode, SUM(t.status = 2 ) AS adamtaayid, SUM(t.rms_status = 0 ) + SUM(t.rms_status = 1) + SUM(t.rms_status = 2) AS total FROM provinces p LEFT JOIN road_observeds t ON t.province_id = p.id GROUP BY p.id, p.name_fa UNION ALL SELECT -1 AS province_id, 'کل کشور' AS province_name, SUM(t.rms_status = 0 ) AS residegiShode, SUM(t.rms_status = 1 ) AS egdamshode, SUM(t.rms_status = 2) AS egdamnashodeh, SUM(t.status = 0 ) AS darhalbarasi, SUM(t.status = 1 ) AS taayidshode, SUM(t.status = 2 ) AS adamtaayid, SUM(t.rms_status = 0 ) + SUM(t.rms_status = 1) + SUM(t.rms_status = 2) AS total FROM provinces p LEFT JOIN road_observeds t ON t.province_id = p.id ORDER BY province_id "); } public function provinceActivity(int $province_id): array { return DB::select(" SELECT e.id AS edare_id, e.name_fa AS edare_name, COALESCE(SUM(t.rms_status = 0 ),0) AS residegiShode, COALESCE(SUM(t.rms_status = 1),0) AS egdamshode, COALESCE(SUM(t.rms_status = 2),0) AS egdamnashodeh, COALESCE(SUM(t.status = 0 ),0) AS darhalbarasi, COALESCE(SUM(t.status = 1 ),0) AS taayidshode, COALESCE(SUM(t.status = 2 ),0) AS adamtaayid, COALESCE(SUM(t.rms_status = 0 ) + SUM(t.rms_status = 1) + SUM(t.rms_status = 2),0)AS total FROM edarate_shahri e LEFT JOIN road_observeds t ON t.edarate_shahri_id = e.id AND t.province_id = e.province_id WHERE e.province_id = :provinceId GROUP BY e.id, e.name_fa UNION ALL SELECT -1 AS edare_id, 'کل استان' AS edare_name, COALESCE(SUM(t.rms_status = 0 ),0) AS residegiShode, COALESCE(SUM(t.rms_status = 1),0) AS egdamshode, COALESCE(SUM(t.rms_status = 2),0) AS egdamnashodeh, COALESCE(SUM(t.status = 0 ),0) AS darhalbarasi, COALESCE(SUM(t.status = 1 ),0) AS taayidshode, COALESCE(SUM(t.status = 2 ),0) AS adamtaayid, COALESCE(SUM(t.rms_status = 0 ) + SUM(t.rms_status = 1) + SUM(t.rms_status = 2),0)AS total FROM edarate_shahri e LEFT JOIN road_observeds t ON t.edarate_shahri_id = e.id AND t.province_id = e.province_id ORDER BY edare_id ", [ 'provinceId' => $province_id, ]); } }