From a295c1958b67b9b9fab091c87f8c45d757b3982f Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Wed, 8 Jan 2025 16:27:13 +0330 Subject: [PATCH 01/10] add province to user info --- app/Http/Controllers/V3/ProfileController.php | 1 + .../Controllers/V3/Reports/RoadItemsReportController.php | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/V3/ProfileController.php b/app/Http/Controllers/V3/ProfileController.php index 930a2f0a..008ec6e7 100644 --- a/app/Http/Controllers/V3/ProfileController.php +++ b/app/Http/Controllers/V3/ProfileController.php @@ -30,6 +30,7 @@ class ProfileController extends Controller 'major' => $user->major, 'degree' => $user->degree, 'mobile' => $user->mobile, + 'province_id' => $user->province_id, 'avatar' => $user->avatarUrl() ]); } diff --git a/app/Http/Controllers/V3/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Reports/RoadItemsReportController.php index 24e7c32c..fd4b1fe8 100644 --- a/app/Http/Controllers/V3/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Reports/RoadItemsReportController.php @@ -113,7 +113,8 @@ class RoadItemsReportController extends Controller $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(); $user = auth()->user(); - $isSpecialUser = in_array($user->username, ['witel', 'drdanesh']); +// $isSpecialUser = in_array($user->username, ['witel', 'drdanesh']); + $isSpecialUser = $user->hasPermissionTo("show-road-item-supervise-cartable"); $provinceId = $isSpecialUser ? null : $user->province_id; $roadItemsProjectsQuery = RoadItemsProject::query() @@ -176,7 +177,7 @@ class RoadItemsReportController extends Controller ->unionAll($roadItemsProjectsSummaryQuery) ->get(); - $edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name']); + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']); return $this->successResponse([ 'activities' => $data, From c79caa21932ea88f90aa1a5db365f361d44986a8 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Thu, 9 Jan 2025 10:18:33 +0330 Subject: [PATCH 02/10] fix the directory structure --- .../Azmayesh/AzmayeshController.php | 6 +++--- .../Azmayesh/AzmayeshSampleController.php | 16 +++++++--------- .../Azmayesh/AzmayeshTypeController.php | 2 +- .../{ => Dashboard}/ObservedItemController.php | 2 +- .../Reports/RoadItemsReportController.php | 3 +-- .../Reports/RoadPatrolReportController.php | 2 +- .../RoadItemsProjectController.php | 6 +----- .../RoadPatrolProjectController.php | 2 +- routes/v3.php | 16 ++++++++-------- 9 files changed, 24 insertions(+), 31 deletions(-) rename app/Http/Controllers/V3/{ => Dashboard}/Azmayesh/AzmayeshController.php (98%) rename app/Http/Controllers/V3/{ => Dashboard}/Azmayesh/AzmayeshSampleController.php (96%) rename app/Http/Controllers/V3/{ => Dashboard}/Azmayesh/AzmayeshTypeController.php (98%) rename app/Http/Controllers/V3/{ => Dashboard}/ObservedItemController.php (95%) rename app/Http/Controllers/V3/{ => Dashboard}/Reports/RoadItemsReportController.php (99%) rename app/Http/Controllers/V3/{ => Dashboard}/Reports/RoadPatrolReportController.php (96%) rename app/Http/Controllers/V3/{ => Dashboard}/RoadItemsProjectController.php (98%) rename app/Http/Controllers/V3/{ => Dashboard}/RoadPatrolProjectController.php (99%) diff --git a/app/Http/Controllers/V3/Azmayesh/AzmayeshController.php b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php similarity index 98% rename from app/Http/Controllers/V3/Azmayesh/AzmayeshController.php rename to app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php index fb3fd81b..72a3bd70 100644 --- a/app/Http/Controllers/V3/Azmayesh/AzmayeshController.php +++ b/app/Http/Controllers/V3/Dashboard/Azmayesh/AzmayeshController.php @@ -1,9 +1,11 @@ name('harim')->group(function () { From a246108acab8dcb5d41e8e63d9bf4c39acc0256c Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Thu, 9 Jan 2025 11:25:51 +0330 Subject: [PATCH 03/10] merge the response data to one array --- .../Reports/RoadItemsReportController.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 6e9374af..0f8df544 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -62,8 +62,7 @@ class RoadItemsReportController extends Controller }); return $this->successResponse([ - 'provincesData' => $provinceRoadItemsPerSubItem, - 'countryData' => $countryRoadItemsPerSubItem, + 'activities' => [$provinceRoadItemsPerSubItem, $countryRoadItemsPerSubItem], 'items' => $infoItems ]); } @@ -89,6 +88,20 @@ class RoadItemsReportController extends Controller ->groupBy('edarat_id', 'sub_item') ->get(); + $provinceRoadItemsPerSubItem = RoadItemsProject::query()->selectRaw(' + sub_item AS t, + COUNT(*) AS c, + CAST(SUM(CASE WHEN sub_item_data > 0 THEN sub_item_data ELSE ABS(sub_item_data) END) AS UNSIGNED) AS s, + province_id AS p, + -1 AS ci + ') + ->where('item', '=', $item) + ->where('province_id', '=', $province) + ->whereBetween('activity_date_time', [$fromDate, $toDate]) + ->where('status', '=', 1) + ->groupBy('sub_item') + ->get(); + $items = InfoItem::query()->where('item', $item)->get()->keyBy('sub_item'); $cityRoadItemsPerSubItem->each(function ($value) use ($items) { @@ -98,7 +111,7 @@ class RoadItemsReportController extends Controller }); return $this->successResponse([ - 'citiesData' => $cityRoadItemsPerSubItem, + 'activities' => [$cityRoadItemsPerSubItem, $provinceRoadItemsPerSubItem], 'items' => $items ]); } From 8060ff2d64fbf46eea81e9d20fd7ba3955a5c628 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Thu, 9 Jan 2025 11:57:24 +0330 Subject: [PATCH 04/10] add sub item to api --- .../Reports/RoadItemsReportController.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 0f8df544..103e4870 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -61,9 +61,16 @@ class RoadItemsReportController extends Controller } }); + $activities = $provinceRoadItemsPerSubItem->push(...$countryRoadItemsPerSubItem); + + $subItems = InfoItem::query() + ->where('item', $item) + ->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']); + return $this->successResponse([ - 'activities' => [$provinceRoadItemsPerSubItem, $countryRoadItemsPerSubItem], - 'items' => $infoItems + 'activities' => $activities, + 'items' => $infoItems, + 'sub_items' => $subItems, ]); } @@ -110,8 +117,10 @@ class RoadItemsReportController extends Controller } }); + $activities = $cityRoadItemsPerSubItem->push(...$provinceRoadItemsPerSubItem); + return $this->successResponse([ - 'activities' => [$cityRoadItemsPerSubItem, $provinceRoadItemsPerSubItem], + 'activities' => $activities, 'items' => $items ]); } From 1b4a6da397d223ede8cdb2357fd55728f0a2e465 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Thu, 9 Jan 2025 12:31:57 +0330 Subject: [PATCH 05/10] return more data in api --- .../V3/Dashboard/Reports/RoadItemsReportController.php | 10 ++++++++-- routes/v3.php | 8 ++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 103e4870..eda71fbf 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -62,6 +62,7 @@ class RoadItemsReportController extends Controller }); $activities = $provinceRoadItemsPerSubItem->push(...$countryRoadItemsPerSubItem); + $provinces = Province::all(['id', 'name_fa']); $subItems = InfoItem::query() ->where('item', $item) @@ -69,8 +70,8 @@ class RoadItemsReportController extends Controller return $this->successResponse([ 'activities' => $activities, - 'items' => $infoItems, 'sub_items' => $subItems, + 'provinces' => $provinces, ]); } @@ -110,6 +111,7 @@ class RoadItemsReportController extends Controller ->get(); $items = InfoItem::query()->where('item', $item)->get()->keyBy('sub_item'); + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $province)->get(['id', 'name_fa']); $cityRoadItemsPerSubItem->each(function ($value) use ($items) { if (isset($items[$value->t])) { @@ -118,10 +120,14 @@ class RoadItemsReportController extends Controller }); $activities = $cityRoadItemsPerSubItem->push(...$provinceRoadItemsPerSubItem); + $subItems = InfoItem::query() + ->where('item', $item) + ->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']); return $this->successResponse([ 'activities' => $activities, - 'items' => $items + 'edarateShahri' => $edarateShahri, + 'sub_items' => $subItems, ]); } diff --git a/routes/v3.php b/routes/v3.php index 3c05630f..60f6140b 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -195,10 +195,10 @@ Route::prefix('road_item_reports') ->controller(RoadItemsReportController::class) ->group(function () { Route::get('/get_sub_items', 'getSubItems')->name('getSubItems'); - Route::get('/get_items', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem'); - Route::get('/get_items_city', 'cityActivityPerSubItem')->name('cityActivityPerSubItem'); - Route::get('/province_statistics', 'provinceActivityPerItem')->name('provinceActivityPerItem'); - Route::get('/city_statistics', 'cityActivityPerItem')->name('cityActivityPerItem'); + Route::get('/province_activity_per_sub_item', 'provinceActivityPerSubItem')->name('provinceActivityPerSubItem'); + Route::get('/city_activity_per_sub_item', 'cityActivityPerSubItem')->name('cityActivityPerSubItem'); + Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem'); + Route::get('/city_activity_per_item', 'cityActivityPerItem')->name('cityActivityPerItem'); Route::get('/map', 'map')->name('map'); }); From 4c4593c032071ad5df81236b25d41cef4bf7fe43 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Thu, 9 Jan 2025 13:03:30 +0330 Subject: [PATCH 06/10] remove unused elements --- .../Reports/RoadItemsReportController.php | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index eda71fbf..c87e63d3 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -53,17 +53,9 @@ class RoadItemsReportController extends Controller ->groupBy('sub_item') ->get(); - $infoItems = InfoItem::query()->where('item', '=', $item)->get()->keyBy('sub_item'); - - $provinceRoadItemsPerSubItem->each(function ($value) use ($infoItems) { - if (isset($infoItems[$value->t])) { - $value->u = $infoItems[$value->t]->sub_item_unit; - } - }); $activities = $provinceRoadItemsPerSubItem->push(...$countryRoadItemsPerSubItem); $provinces = Province::all(['id', 'name_fa']); - $subItems = InfoItem::query() ->where('item', $item) ->get(['id', 'item', 'item_str', 'sub_item_str', 'sub_item_unit', 'sub_item']); @@ -110,15 +102,8 @@ class RoadItemsReportController extends Controller ->groupBy('sub_item') ->get(); - $items = InfoItem::query()->where('item', $item)->get()->keyBy('sub_item'); + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $province)->get(['id', 'name_fa']); - - $cityRoadItemsPerSubItem->each(function ($value) use ($items) { - if (isset($items[$value->t])) { - $value->u = $items[$value->t]->sub_item_unit; - } - }); - $activities = $cityRoadItemsPerSubItem->push(...$provinceRoadItemsPerSubItem); $subItems = InfoItem::query() ->where('item', $item) @@ -208,7 +193,7 @@ class RoadItemsReportController extends Controller return $this->successResponse([ 'activities' => $data, - 'edaratShahri' => $edarateShahri, + 'edarateShahri' => $edarateShahri, ]); } From 7288b7fce6ef5feb34b28cb768c96f1c11a2dd22 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 11 Jan 2025 10:26:58 +0330 Subject: [PATCH 07/10] rename the methods --- .../V3/Dashboard/Reports/RoadPatrolReportController.php | 6 +++--- routes/v3.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index ec6b8526..2c297caa 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -14,7 +14,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse; class RoadPatrolReportController extends Controller { use ApiResponse; - public function provincePatrolData(Request $request): JsonResponse + public function provincePatrolActivity(Request $request): JsonResponse { $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); @@ -23,7 +23,7 @@ class RoadPatrolReportController extends Controller return $this->successResponse($data); } - public function edarehPatrolData(Request $request): JsonResponse + public function cityPatrolActivity(Request $request): JsonResponse { $request->validate(["province_id" => "required",]); $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); @@ -33,7 +33,7 @@ class RoadPatrolReportController extends Controller return $this->successResponse($data); } - public function roadPatrolsReportTable(Request $request): BinaryFileResponse + public function excel(Request $request): BinaryFileResponse { $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; diff --git a/routes/v3.php b/routes/v3.php index 60f6140b..78e8be34 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -206,7 +206,7 @@ Route::prefix('road_patrol_reports') ->name('roadPatrolReports.') ->controller(RoadPatrolReportController::class) ->group(function () { - Route::get('/province_data', 'provincePatrolData')->name('provincePatrolData'); - Route::get('/edareh_data', 'edarehPatrolData')->name('edarehPatrolData'); - Route::get('/report_excel', 'roadPatrolsReportTable')->name('roadPatrolsReportTable'); + Route::get('/province_activity', 'provincePatrolActivity')->name('provincePatrolActivity'); + Route::get('/city_activity', 'cityPatrolActivity')->name('cityPatrolActivity'); + Route::get('/excel', 'excel')->name('excel'); }); From 8fbae148b774ca0cb952e7d8c2522bc21f9abb65 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 11 Jan 2025 13:30:35 +0330 Subject: [PATCH 08/10] add more data to api --- .../Reports/RoadItemsReportController.php | 58 +++++++++++++++---- .../Reports/RoadPatrolReportController.php | 20 +++++-- 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index c87e63d3..5c0d789c 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\V3\Dashboard\Reports; +use App\Exports\Activities\One\AllSheets as OneSheet; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\EdarateShahri; @@ -10,6 +11,8 @@ use App\Models\Province; use App\Models\RoadItemsProject; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Maatwebsite\Excel\Facades\Excel; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class RoadItemsReportController extends Controller { @@ -129,7 +132,7 @@ class RoadItemsReportController extends Controller $isSpecialUser = $user->hasPermissionTo("show-road-item-supervise-cartable"); $provinceId = $isSpecialUser ? null : $user->province_id; - $roadItemsProjectsQuery = RoadItemsProject::query() + $provinceActivity = RoadItemsProject::query() ->selectRaw('COUNT(*) AS s, province_id AS p, item AS i') ->where('status', 1) ->whereBetween('activity_date_time', [$fromDate, $toDate]) @@ -138,7 +141,7 @@ class RoadItemsReportController extends Controller }) ->groupBy('province_id', 'item'); - $roadItemsProjectsSummaryQuery = RoadItemsProject::query() + $countryActivity = RoadItemsProject::query() ->selectRaw('COUNT(*) AS s, -1 AS p, item AS i') ->where('status', 1) ->whereBetween('activity_date_time', [$fromDate, $toDate]) @@ -147,14 +150,14 @@ class RoadItemsReportController extends Controller }) ->groupBy('item'); - $data = $roadItemsProjectsQuery - ->unionAll($roadItemsProjectsSummaryQuery) + $activities = $provinceActivity + ->unionAll($countryActivity) ->get(); $provinces = Province::all(['id', 'name_fa']); return $this->successResponse([ - 'activities' => $data, + 'activities' => $activities, 'provinces' => $provinces, ]); } @@ -165,7 +168,7 @@ class RoadItemsReportController extends Controller $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(); - $roadItemsProjectsQuery = RoadItemsProject::query() + $edarehActivity = RoadItemsProject::query() ->selectRaw(' COUNT(*) AS s, edarat_id AS c, @@ -175,7 +178,7 @@ class RoadItemsReportController extends Controller ->where('province_id', $provinceId) ->groupBy('item', 'edarat_id'); - $roadItemsProjectsSummaryQuery = RoadItemsProject::query() + $cityActivity = RoadItemsProject::query() ->selectRaw(' COUNT(*) AS s, -1 AS c, @@ -185,14 +188,14 @@ class RoadItemsReportController extends Controller ->where('province_id', $provinceId) ->groupBy('item'); - $data = $roadItemsProjectsQuery - ->unionAll($roadItemsProjectsSummaryQuery) + $activities = $edarehActivity + ->unionAll($cityActivity) ->get(); $edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']); return $this->successResponse([ - 'activities' => $data, + 'activities' => $activities, 'edarateShahri' => $edarateShahri, ]); } @@ -220,4 +223,39 @@ class RoadItemsReportController extends Controller return $this->successResponse($data); } + + public function activityExcelPerItem(Request $request): BinaryFileResponse + { + auth()->user()->addActivityComplete(1034); + $name = 'گزارش از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; + return Excel::download(new OneSheet($request->fromDate, $request->toDate, $request->province), $name); + } + + public function activityExcelPerSubItem(Request $request) + { + $url_correction = $request->province ? "&province={$request->province}" : ""; + + return match ($request->type) { + 1 => redirect("/reports/two/maremat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 2 => redirect("/reports/two/paksazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 3 => redirect("/reports/two/alaem?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 4 => redirect("/reports/two/hefaz?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 5 => redirect("/reports/two/roshanaei?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 6 => redirect("/reports/two/khatkeshi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 7 => redirect("/reports/two/rangamizi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 8 => redirect("/reports/two/shosteshoo?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 9 => redirect("/reports/two/imensazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 10 => redirect("/reports/two/harim?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 11 => redirect("/reports/two/pol?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 12 => redirect("/reports/two/toonel?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 13 => redirect("/reports/two/zemestani?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 14 => redirect("/reports/two/mashinalat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 15 => redirect("/reports/two/rahdar?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 16 => redirect("/reports/two/ezterari?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + 20 => redirect("/reports/two/bazrasi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction), + default => response()->json([ + 'error' => '404' + ], 404), + }; + } } diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index 2c297caa..262cce9f 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers\V3\Dashboard\Reports; use App\Exports\V2\RoadPatrol\RoadPatrolTable\AllSheets as RoadPatrolTable; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; +use App\Models\EdarateShahri; +use App\Models\Province; use App\Models\RoadPatrolProject; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -19,8 +21,13 @@ class RoadPatrolReportController extends Controller $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); - $data = RoadPatrolProject::provincePatrolData($fromDate, $dateTo); - return $this->successResponse($data); + $activities = RoadPatrolProject::provincePatrolData($fromDate, $dateTo); + $provinces = Province::all(['id', 'name_fa']); + + return $this->successResponse([ + 'activities' => $activities, + 'provinces' => $provinces + ]); } public function cityPatrolActivity(Request $request): JsonResponse @@ -29,8 +36,13 @@ class RoadPatrolReportController extends Controller $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); - $data = RoadPatrolProject::edarehPatrolData($fromDate, $dateTo, $request->province_id); - return $this->successResponse($data); + $activities = RoadPatrolProject::edarehPatrolData($fromDate, $dateTo, $request->province_id); + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); + + return $this->successResponse([ + 'activities' => $activities, + 'edarateShahri' => $edarateShahri, + ]); } public function excel(Request $request): BinaryFileResponse From a97c8f3f5c5e9ed2c9be40c9dc142d4f60cc8dbf Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 11 Jan 2025 13:44:56 +0330 Subject: [PATCH 09/10] add sub_item to allowed filters --- .../Controllers/V3/Dashboard/RoadItemsProjectController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php b/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php index 74af2099..0d9ecc5e 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php @@ -32,7 +32,7 @@ class RoadItemsProjectController extends Controller { $columns = array( 'id', 'user_id', 'start_lat', 'start_lng', 'end_lat', - 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', + 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item', 'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa', 'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time', 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code' @@ -139,7 +139,7 @@ class RoadItemsProjectController extends Controller { $columns = array( 'id', 'user_id', 'start_lat', 'start_lng', 'end_lat', - 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', + 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item', 'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa', 'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time', 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code' From 8141ecc0c6b8845492bf59b153654a504e2ba3b2 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 11 Jan 2025 15:43:26 +0330 Subject: [PATCH 10/10] add ostan activity to query --- .../Reports/RoadPatrolReportController.php | 104 +++++++++++++++++- 1 file changed, 101 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index 262cce9f..26e218ba 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -10,6 +10,7 @@ use App\Models\Province; use App\Models\RoadPatrolProject; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; @@ -21,7 +22,50 @@ class RoadPatrolReportController extends Controller $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); - $activities = RoadPatrolProject::provincePatrolData($fromDate, $dateTo); + $activities = DB::select('SELECT + "کشوری" as province_fa, + -1 as province_id, + COUNT(*) tedade, + SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, + SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, + SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, + SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, + SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, + ROUND(SUM(distance)) as masafat_tey_shode + FROM (SELECT + province_id, + province_fa, + distance, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode + FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp + union + SELECT + province_fa, + province_id, + COUNT(*) tedade, + SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, + SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, + SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, + SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, + SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, + ROUND(SUM(distance)) as masafat_tey_shode + FROM (SELECT + province_id, + province_fa, + distance, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode + FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp + GROUP BY province_id' + ); + $provinces = Province::all(['id', 'name_fa']); return $this->successResponse([ @@ -35,9 +79,63 @@ class RoadPatrolReportController extends Controller $request->validate(["province_id" => "required",]); $fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString(); + $provinceId = $request->province_id; - $activities = RoadPatrolProject::edarehPatrolData($fromDate, $dateTo, $request->province_id); - $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); + $activities = DB::select( + 'SELECT + province_fa, + province_id, + -1 AS edare_id, + "استانی" AS edare_name, + COUNT(*) tedade, + SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, + SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, + SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, + SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, + SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, + ROUND(SUM(distance)) as masafat_tey_shode + FROM (SELECT + province_id, + province_fa, + edare_id, + edare_name, + distance, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode + FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp + UNION + SELECT + province_fa, + province_id, + edare_id, + edare_name, + COUNT(*) tedade, + SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi, + SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori, + SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani, + SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode, + SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode, + ROUND(SUM(distance)) as masafat_tey_shode + FROM (SELECT + province_id, + province_fa, + edare_id, + edare_name, + distance, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori, + (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode, + (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode + FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp + GROUP BY edare_id + ' + ); + + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']); return $this->successResponse([ 'activities' => $activities,