user(); $fields = [ 'id','lat','lon', 'recognize_picture','action_picture','created_at','step', 'final_description', 'info_fa', 'activity_date_time', 'action_picture_document_upload_date', 'judiciary_document_upload_date', 'step_fa', 'axis_type_id', 'axis_type_name', 'action_date', 'is_finished', 'status_fa', 'supervisor_description', 'operator_description', 'finish_picture', 'evidence_picture', 'recognize_picture_second' ]; throw_if(is_null($user->edarate_shahri_id), new ProhibitedAction('اداره ای برای شما در سامانه ثبت نشده است!')); $query = SafetyAndPrivacy::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); return DataTableFacade::run( $query, $request, allowedFilters: ['*'], allowedSortings: ['*'], allowedSelects: $fields ); } public function countryActivity(int $info_id): array { return DB::select(" WITH province_data AS ( SELECT p.id AS province_id, a.id AS axis_type_id, SUM(CASE WHEN t.step = 1 THEN 1 ELSE 0 END) AS s1, SUM(CASE WHEN t.step = 2 THEN 1 ELSE 0 END) AS c2, SUM(CASE WHEN t.step = 3 THEN 1 ELSE 0 END) AS c3 FROM provinces p CROSS JOIN axis_types a LEFT JOIN safety_and_privacy t ON p.id = t.province_id AND a.id = t.axis_type_id AND t.info_id = :infoId GROUP BY p.id, a.id ) SELECT * FROM province_data UNION ALL SELECT -1 AS province_id, axis_type_id, SUM(s1) AS s1, SUM(c2) AS c2, SUM(c3) AS c3 FROM province_data GROUP BY axis_type_id ORDER BY province_id, axis_type_id ", [ 'infoId' => $info_id, ]); } public function provinceActivity(int $info_id, int $province_id): array { return DB::select(" WITH edareh_data AS ( SELECT e.id AS edareh_id, a.id AS axis_type_id, SUM(CASE WHEN t.step = 1 THEN 1 ELSE 0 END) AS c1, SUM(CASE WHEN t.step = 2 THEN 1 ELSE 0 END) AS c2, SUM(CASE WHEN t.step = 3 THEN 1 ELSE 0 END) AS c3 FROM edarate_shahri e CROSS JOIN axis_types a LEFT JOIN safety_and_privacy t ON e.id = t.edare_shahri_id AND a.id = t.axis_type_id AND t.info_id = :infoId WHERE e.province_id = :provinceId GROUP BY e.id, a.id ) SELECT * FROM edareh_data UNION ALL SELECT -1 AS edareh_id, axis_type_id, SUM(s1) AS s1, SUM(c2) AS c2, SUM(c3) AS c3 FROM edareh_data GROUP BY axis_type_id ORDER BY edareh_id, axis_type_id ", [ 'provinceId' => $province_id, 'infoId' => $info_id, ]); } }