diff --git a/app/Exports/V3/RoadPatrols/CountryActivity.php b/app/Exports/V3/RoadPatrols/CountryActivity.php index 29be9cff..dd328cc1 100644 --- a/app/Exports/V3/RoadPatrols/CountryActivity.php +++ b/app/Exports/V3/RoadPatrols/CountryActivity.php @@ -21,9 +21,10 @@ class CountryActivity implements FromView, WithEvents, ShouldAutoSize, WithDrawi $activities = $this->activities; return view('v3.Reports.RoadPatrols.CountryActivity', [ - 'activities' => $activities["activities"], - 'fromDate' => $activities["fromDate"], - 'toDate' => $activities["toDate"] + 'activities' => $activities["activities"]['data'], + 'provinces' => $activities["provinces"], + 'fromDate' => $activities["activities"]["fromDate"], + 'toDate' => $activities["activities"]["toDate"] ]); } diff --git a/app/Exports/V3/RoadPatrols/OperatorCartableReport.php b/app/Exports/V3/RoadPatrols/OperatorCartableReport.php index d1279f13..769044e3 100644 --- a/app/Exports/V3/RoadPatrols/OperatorCartableReport.php +++ b/app/Exports/V3/RoadPatrols/OperatorCartableReport.php @@ -3,6 +3,7 @@ namespace App\Exports\V3\RoadPatrols; use Illuminate\Contracts\View\View; +use Illuminate\Database\Eloquent\Collection; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; @@ -14,7 +15,7 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class OperatorCartableReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private array $data){} + public function __construct(private Collection $data){} public function view(): View { @@ -62,7 +63,7 @@ class OperatorCartableReport implements FromView, WithEvents, ShouldAutoSize, Wi $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('q1'); + $drawing2->setCoordinates('i1'); return [$drawing, $drawing2]; } } \ No newline at end of file diff --git a/app/Exports/V3/RoadPatrols/ProvinceActivity.php b/app/Exports/V3/RoadPatrols/ProvinceActivity.php index 1d7d0d8d..4118fd19 100644 --- a/app/Exports/V3/RoadPatrols/ProvinceActivity.php +++ b/app/Exports/V3/RoadPatrols/ProvinceActivity.php @@ -21,9 +21,10 @@ class ProvinceActivity implements FromView, WithEvents, ShouldAutoSize, WithDraw $activities = $this->activities; return view('v3.Reports.RoadPatrols.ProvinceActivity', [ - 'activities' => $activities["activities"], - 'fromDate' => $activities["fromDate"], - 'toDate' => $activities["toDate"] + 'activities' => $activities["activities"]['data'], + 'edarateShahri' => $activities["edarateShahri"], + 'fromDate' => $activities["activities"]["fromDate"], + 'toDate' => $activities["activities"]["toDate"] ]); } diff --git a/app/Exports/V3/RoadPatrols/SupervisorCartableReport.php b/app/Exports/V3/RoadPatrols/SupervisorCartableReport.php index 12f05996..b4e67b7a 100644 --- a/app/Exports/V3/RoadPatrols/SupervisorCartableReport.php +++ b/app/Exports/V3/RoadPatrols/SupervisorCartableReport.php @@ -3,6 +3,7 @@ namespace App\Exports\V3\RoadPatrols; use Illuminate\Contracts\View\View; +use Illuminate\Database\Eloquent\Collection; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; @@ -14,7 +15,7 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; class SupervisorCartableReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private array $data){} + public function __construct(private Collection $data){} public function view(): View { @@ -62,7 +63,7 @@ class SupervisorCartableReport implements FromView, WithEvents, ShouldAutoSize, $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('q1'); + $drawing2->setCoordinates('i1'); return [$drawing, $drawing2]; } } \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php index 81a8425d..70d15be0 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php @@ -90,30 +90,6 @@ class RoadItemsReportController extends Controller ]); } - public function map(Request $request): JsonResponse - { - $provinceId = $request->province_id; - $cityId = $request->city_id; - $subId = $request->sub_id; - $item = $request->item; - $dateFrom = $request->date_from ? $request->date_from . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); - $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); - - $data = RoadItemsProject::query() - ->where('is_new', '=', 1) - ->when($provinceId, fn($query) => $query->where('province_id', '=', $provinceId)) - ->when($cityId, fn($query) => $query->where('city_id', '=', $cityId)) - ->when($subId, fn($query) => $query->where('sub_items', 'like', '%' . $subId . '%')) - ->when($item, fn($query) => $query->where('item', '=', $item)) - ->when(!is_null($request->status), fn($query) => $query->where('status', '=', $request->status)) - ->whereBetween('activity_date', [$dateFrom, $dateTo]) - ->leftJoin('users', 'users.id', '=', 'road_items_projects.user_id') - ->select('road_items_projects.id as i', 'start_lat as l', 'start_lng as g', 'status') - ->get(); - - return $this->successResponse($data); - } - public function countryActivityExcelPerItem(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse { auth()->user()->addActivityComplete(1034); @@ -169,4 +145,34 @@ class RoadItemsReportController extends Controller 'edarateShahri' => EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']), ]), $name); } + + public function activitiesOnMap(Request $request): JsonResponse + { + $provinceId = $request->province_id; + $cityId = $request->city_id; + $subId = $request->sub_id; + $item = $request->item; + $status = $request->status; + $dateFrom = $request->date_from ? $request->date_from . ' 00:00:00' : now()->startOfDay()->toDateTimeString(); + $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); + + $data = RoadItemsProject::query() + ->where('is_new', '=', 1) + ->when($provinceId, fn($query, $provinceId) => $query->where('road_items_projects.province_id', '=', $provinceId)) + ->when($cityId, fn($query, $cityId) => $query->where('road_items_projects.city_id', '=', $cityId)) + ->when($subId, fn($query, $subId) => $query->where('sub_items', 'like', '%' . $subId . '%')) + ->when($item, fn($query, $item) => $query->where('item', '=', $item)) + ->when(!is_null($status), fn($query, $status) => $query->where('status', '=', $status)) + ->leftJoin('users', 'users.id', '=', 'road_items_projects.user_id') + ->whereBetween('road_items_projects.activity_date', [$dateFrom, $dateTo]) + ->select('road_items_projects.id as i', 'start_lat as l', 'start_lng as g', 'status') + ->get(); + + return $this->successResponse($data); + } + + public function showOnMap(RoadItemsProject $roadItemsProject): JsonResponse + { + return $this->successResponse($roadItemsProject->load(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); + } } diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php index d45967b6..9f485e05 100644 --- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php @@ -21,10 +21,7 @@ class RoadPatrolReportController extends Controller use ApiResponse; public function countryPatrolActivity(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse { - $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(); - - $activities = $roadPatrolReportService->countryActivity($fromDate, $toDate); + $activities = $roadPatrolReportService->countryActivity($request); $provinces = Province::all(['id', 'name_fa']); @@ -37,13 +34,10 @@ class RoadPatrolReportController extends Controller public function provincePatrolActivity(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse { $request->validate(["province_id" => "required",]); - $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(); - $provinceId = $request->province_id; - $activities = $roadPatrolReportService->provinceActivity($fromDate, $toDate, $provinceId); + $activities = $roadPatrolReportService->provinceActivity($request); - $edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']); + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); return $this->successResponse([ 'activities' => $activities['data'], @@ -53,40 +47,49 @@ class RoadPatrolReportController extends Controller public function countryActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse { - $activities = $roadPatrolReportService->countryActivity($request->from_date, $request->to_date); + $activities = $roadPatrolReportService->countryActivity($request); + $provinces = Province::all(['id', 'name_fa']); $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new CountryActivity($activities), $name); + return Excel::download(new CountryActivity([ + 'activities' => $activities, + 'provinces' => $provinces, + ]), $name); } public function provinceActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse { - $activities = $roadPatrolReportService->provinceActivity($request->from_date, $request->to_date, $request->province_id); + $activities = $roadPatrolReportService->provinceActivity($request); + $edarateShahri = EdarateShahri::query()->where('province_id', '=', $request->province_id)->get(['id', 'name_fa']); $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx'; - return Excel::download(new ProvinceActivity($activities), $name); + return Excel::download(new ProvinceActivity([ + 'activities' => $activities, + 'edarateShahri' => $edarateShahri, + ]), $name); } public function activitiesOnMap(Request $request): JsonResponse { - $date_from = $request->date_from ? $request->date_from .' 00:00:00' : Date('Y-m-d') .' 00:00:00'; - $date_to = $request->date_to ? $request->date_to.' 23:59:59' : (new \DateTime('tomorrow'))->format('Y-m-d').' 23:59:59'; + $date_from = $request->from_date ? $request->from_date .' 00:00:00' : now()->startOfDay()->toDateTimeString(); + $date_to = $request->date_to ? $request->date_to.' 23:59:59' : now()->addDay()->startOfDay()->toDateTimeString(); + $provinceId = $request->province_id; + $edareId = $request->edare_id; - $data = RoadPatrol::query()->when($request->province_id, function ($query, $province) { - return $query->where('province_id', '=', $province); - }) - ->when($request->edare_id, function ($query, $edare_id) { - return $query->where('edare_id', '=', $edare_id); - }) - ->whereBetween('created_at', [ - $date_from, - $date_to, - ]) + $data = RoadPatrol::query() + ->when($provinceId, fn($query, $provinceId) => $query->where('province_id', '=', $provinceId)) + ->when($edareId, fn($query, $edareId) => $query->where('edare_id', '=', $edareId)) + ->whereBetween('created_at', [$date_from, $date_to]) ->select('id', 'start_lat', 'start_lon') ->get(); return $this->successResponse($data); } + + public function showOnMap(RoadPatrol $roadPatrol): JsonResponse + { + return $this->successResponse($roadPatrol->load(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); + } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php index 565ca51e..c33888c3 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php @@ -2,11 +2,8 @@ namespace App\Http\Controllers\V3\Dashboard; -use App\Exports\V2\RoadPatrol\OperatorCartableExport; -use App\Exports\V2\RoadPatrol\SupervisorCartableExport; use App\Exports\V3\RoadPatrols\OperatorCartableReport; use App\Exports\V3\RoadPatrols\SupervisorCartableReport; -use App\Facades\DataTable\DataTableFacade; use App\Facades\Sms\Sms; use App\Http\Controllers\Controller; use App\Http\Requests\V3\RoadPatrolProject\DeleteRequest; @@ -87,7 +84,7 @@ class RoadPatrolProjectController extends Controller { $name = 'گزارش از کارتابل ارزیابی گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; $data = $roadPatrolReportService->supervisorCartableReport($request); - return Excel::download(new SupervisorCartableReport($data), $name); + return Excel::download(new SupervisorCartableReport($data['data']), $name); } public function operatorIndex(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse @@ -284,8 +281,8 @@ class RoadPatrolProjectController extends Controller $status = $request->status; $rms_status = $request->rms_status; - if ($request->date_from && $request->date_to) { - $date_from = $request->date_from.' 00:00:00'; + if ($request->from_date && $request->date_to) { + $date_from = $request->from_date.' 00:00:00'; $date_to = $request->date_to.' 23:59:59'; } else { $date_from = Date('Y-m-d'); @@ -324,6 +321,6 @@ class RoadPatrolProjectController extends Controller { $name = 'گزارش از کارتابل عملیات گشت راهداری ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; $data = $roadPatrolReportService->operatorCartableReport($request); - return Excel::download(new OperatorCartableReport($data), $name); + return Excel::download(new OperatorCartableReport($data['data']), $name); } } diff --git a/app/Services/Reports/RoadPatrolReportService.php b/app/Services/Reports/RoadPatrolReportService.php index c7051116..38559505 100644 --- a/app/Services/Reports/RoadPatrolReportService.php +++ b/app/Services/Reports/RoadPatrolReportService.php @@ -71,8 +71,11 @@ class RoadPatrolReportService return $data; } - public function countryActivity(string $fromDate, string $toDate): array + 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(); + $activities = DB::select('SELECT "کشوری" as province_fa, -1 as province_id, @@ -124,8 +127,12 @@ class RoadPatrolReportService ]; } - public function provinceActivity(string $fromDate, string $toDate, int $provinceId): array + public function provinceActivity(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(); + $provinceId = $request->province_id; + $activities = DB::select( 'SELECT province_fa, diff --git a/resources/views/v3/Reports/RoadItems/OperatorCartableReport.blade.php b/resources/views/v3/Reports/RoadItems/OperatorCartableReport.blade.php index 8c45948a..3894defd 100644 --- a/resources/views/v3/Reports/RoadItems/OperatorCartableReport.blade.php +++ b/resources/views/v3/Reports/RoadItems/OperatorCartableReport.blade.php @@ -33,7 +33,7 @@