add more detail to api

This commit is contained in:
2025-03-03 11:59:29 +03:30
parent cc8175a15e
commit 3326ab326e
3 changed files with 99 additions and 19 deletions

View File

@@ -6,6 +6,8 @@ use App\Exports\V3\SafetyAndPrivacy\CountryActivityReport;
use App\Exports\V3\SafetyAndPrivacy\ProvinceActivityReport; use App\Exports\V3\SafetyAndPrivacy\ProvinceActivityReport;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse; use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\Province;
use App\Services\Cartables\SafetyAndPrivacyTableService; use App\Services\Cartables\SafetyAndPrivacyTableService;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -19,13 +21,19 @@ class SafetyAndPrivacyReportController extends Controller
public function countryActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse public function countryActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse
{ {
$data = $safetyAndPrivacyTableService->countryActivity($request); $data = $safetyAndPrivacyTableService->countryActivity($request);
return $this->successResponse($data['activities']); return $this->successResponse([
'activities' => $data['activities'],
'provinces' => Province::all(['id', 'name_fa'])
]);
} }
public function provinceActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse public function provinceActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): JsonResponse
{ {
$data = $safetyAndPrivacyTableService->provinceActivity($request); $data = $safetyAndPrivacyTableService->provinceActivity($request);
return $this->successResponse($data['activities']); return $this->successResponse([
'activities' => $data['activities'],
'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']),
]);
} }
public function countryExcelActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse public function countryExcelActivity(Request $request, SafetyAndPrivacyTableService $safetyAndPrivacyTableService): BinaryFileResponse

View File

@@ -165,7 +165,7 @@ class SafetyAndPrivacyController extends Controller
public function deserialize(SafetyAndPrivacy $safetyAndPrivacy): JsonResponse public function deserialize(SafetyAndPrivacy $safetyAndPrivacy): JsonResponse
{ {
$judiciaries = isset($safetyAndPrivacy->judiciary_document) ? unserialize($safetyAndPrivacy->judiciary_document) : []; $judiciaries = $safetyAndPrivacy->judiciary_document ? unserialize($safetyAndPrivacy->judiciary_document) : [];
$result = []; $result = [];

View File

@@ -61,25 +61,61 @@ class SafetyAndPrivacyTableService
); );
$countryTotalSum = 0; $countryTotalSum = 0;
$activities[]["name_fa"] = 'کشوری'; $countryData = [
$activities[]["province_id"] = -1; 'name_fa' => 'کشوری',
'province_id' => -1,
'89' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'90' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'91' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
];
foreach ($country as $key => $value) { foreach ($country as $key => $value) {
$countryTotalSum += $value->qty; $countryTotalSum += $value->qty;
$activities[][$value->info_id][$value->step] = $value->qty; $countryData[$value->info_id][$value->step] = $value->qty;
$activities[]["sum"] = $countryTotalSum; $countryData["sum"] = $countryTotalSum;
} }
$activities[] = $countryData;
$provinces = DB::select( $provinces = DB::select(
"SELECT province_id, province_fa, COUNT(*) as qty,info_id, step, step_fa, info_fa FROM safety_and_privacy where created_at BETWEEN '".$fromDate."' and '".$toDate."' GROUP BY info_id,step,province_id,province_fa" "SELECT province_id, province_fa, COUNT(*) as qty,info_id, step, step_fa, info_fa FROM safety_and_privacy where created_at BETWEEN '".$fromDate."' and '".$toDate."' GROUP BY info_id,step,province_id,province_fa"
); );
$provinceTotalSum = 0; $provinceTotalSum = 0;
$provinceData = [
'89' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'90' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'91' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
];
foreach ($provinces as $key => $value) { foreach ($provinces as $key => $value) {
$provinceTotalSum += $value->qty; $provinceTotalSum += $value->qty;
$activities[][$value->info_id][$value->step] = $value->qty; $provinceData[$value->info_id][$value->step] = $value->qty;
$activities[]["sum"] = $provinceTotalSum; $provinceData["sum"] = $provinceTotalSum;
$activities[]["province_fa"] = $value->province_fa; $provinceData["province_fa"] = $value->province_fa;
$activities[]["province_id"] = $value->province_id; $provinceData["province_id"] = $value->province_id;
$activities[] = $provinceData;
} }
return [ return [
@@ -101,25 +137,61 @@ class SafetyAndPrivacyTableService
'); ');
$provinceTotalSum = 0; $provinceTotalSum = 0;
$activities[]["name_fa"] = 'استانی'; $provinceData = [
$activities[]["edare_shahri_id"] = -1; 'name_fa' => 'استانی',
'edare_shahri_id' => -1,
'89' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'90' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'91' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
];
foreach ($province as $key => $value) { foreach ($province as $key => $value) {
$provinceTotalSum += $value->qty; $provinceTotalSum += $value->qty;
$activities[]["info-".$value->info_id]["step-".$value->step] = $value->qty; $provinceData["info-".$value->info_id]["step-".$value->step] = $value->qty;
$activities[]["sum"] = $provinceTotalSum; $provinceData["sum"] = $provinceTotalSum;
} }
$activities[] = $provinceData;
$cities = DB::select(' $cities = DB::select('
SELECT edare_shahri_id, COUNT(*) as qty,info_id, step,step_fa, info_fa FROM safety_and_privacy where province_id ='.$provinceId.' and created_at BETWEEN "'.$fromDate.'" and "'.$toDate.'" GROUP BY info_id,step,edare_shahri_id SELECT edare_shahri_id, COUNT(*) as qty,info_id, step,step_fa, info_fa FROM safety_and_privacy where province_id ='.$provinceId.' and created_at BETWEEN "'.$fromDate.'" and "'.$toDate.'" GROUP BY info_id,step,edare_shahri_id
'); ');
$cityTotalSum = 0; $cityTotalSum = 0;
$cityData = [
'89' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'90' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
'91' => [
'1' => 0,
'2' => 0,
'3' => 0,
],
];
foreach ($cities as $key => $value) { foreach ($cities as $key => $value) {
$cityTotalSum += $value->qty; $cityTotalSum += $value->qty;
$activities[][$value->info_id][$value->step] = $value->qty; $cityData[$value->info_id][$value->step] = $value->qty;
$activities[]["name_fa"] = \App\Models\EdarateShahri::query()->find($value->edare_shahri_id)->name_fa; $cityData["name_fa"] = \App\Models\EdarateShahri::query()->find($value->edare_shahri_id)->name_fa;
$activities[]["edare_shahri_id"] = $value->edare_shahri_id; $cityData["edare_shahri_id"] = $value->edare_shahri_id;
$activities[]["sum"] = $cityTotalSum; $cityData["sum"] = $cityTotalSum;
$activities[] = $cityData;
} }
return [ return [