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