diff --git a/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php new file mode 100644 index 00000000..19151055 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Reports/SafetyAndPrivacyReportController.php @@ -0,0 +1,20 @@ +successResponse(); } - public function deserialize(SafetyAndPrivacy $safety_and_privacy): JsonResponse + public function deserialize(SafetyAndPrivacy $safetyAndPrivacy): JsonResponse { - $judiciaries = isset($safety_and_privacy->judiciary_document) ? unserialize($safety_and_privacy->judiciary_document) : []; + $judiciaries = isset($safetyAndPrivacy->judiciary_document) ? unserialize($safetyAndPrivacy->judiciary_document) : []; $result = []; @@ -175,4 +175,12 @@ class SafetyAndPrivacyController extends Controller return $this->successResponse($result); } + + public function subItem(): JsonResponse + { + return $this->successResponse(InfoItem::query() + ->where('item', 17) + ->select('id', 'item', 'item_str', 'sub_item_str as name', 'sub_item_unit as unit', 'needs_image', 'needs_end_point', 'sub_item') + ->get()); + } } diff --git a/app/Services/Cartables/SafetyAndPrivacyTableService.php b/app/Services/Cartables/SafetyAndPrivacyTableService.php index 35904a97..e646367c 100644 --- a/app/Services/Cartables/SafetyAndPrivacyTableService.php +++ b/app/Services/Cartables/SafetyAndPrivacyTableService.php @@ -4,6 +4,7 @@ namespace App\Services\Cartables; use App\Facades\DataTable\DataTableFacade; use App\Http\Traits\ApiResponse; +use App\Models\Province; use App\Models\SafetyAndPrivacy; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -48,75 +49,58 @@ class SafetyAndPrivacyTableService ); } - public function countryActivity(Request $request) + public function countryActivity(Request $request): array { $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); $toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); - $country_name = "کشوری"; - $all[0]["info-89"]["step-1"] = 0; - $all[0]["info-89"]["step-2"] = 0; - $all[0]["info-89"]["step-3"] = 0; + $activities = []; - $all[0]["info-90"]["step-1"] = 0; - $all[0]["info-90"]["step-2"] = 0; - $all[0]["info-90"]["step-3"] = 0; + $country = DB::select( + "SELECT 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" + ); + $provinces = DB::select( + "SELECT province_id, 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" + ); - $all[0]["info-91"]["step-1"] = 0; - $all[0]["info-91"]["step-2"] = 0; - $all[0]["info-91"]["step-3"] = 0; - - $all[0]["sum"] = 0; - $all[0]["name_fa"] = $country_name; - $all[0]["id"] = -1; - - foreach (\App\Models\Province::all() as $key => $value) { - $all[$value->id]["info-89"]["step-1"] = 0; - $all[$value->id]["info-89"]["step-2"] = 0; - $all[$value->id]["info-89"]["step-3"] = 0; - - $all[$value->id]["info-90"]["step-1"] = 0; - $all[$value->id]["info-90"]["step-2"] = 0; - $all[$value->id]["info-90"]["step-3"] = 0; - - $all[$value->id]["info-91"]["step-1"] = 0; - $all[$value->id]["info-91"]["step-2"] = 0; - $all[$value->id]["info-91"]["step-3"] = 0; - - $all[$value->id]["sum"] = 0; - $all[$value->id]["name_fa"] = $value->name_fa; - $all[$value->id]["id"] = $value->id; + $countryTotalSum = 0; + foreach ($country as $key => $value) { + $countryTotalSum += $value->qty; + $activities[-1]["info-".$value->info_id]["step-".$value->step] = $value->qty; + $activities[-1]["sum"] = $countryTotalSum; } - $temp = DB::select("SELECT 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"); - $sum = 0; - foreach ($temp as $key => $value) { - $sum += $value->qty; - $all[0]["info-".$value->info_id]["step-".$value->step] = $value->qty; - $all[0]["sum"] = $sum; + foreach (Province::all() as $key => $value) { + $activities[$value->id]["info-89"]["step-1"] = 0; + $activities[$value->id]["info-89"]["step-2"] = 0; + $activities[$value->id]["info-89"]["step-3"] = 0; + + $activities[$value->id]["info-90"]["step-1"] = 0; + $activities[$value->id]["info-90"]["step-2"] = 0; + $activities[$value->id]["info-90"]["step-3"] = 0; + + $activities[$value->id]["info-91"]["step-1"] = 0; + $activities[$value->id]["info-91"]["step-2"] = 0; + $activities[$value->id]["info-91"]["step-3"] = 0; + + $activities[$value->id]["sum"] = 0; + $activities[$value->id]["name_fa"] = $value->name_fa; + $activities[$value->id]["id"] = $value->id; } - $temp = DB::select("SELECT province_id, 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 order by province_id"); - $province_id_flag = ""; - $sum = 0; - - foreach ($temp as $key => $value) { - - if ($province_id_flag !== $value->province_id) { - - $province_id_flag = $value->province_id; - $sum = $value->qty ; - - }else { - - $sum += $value->qty; - - } - - $all[$value->province_id]["info-".$value->info_id]["step-".$value->step] = $value->qty; - $all[$value->province_id]["sum"] = $sum; + $provinceTotalSum = 0; + foreach ($provinces as $key => $value) { + $provinceTotalSum += $value->qty; + $activities[$value->province_id]["info-".$value->info_id]["step-".$value->step] = $value->qty; + $activities[$value->province_id]["sum"] = $provinceTotalSum; + $activities[$value->province_id]["province_fa"] = $value->province_fa; } - return $all; + + return [ + 'activities' => $activities, + 'fromDate' => $fromDate, + 'toDate' => $toDate, + ]; } } diff --git a/routes/v3.php b/routes/v3.php index 8cf70f84..62781fe6 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -11,6 +11,7 @@ use App\Http\Controllers\V3\Dashboard\AccidentReceiptController; use App\Http\Controllers\V3\Dashboard\Reports\AccidentReceiptReportController; use App\Http\Controllers\V3\Dashboard\Reports\RoadItemsReportController; use App\Http\Controllers\V3\Dashboard\Reports\RoadPatrolReportController; +use App\Http\Controllers\V3\Dashboard\Reports\SafetyAndPrivacyReportController; use App\Http\Controllers\V3\Dashboard\RoadItemsProjectController; use App\Http\Controllers\V3\Dashboard\RoadObservationController; use App\Http\Controllers\V3\Dashboard\RoadPatrolProjectController; @@ -24,7 +25,7 @@ use Illuminate\Support\Facades\Route; Route::get('admin/permissions', function () { if (auth()->user()->username == 'witel') { - auth()->user()->syncPermissions(\App\Models\Permission::all()->pluck('id')->toArray()); + auth()->user()->syncPermissions(\App\Models\Permission::all()); return response('done'); } abort(404); @@ -333,3 +334,10 @@ Route::prefix('safety_and_privacy') Route::get('/{safetyAndPrivacy}', 'destroy')->name('destroy')->middleware('permission:delete-safety-and-privacy'); Route::get('/deserialize/{safetyAndPrivacy}', 'deserialize')->name('deserialize'); }); + +Route::prefix('safety_and_privacy_report') + ->name('SafetyAndPrivacyReport.') + ->controller(SafetyAndPrivacyReportController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + });