diff --git a/.env.example b/.env.example index f9adb344..14720635 100644 --- a/.env.example +++ b/.env.example @@ -98,9 +98,9 @@ HARIM_NEED_GUARANTEE_LETTER_URL='https://zamin.gov.ir/ow/api/ow/esb/response' HARIM_NEED_GUARANTEE_LETTER_PASSWORD= HARIM_NEED_GUARANTEE_LETTER_USERNAME= -BACKUP_TARGET_DIR= +BACKUP_TARGET_DIR=/var BACKUP_USER= -BACKUP_PASSWORD= +BACKUP_PASSWORD=1qaz HARIM_ENCRYPTION_KEY="TestKey" diff --git a/app/Console/Commands/DailyMovingMachineCommand.php b/app/Console/Commands/DailyMovingMachineCommand.php index 8790c357..5155f57d 100644 --- a/app/Console/Commands/DailyMovingMachineCommand.php +++ b/app/Console/Commands/DailyMovingMachineCommand.php @@ -58,14 +58,20 @@ class DailyMovingMachineCommand extends Command break; } + $machine = CMMSMachine::query()->firstWhere('machine_code', '=', $code); + MissionViolation::query()->create([ 'machine_code' => $code, - 'machine_id' => CMMSMachine::query()->firstWhere('machine_code', '=', $code)->id, + 'machine_id' => $machine->id, 'type' => MissionViolationType::KHOROJ_BEDONE_MOGAVEZ->value, 'request_date' => $date, 'mileage' => $cmm['mileageKM'], // 'exit_time' => $cmm['exit_time'], // 'enter_time' => $cmm['enter_time'], + 'province_id' => $machine->province_id, +// 'province_name' => $machine->province_fa, + 'city_id' => $machine->city_id, +// 'city_name' => $machine->city_fa, ]); } diff --git a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php new file mode 100644 index 00000000..69e2b66d --- /dev/null +++ b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php @@ -0,0 +1,110 @@ +data as $r) { + $pid = (int) $r->province_id; + $name = $r->province_name; + + if ($pid === -1) { + $national = [ + 'province_name' => $name, + 'total' => (int) ($r->total ?? 0), + 'khareg_mahdode' => (int) ($r->khareg_mahdode ?? 0), + 'gps' => (int) ($r->gps ?? 0), + 'durations' => (int) ($r->durations ?? 0), + 'bafarayand_saeti' => (int) ($r->far_h ?? 0), + 'bafarayand_rozaneh' => (int) ($r->far_d ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->un_far_h ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->un_far_d ?? 0), + 'item' => (int) ($r->item ?? 0), + 'patrol' => (int) ($r->patrol ?? 0), + ]; + + continue; + } + + if (! isset($grid[$pid])) { + $grid[$pid] = [ + 'province_name' => $name, + ]; + } + + $grid[$pid]['total'] = (int) ($r->total ?? 0); + $grid[$pid]['khareg_mahdode'] = ($r->khareg_mahdode ?? 0); + $grid[$pid]['gps'] = (int) ($r->gps ?? 0); + $grid[$pid]['durations'] = (int) ($r->durations ?? 0); + $grid[$pid]['bafarayand_saeti'] = (int) ($r->far_h ?? 0); + $grid[$pid]['bafarayand_rozaneh'] = (int) ($r->far_d ?? 0); + $grid[$pid]['bedon_bafarayand_saeti'] = (int) ($r->un_far_h ?? 0); + $grid[$pid]['bedon_bafarayand_rozaneh'] = (int) ($r->un_far_d ?? 0); + $grid[$pid]['item'] = (int) ($r->item ?? 0); + $grid[$pid]['patrol'] = (int) ($r->patrol ?? 0); + } + + $exportRows = []; + if ($national) { + $exportRows[] = $national; + } + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Report.Tradod .CountryActivityReport', [ + 'rows' => $exportRows, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + }, + ]; + } + + public function drawings(): array + { + $drawing = new Drawing(); + $drawing->setName('Logo'); + $drawing->setDescription('This is my logo'); + $drawing->setPath(public_path('/dist/logo.png')); + $drawing->setWidth(50); + $drawing->setHeight(50); + $drawing->setOffsetX(5); + $drawing->setOffsetY(5); + $drawing->setCoordinates('A1'); + + $drawing2 = new Drawing(); + $drawing2->setName('Logo'); + $drawing2->setDescription('This is my logo'); + $drawing2->setPath(public_path('/dist/141icon.png')); + $drawing2->setWidth(50); + $drawing2->setHeight(50); + $drawing2->setOffsetX(5); + $drawing2->setOffsetY(5); + $drawing2->setCoordinates('J1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php new file mode 100644 index 00000000..28e31bd0 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php @@ -0,0 +1,115 @@ +data as $r) { + $cid = (int) $r->city_id; + $name = $r->city_name; + + if ($cid === -1) { + $province = [ + 'city_name' => $name, + 'total' => (int) ($r->total ?? 0), + 'khareg_mahdode' => (int) ($r->khareg_mahdode ?? 0), + 'gps' => (int) ($r->gps ?? 0), + 'durations' => (int) ($r->durations ?? 0), + 'bafarayand_saeti' => (int) ($r->far_h ?? 0), + 'bafarayand_rozaneh' => (int) ($r->far_d ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->un_far_h ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->un_far_d ?? 0), + 'item' => (int) ($r->item ?? 0), + 'patrol' => (int) ($r->patrol ?? 0), + ]; + + continue; + } + + if (! isset($grid[$cid])) { + $grid[$cid] = [ + 'city_name' => $name, + ]; + } + + $grid[$cid]['total'] = (int) ($r->total ?? 0); + $grid[$cid]['khareg_mahdode'] = ($r->khareg_mahdode ?? 0); + $grid[$cid]['gps'] = (int) ($r->gps ?? 0); + $grid[$cid]['durations'] = (int) ($r->durations ?? 0); + $grid[$cid]['bafarayand_saeti'] = (int) ($r->far_h ?? 0); + $grid[$cid]['bafarayand_rozaneh'] = (int) ($r->far_d ?? 0); + $grid[$cid]['bedon_bafarayand_saeti'] = (int) ($r->un_far_h ?? 0); + $grid[$cid]['bedon_bafarayand_rozaneh'] = (int) ($r->un_far_d ?? 0); + $grid[$cid]['item'] = (int) ($r->item ?? 0); + $grid[$cid]['patrol'] = (int) ($r->patrol ?? 0); + + } + + $exportRows = []; + if ($province) { + $exportRows[] = $province; + } + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Report.Tradod .ProvinceActivityReport', [ + 'rows' => $exportRows, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + }, + ]; + } + + /** + * @throws Exception + */ + public function drawings(): array + { + $drawing = new Drawing(); + $drawing->setName('Logo'); + $drawing->setDescription('This is my logo'); + $drawing->setPath(public_path('/dist/logo.png')); + $drawing->setWidth(50); + $drawing->setHeight(50); + $drawing->setOffsetX(5); + $drawing->setOffsetY(5); + $drawing->setCoordinates('A1'); + + $drawing2 = new Drawing(); + $drawing2->setName('Logo'); + $drawing2->setDescription('This is my logo'); + $drawing2->setPath(public_path('/dist/141icon.png')); + $drawing2->setWidth(50); + $drawing2->setHeight(50); + $drawing2->setOffsetX(5); + $drawing2->setOffsetY(5); + $drawing2->setCoordinates('J1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Report/Violation/CountryReport.php b/app/Exports/V3/Mission/Report/Violation/CountryReport.php new file mode 100644 index 00000000..b38b65a4 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -0,0 +1,101 @@ +data as $r) { + $pid = (int) $r->province_id; + $name = $r->province_name; + + if ($pid === -1) { + $national = [ + 'province_name' => $name, + 'total' => (int) ($r->total ?? 0), + 'egdam_shode' => (int) ($r->done ?? 0), + 'bedone_egdam' => (int) ($r->undone ?? 0), + 'sabt_gps' => (int) ($r->gps ?? 0), + 'sabt_herasat' => (int) ($r->herasat ?? 0), + 'mil_gps' => (int) ($r->mil_gps ?? 0), + ]; + + continue; + } + + if (! isset($grid[$pid])) { + $grid[$pid] = [ + 'province_name' => $name, + ]; + } + $grid[$pid]['total'] = (int) ($r->total ?? 0); + $grid[$pid]['egdam_shode'] = (int) ($r->done ?? 0); + $grid[$pid]['bedone_egdam'] = (int) ($r->undone ?? 0); + $grid[$pid]['sabt_gps'] = (int) ($r->gps ?? 0); + $grid[$pid]['sabt_herasat'] = (int) ($r->herasat ?? 0); + $grid[$pid]['mil_gps'] = (int) ($r->mil_gps ?? 0); + } + + $exportRows = []; + if ($national) { + $exportRows[] = $national; + } + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Report.CountryActivityReport', [ + 'rows' => $exportRows, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + }, + ]; + } + + public function drawings(): array + { + $drawing = new Drawing(); + $drawing->setName('Logo'); + $drawing->setDescription('This is my logo'); + $drawing->setPath(public_path('/dist/logo.png')); + $drawing->setWidth(50); + $drawing->setHeight(50); + $drawing->setOffsetX(5); + $drawing->setOffsetY(5); + $drawing->setCoordinates('A1'); + + $drawing2 = new Drawing(); + $drawing2->setName('Logo'); + $drawing2->setDescription('This is my logo'); + $drawing2->setPath(public_path('/dist/141icon.png')); + $drawing2->setWidth(50); + $drawing2->setHeight(50); + $drawing2->setOffsetX(5); + $drawing2->setOffsetY(5); + $drawing2->setCoordinates('G1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php new file mode 100644 index 00000000..29a52806 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -0,0 +1,105 @@ +data as $r) { + $cid = (int) $r->city_id; + $name = $r->city_name; + + if ($cid === -1) { + $province = [ + 'city_name' => $name, + 'total' => (int) ($r->total ?? 0), + 'egdam_shode' => (int) ($r->done ?? 0), + 'bedone_egdam' => (int) ($r->undone ?? 0), + 'sabt_gps' => (int) ($r->gps ?? 0), + 'sabt_herasat' => (int) ($r->herasat ?? 0), + 'mil_gps' => (int) ($r->mil_gps ?? 0), + ]; + + continue; + } + + if (! isset($grid[$cid])) { + $grid[$cid] = [ + 'city_name' => $name, + ]; + } + $grid[$cid]['total'] = (int) ($r->total ?? 0); + $grid[$cid]['egdam_shode'] = (int) ($r->done ?? 0); + $grid[$cid]['bedone_egdam'] = (int) ($r->undone ?? 0); + $grid[$cid]['sabt_gps'] = (int) ($r->gps ?? 0); + $grid[$cid]['sabt_herasat'] = (int) ($r->herasat ?? 0); + $grid[$cid]['mil_gps'] = (int) ($r->mil_gps ?? 0); + } + + $exportRows = []; + if ($province) { + $exportRows[] = $province; + } + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Report.ProvinceActivityReport', [ + 'rows' => $exportRows, + ]); + } + + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + $event->sheet->getDelegate()->setRightToLeft(true); + }, + ]; + } + + /** + * @throws Exception + */ + public function drawings(): array + { + $drawing = new Drawing(); + $drawing->setName('Logo'); + $drawing->setDescription('This is my logo'); + $drawing->setPath(public_path('/dist/logo.png')); + $drawing->setWidth(50); + $drawing->setHeight(50); + $drawing->setOffsetX(5); + $drawing->setOffsetY(5); + $drawing->setCoordinates('A1'); + + $drawing2 = new Drawing(); + $drawing2->setName('Logo'); + $drawing2->setDescription('This is my logo'); + $drawing2->setPath(public_path('/dist/141icon.png')); + $drawing2->setWidth(50); + $drawing2->setHeight(50); + $drawing2->setOffsetX(5); + $drawing2->setOffsetY(5); + $drawing2->setCoordinates('G1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index 06a07c13..33e732b0 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -43,7 +43,7 @@ class ControlUnitController extends Controller $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'start_time' => now(), + 'start_time' => $request->time, 'km' => $request->km, ]); }); @@ -56,7 +56,7 @@ class ControlUnitController extends Controller */ public function finish(FinishRequest $request, Mission $mission, GetErrorRateService $getErrorRateService): JsonResponse { - DB::transaction(function () use ($mission, $getErrorRateService) { + DB::transaction(function () use ($mission, $getErrorRateService, $request) { $mission->histories()->create([ 'user_id' => auth()->user()->id, 'previous_state_id' => $mission->state_id, @@ -68,8 +68,8 @@ class ControlUnitController extends Controller $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), - 'finish_time' => now(), - 'mission_duration' => strtotime(now()) - strtotime($mission->start_time), + 'finish_time' => $request->time, + 'mission_duration' => strtotime($request->time) - strtotime($mission->start_time), ]); $getErrorRateService->setInputParameters($mission); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php new file mode 100644 index 00000000..aeebd473 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php @@ -0,0 +1,67 @@ +successResponse([ + 'activities' => $reportMissionService->countryActivity($request), + 'provinces' => Province::all(['id', 'name_fa']), + ]); + } + + public function provinceActivity(Request $request, ReportTradodService $reportMissionService): JsonResponse + { + return $this->successResponse([ + 'activities' =>$reportMissionService->provinceActivity($request), + 'city' => City::query() + ->where('province_id', $request->province_id) + ->where(function ($query) { + $query->where('type_id', 1) + ->orWhereIn('name_fa', ['اداره ماشين‌آلات', 'اداره نقلیه']); + }) + ->get(['id', 'name_fa']) + ]); + } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function countryExcelActivity(Request $request, ReportTradodService $reportMissionService): BinaryFileResponse + { + $data = $reportMissionService->countryActivity($request); + $name = 'گزارش کل تردد '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new CountryReport($data), $name); + } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function provinceExcelActivity(Request $request, ReportTradodService $reportMissionService): BinaryFileResponse + { + $data = $reportMissionService->provinceActivity($request); + $name = 'گزارش کل تردد '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new ProvinceReport($data), $name); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php new file mode 100644 index 00000000..3cc97a10 --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php @@ -0,0 +1,67 @@ +successResponse([ + 'activities' => $reportService->countryActivity($request), + 'provinces' => Province::all(['id', 'name_fa']), + ]); + } + + public function provinceActivity(Request $request, ReportViolationService $reportService): JsonResponse + { + return $this->successResponse([ + 'activities' =>$reportService->provinceActivity($request), + 'city' => City::query() + ->where('province_id', $request->province_id) + ->where(function ($query) { + $query->where('type_id', 1) + ->orWhereIn('name_fa', ['اداره ماشين‌آلات', 'اداره نقلیه']); + }) + ->get(['id', 'name_fa']) + ]); + } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function countryExcelActivity(Request $request, ReportViolationService $reportService): BinaryFileResponse + { + $data = $reportService->countryActivity($request); + $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new CountryReport($data), $name); + } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function provinceExcelActivity(Request $request, ReportViolationService $reportService): BinaryFileResponse + { + $data = $reportService->provinceActivity($request); + $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; + + return Excel::download(new ProvinceReport($data), $name); + } +} diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php b/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php deleted file mode 100644 index 8b3e6dc4..00000000 --- a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php +++ /dev/null @@ -1,48 +0,0 @@ -successResponse([ - 'activities' => $reportService->countryActivity($request), - 'provinces' => Province::all(['id', 'name_fa']), - ]); - } - - public function provinceActivity(Request $request, ReportService $reportService): JsonResponse - { - return $this->successResponse([ - 'activities' =>$reportService->provinceActivity($request), - 'city' => City::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']), - ]); - } -// -// public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse -// { -// $data = $operatorService->countryActivity($request); -// $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; -// -// return Excel::download(new ExcelReport($data), $name); -// } -// -// public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse -// { -// $data = $operatorService->provinceActivity($request); -// $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; -// -// return Excel::download(new ProvinceExcelReport($data, $request), $name); -// } -} diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php b/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php index 400e8428..bb8b8365 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ViolationManagementController.php @@ -96,6 +96,8 @@ class ViolationManagementController extends Controller } public function store(StoreRequest $request): JsonResponse { + $user = auth()->user(); + MissionViolation::query()->create([ 'machine_id'=> CMMSMachine::query()->where('machine_code', '=', $request->machine_code)->value('id'), 'machine_code'=> $request->machine_code, @@ -104,6 +106,10 @@ class ViolationManagementController extends Controller 'request_date' => now(), 'km' => $request->km, 'gps' => 0, + 'province_id' => $user->province_id, + 'province_name' => $user->province_fa, + 'city_id' => $user->city_id, + 'city_name' => $user->city_fa, ]); return $this->successResponse(); diff --git a/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php b/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php index c6b48b09..899b1bb0 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php +++ b/app/Http/Requests/V3/Mission/ControlUnit/FinishRequest.php @@ -24,7 +24,7 @@ class FinishRequest extends FormRequest public function rules(): array { return [ - // + 'time' => 'required|date', ]; } } diff --git a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php index e5d24b77..63c98e04 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php +++ b/app/Http/Requests/V3/Mission/ControlUnit/StartRequest.php @@ -27,6 +27,7 @@ class StartRequest extends FormRequest return [ 'code' => 'required|string', 'km' => 'required', + 'time' => 'required|date', ]; } diff --git a/app/Services/Cartables/Mission/ControlUnitService.php b/app/Services/Cartables/Mission/ControlUnitService.php index f320fa63..6b234a3c 100644 --- a/app/Services/Cartables/Mission/ControlUnitService.php +++ b/app/Services/Cartables/Mission/ControlUnitService.php @@ -2,7 +2,6 @@ namespace App\Services\Cartables\Mission; - use App\Enums\MissionStates; use App\Facades\DataTable\DataTableFacade; use App\Http\Traits\ApiResponse; @@ -19,16 +18,14 @@ class ControlUnitService $user = Auth::user(); $query = Mission::query()->whereIn('state_id', [ - MissionStates::PENDING_CONFIRMATION->value, MissionStates::START_MISSION->value - ]); + MissionStates::PENDING_CONFIRMATION->value, MissionStates::START_MISSION->value, + ]); if ($user->hasPermissionTo('manage-control-unit-station')) { $query->where('station_id', '=', $user->station_id); - } - elseif ($user->hasPermissionTo('manage-control-unit-city')) { + } elseif ($user->hasPermissionTo('manage-control-unit-city')) { $query->where('city_id', '=', $user->city_id); - } - elseif ($user->hasPermissionTo('manage-control-unit-province')) { + } elseif ($user->hasPermissionTo('manage-control-unit-province')) { $query->where('province_id', '=', $user->province_id); } @@ -41,8 +38,8 @@ class ControlUnitService 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id', 'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time', - 'code', 'category_id', 'category_name', 'explanation', 'city_id', 'city_name', 'province_id', 'station_name' + 'code', 'category_id', 'category_name', 'explanation', 'city_id', 'city_name', 'province_id', 'station_name', ] ); } -} \ No newline at end of file +} diff --git a/app/Services/Cartables/Mission/DailyMoveMachineService.php b/app/Services/Cartables/Mission/DailyMoveMachineService.php index 1f65ee67..1dbefe1b 100644 --- a/app/Services/Cartables/Mission/DailyMoveMachineService.php +++ b/app/Services/Cartables/Mission/DailyMoveMachineService.php @@ -17,11 +17,9 @@ class DailyMoveMachineService if ($user->hasPermissionTo('manage-violation-station')) { $query->whereRelation('machine', 'station_id', '=', $user->station_id); - } - elseif ($user->hasPermissionTo('manage-violation-city')) { + } elseif ($user->hasPermissionTo('manage-violation-city')) { $query->whereRelation('machine', 'city_id', '=', $user->city_id); - } - elseif ($user->hasPermissionTo('manage-violation-province')) { + } elseif ($user->hasPermissionTo('manage-violation-province')) { $query->whereRelation('machine', 'province_id', '=', $user->province_id); } diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php new file mode 100644 index 00000000..2aacae97 --- /dev/null +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -0,0 +1,155 @@ +user(); + + $query = MissionViolation::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + ); + } + + public function countryActivity(Request $request): array + { + $from = $request->from_date ?? today()->startOfDay(); + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); + + $sql = " + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(CASE WHEN m.type = 1 THEN 1 ELSE 0 END), 0) AS far_h, + COALESCE(SUM(CASE WHEN m.type = 2 THEN 1 ELSE 0 END), 0) AS far_d, + COALESCE(SUM(CASE WHEN m.type = 3 THEN 1 ELSE 0 END), 0) AS un_far_h, + COALESCE(SUM(CASE WHEN m.type = 4 THEN 1 ELSE 0 END), 0) AS un_far_d, + COALESCE(SUM(CASE WHEN m.category_id = 1 THEN 1 ELSE 0 END), 0) AS item, + COALESCE(SUM(CASE WHEN m.category_id = 2 THEN 1 ELSE 0 END), 0) AS patrol + FROM missions m + WHERE m.created_at >= :from_m_1 + AND m.created_at <= :to_m_1 + + UNION ALL + + SELECT + p.name_fa AS province_name, + p.id AS province_id, + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(CASE WHEN m.type = 1 THEN 1 ELSE 0 END), 0) AS far_h, + COALESCE(SUM(CASE WHEN m.type = 2 THEN 1 ELSE 0 END), 0) AS far_d, + COALESCE(SUM(CASE WHEN m.type = 3 THEN 1 ELSE 0 END), 0) AS un_far_h, + COALESCE(SUM(CASE WHEN m.type = 4 THEN 1 ELSE 0 END), 0) AS un_far_d, + COALESCE(SUM(CASE WHEN m.category_id = 1 THEN 1 ELSE 0 END), 0) AS item, + COALESCE(SUM(CASE WHEN m.category_id = 2 THEN 1 ELSE 0 END), 0) AS patrol + FROM provinces p + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m_2 + AND m.created_at <= :to_m_2 + GROUP BY p.id, p.name_fa + ) q + ORDER BY + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; + "; + + return DB::select($sql, [ + 'from_m_1' => $from, + 'to_m_1' => $to, + 'from_m_2' => $from, + 'to_m_2' => $to, + ]); + } + + public function provinceActivity(Request $request): array + { + $provinceId = $request->province_id ?? auth()->user()->province_id; + $from = $request->from_date ?? today()->startOfDay(); + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); + + $sql = " + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(m.type = 1), 0) AS far_h, + COALESCE(SUM(m.type = 2), 0) AS far_d, + COALESCE(SUM(m.type = 3), 0) AS un_far_h, + COALESCE(SUM(m.type = 4), 0) AS un_far_d, + COALESCE(SUM(m.category_id = 1), 0) AS item, + COALESCE(SUM(m.category_id = 2), 0) AS patrol + FROM missions m + WHERE m.created_at >= :from_m_1 + AND m.created_at <= :to_m_1 + AND m.province_id = :province_id_1 + + UNION ALL + + SELECT + c.name_fa AS city_name, + c.id AS city_id, + COUNT(m.id) AS total, + COALESCE(SUM(m.mission_duration != m.in_area_duration), 0) AS khareg_mahdode, + COALESCE(SUM(m.in_area_duration), 0) AS gps, + COALESCE(SUM(m.mission_duration), 0) AS durations, + COALESCE(SUM(m.type = 1), 0) AS far_h, + COALESCE(SUM(m.type = 2), 0) AS far_d, + COALESCE(SUM(m.type = 3), 0) AS un_far_h, + COALESCE(SUM(m.type = 4), 0) AS un_far_d, + COALESCE(SUM(m.category_id = 1), 0) AS item, + COALESCE(SUM(m.category_id = 2), 0) AS patrol + FROM cities c + LEFT JOIN missions m + ON m.city_id = c.id + AND m.created_at >= :from_m_2 + AND m.created_at <= :to_m_2 + WHERE c.province_id = :province_id_2 + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id, c.name_fa + ) q + ORDER BY + CASE WHEN q.city_id = -1 THEN 0 ELSE 1 END, + q.city_name; + "; + + return DB::select($sql, [ + 'province_id_1' => $provinceId, + 'from_m_1' => $from, + 'to_m_1' => $to, + 'province_id_2' => $provinceId, + 'from_m_2' => $from, + 'to_m_2' => $to, + ]); + } +} diff --git a/app/Services/Cartables/Mission/Report/ReportViolationService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php new file mode 100644 index 00000000..45ec40a1 --- /dev/null +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -0,0 +1,142 @@ +user(); + + $query = MissionViolation::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); + + return DataTableFacade::run( + $query, + $request, + allowedFilters: ['*'], + allowedSortings: ['*'], + ); + } + + public function countryActivity(Request $request): array + { + $from = $request->from_date ?? today()->startOfDay(); + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); + + $sql = " + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + COUNT(mv.id) AS total, + COALESCE(SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END), 0) as done, + COALESCE(SUM(CASE WHEN mv.status = 0 THEN 1 ELSE 0 END), 0) as undone, + COALESCE(SUM(CASE WHEN gps = 1 THEN 1 ELSE 0 END), 0) as gps, + COALESCE(SUM(CASE WHEN gps = 0 THEN 1 ELSE 0 END), 0) as herasat, + COALESCE(SUM(CASE WHEN gps = 1 THEN mileage ELSE 0 END),0) as mil_gps + FROM mission_violations mv + WHERE mv.created_at >= :from_mv_1 + AND mv.created_at <= :to_mv_1 + + UNION ALL + + SELECT + p.name_fa AS province_name, + p.id AS province_id, + COUNT(mv.id) AS total, + COALESCE(SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END), 0) as done, + COALESCE(SUM(CASE WHEN mv.status = 0 THEN 1 ELSE 0 END), 0) as undone, + COALESCE(SUM(CASE WHEN gps = 1 THEN 1 ELSE 0 END), 0) as gps, + COALESCE(SUM(CASE WHEN gps = 0 THEN 1 ELSE 0 END), 0) as herasat, + COALESCE(SUM(CASE WHEN gps = 1 THEN mileage ELSE 0 END),0) as mil_gps + FROM provinces p + LEFT JOIN mission_violations mv + ON mv.province_id = p.id + AND mv.type = 1 + AND mv.created_at >= :from_mv_2 + AND mv.created_at <= :to_mv_2 + GROUP BY p.id, p.name_fa + ) q + ORDER BY + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; + "; + + return DB::select($sql, [ + 'from_mv_1' => $from, + 'to_mv_1' => $to, + 'from_mv_2' => $from, + 'to_mv_2' => $to, + ]); + } + + public function provinceActivity(Request $request): array + { + $provinceId = $request->province_id ?? auth()->user()->province_id; + $from = $request->from_date ?? today()->startOfDay(); + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); + + $sql = " + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + COUNT(mv.id) AS total, + COALESCE(SUM(mv.status = 1), 0) AS done, + COALESCE(SUM(mv.status = 0), 0) AS undone, + COALESCE(SUM(mv.gps = 1), 0) AS gps, + COALESCE(SUM(mv.gps = 0), 0) AS herasat, + COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps + FROM mission_violations mv + WHERE mv.type = 1 + AND mv.created_at >= :from_mv_1 + AND mv.created_at <= :to_mv_1 + AND mv.province_id = :province_id_1 + + UNION ALL + + SELECT + c.name_fa AS city_name, + c.id AS city_id, + COUNT(mv.id) AS total, + COALESCE(SUM(mv.status = 1), 0) AS done, + COALESCE(SUM(mv.status = 0), 0) AS undone, + COALESCE(SUM(mv.gps = 1), 0) AS gps, + COALESCE(SUM(mv.gps = 0), 0) AS herasat, + COALESCE(SUM(CASE WHEN mv.gps = 1 THEN mv.mileage ELSE 0 END), 0) AS mil_gps + FROM cities c + LEFT JOIN mission_violations mv + ON mv.city_id = c.id + AND mv.type = 1 + AND mv.created_at >= :from_mv_2 + AND mv.created_at <= :to_mv_2 + WHERE c.province_id = :province_id_2 + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id, c.name_fa + ) q + ORDER BY + CASE WHEN q.city_id = -1 THEN 0 ELSE 1 END, + q.city_name; + "; + + return DB::select($sql, [ + 'province_id_1' => $provinceId, + 'from_mv_1' => $from, + 'to_mv_1' => $to, + 'province_id_2' => $provinceId, + 'from_mv_2' => $from, + 'to_mv_2' => $to, + ]); + } +} diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/ReportService.php deleted file mode 100644 index 8e3dd647..00000000 --- a/app/Services/Cartables/Mission/ReportService.php +++ /dev/null @@ -1,152 +0,0 @@ -user(); - - $query = Mission::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); - - return DataTableFacade::run( - $query, - $request, - allowedFilters: ['*'], - allowedSortings: ['*'], - ); - } - - public function countryActivity(Request $request): array - { - $from = $request->from_date ?? today()->startOfDay(); - $to = $request->to_date ?? today()->endOfDay(); - - $sql = " - WITH r AS ( - SELECT - p.id AS province_id, - p.name_fa AS province_name, - - COUNT(DISTINCT CASE - WHEN mv.type = 1 - AND mv.created_at BETWEEN :from_mv AND :to_mv - THEN mv.id - END) AS no_mission_count, - - COUNT(DISTINCT CASE - WHEN m.mission_duration != m.in_area_duration - AND m.created_at BETWEEN :from_m AND :to_m - THEN m.id - END) AS out_of_area_count - - FROM provinces p - LEFT JOIN cmms_machines cm - ON cm.province_id = p.id - LEFT JOIN mission_violations mv - ON TRIM(cm.machine_code) = TRIM(mv.machine_code) - LEFT JOIN missions m - ON m.province_id = p.id - - GROUP BY p.id, p.name_fa - ) - - SELECT - -1 AS province_id, - 'کل کشور' AS province_name, - SUM(no_mission_count) AS no_mission_count, - SUM(out_of_area_count) AS out_of_area_count - FROM r - - UNION ALL - - SELECT - province_id, province_name, no_mission_count, out_of_area_count - FROM r - - ORDER BY - CASE WHEN province_name = 'کل کشور' THEN 0 ELSE 1 END, - province_name - "; - - return DB::select($sql, [ - 'from_mv' => $from, - 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, - ]); - } - public function provinceActivity(Request $request): array - { - $provinceId = $request->province_id ?? auth()->user()->province_id; - $from = $request->from_date ?? today()->startOfDay(); - $to = $request->to_date ?? today()->endOfDay(); - - $sql = " - WITH r AS ( - SELECT - c.id AS city_id, - c.name_fa AS city_name, - - COUNT(DISTINCT CASE - WHEN mv.type = 1 - AND mv.created_at BETWEEN :from_mv AND :to_mv - THEN mv.id - END) AS no_mission_count, - - COUNT(DISTINCT CASE - WHEN m.mission_duration != m.in_area_duration - AND m.created_at BETWEEN :from_m AND :to_m - THEN m.id - END) AS out_of_area_count - - FROM cities c - - LEFT JOIN cmms_machines cm - ON cm.city_id = c.id - - LEFT JOIN mission_violations mv - ON TRIM(cm.machine_code) = TRIM(mv.machine_code) - - LEFT JOIN missions m - ON m.city_id = c.id - - WHERE c.province_id = :province_id - - GROUP BY c.id, c.name_fa - ) - - SELECT - -1 AS city_id, - 'کل استان' AS city_name, - SUM(no_mission_count) AS no_mission_count, - SUM(out_of_area_count) AS out_of_area_count - FROM r - - UNION ALL - - SELECT - city_id, city_name, no_mission_count, out_of_area_count - FROM r - - ORDER BY - CASE WHEN city_id = -1 THEN 0 ELSE 1 END, - city_name - "; - - return DB::select($sql, [ - 'province_id' => $provinceId, - 'from_mv' => $from, - 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, - ]); - } -} \ No newline at end of file diff --git a/app/Services/Cartables/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php index 97f13697..5be57872 100644 --- a/app/Services/Cartables/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -2,7 +2,6 @@ namespace App\Services\Cartables\Mission; - use App\Facades\DataTable\DataTableFacade; use App\Http\Traits\ApiResponse; use App\Models\Mission; @@ -19,11 +18,9 @@ class RequestPortalService if ($user->hasPermissionTo('manage-request-portal-station')) { $query->where('station_id', '=', $user->station_id); - } - elseif ($user->hasPermissionTo('manage-request-portal-city')) { + } elseif ($user->hasPermissionTo('manage-request-portal-city')) { $query->where('city_id', '=', $user->city_id); - } - elseif ($user->hasPermissionTo('manage-request-portal-province')) { + } elseif ($user->hasPermissionTo('manage-request-portal-province')) { $query->where('province_id', '=', $user->province_id); } @@ -36,8 +33,8 @@ class RequestPortalService 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id', 'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time', - 'code', 'category_id', 'category_name', 'explanation', 'city_id', 'city_name', 'province_id', 'station_name' + 'code', 'category_id', 'category_name', 'explanation', 'city_id', 'city_name', 'province_id', 'station_name', ] ); } -} \ No newline at end of file +} diff --git a/app/Services/Cartables/Mission/TransportationUnitService.php b/app/Services/Cartables/Mission/TransportationUnitService.php index 9aa468a0..d4e3be54 100644 --- a/app/Services/Cartables/Mission/TransportationUnitService.php +++ b/app/Services/Cartables/Mission/TransportationUnitService.php @@ -18,11 +18,9 @@ class TransportationUnitService if ($user->hasPermissionTo('manage-transportation-unit-station')) { $query->where('station_id', '=', $user->station_id); - } - elseif ($user->hasPermissionTo('manage-transportation-unit-city')) { + } elseif ($user->hasPermissionTo('manage-transportation-unit-city')) { $query->where('city_id', '=', $user->city_id); - } - elseif ($user->hasPermissionTo('manage-transportation-unit-province')) { + } elseif ($user->hasPermissionTo('manage-transportation-unit-province')) { $query->where('province_id', '=', $user->province_id); } @@ -35,8 +33,8 @@ class TransportationUnitService 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'type_fa', 'start_date', 'state_id', 'end_date', 'request_date', 'end_point', 'area', 'zone', 'zone_fa', 'start_time', 'finish_time', - 'code', 'category_id', 'category_name', 'explanation', 'km', 'city_id', 'city_name', 'province_id', 'station_name' + 'code', 'category_id', 'category_name', 'explanation', 'km', 'city_id', 'city_name', 'province_id', 'station_name', ] ); } -} \ No newline at end of file +} diff --git a/database/migrations/2026_01_25_153836_add_column_to_mission_violations_table.php b/database/migrations/2026_01_25_153836_add_column_to_mission_violations_table.php new file mode 100644 index 00000000..4a39c901 --- /dev/null +++ b/database/migrations/2026_01_25_153836_add_column_to_mission_violations_table.php @@ -0,0 +1,31 @@ +unsignedTinyInteger('province_id')->nullable(); + $table->string('province_name')->nullable(); + $table->unsignedSmallInteger('city_id')->nullable(); + $table->string('city_name')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('mission_violations', function (Blueprint $table) { + $table->dropColumn(['province_id', 'province_name', 'city_id', 'city_name']); + }); + } +}; diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php new file mode 100644 index 00000000..2f929a97 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -0,0 +1,93 @@ + + + + + + + + گزارش کل کشور + + + + + +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ استان + +کل تخلفات + اقدام شده + + اقدام نشده + + ثبت GPS + ثبت حراست + + کیلومتر GPS +
{{ $item['province_name'] ?? '-' }}{{ $item['total'] ?? '-' }}{{ $item['egdam_shode'] ?? '-' }}{{ $item['bedone_egdam'] ?? '-' }}{{ $item['sabt_gps'] ?? '-' }}{{ $item['sabt_herasat'] ?? '-' }}{{ $item['mil_gps'] ?? '-' }}
+ + diff --git a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php new file mode 100644 index 00000000..05e1a18c --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php @@ -0,0 +1,93 @@ + + + + + + + + گزارش ادارات شهرستان + + + + + +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ شهر + + کل تخلفات + اقدام شده + + اقدام نشده + + ثبت GPS + ثبت حراست + + مسافت ثبت شده GPS +
{{ $item['city_name'] ?? '-' }}{{ $item['total'] ?? '-' }}{{ $item['egdam_shode'] ?? '-' }}{{ $item['bedone_egdam'] ?? '-' }}{{ $item['sabt_gps'] ?? '-' }}{{ $item['sabt_herasat'] ?? '-' }}{{ $item['mil_gps'] ?? '-' }}
+ + diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php new file mode 100644 index 00000000..15edd38a --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php @@ -0,0 +1,110 @@ + + + + + + + + گزارش کل کشور + + + + + +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش ماموریت های انجام شده +
+ استان + + کل ماموریت + جمع ساعات GPS + + جمع ساعات ماموریت + تردد خارج از محدوده + + با فرآیند ساعتی + + با فرآیند روزانه + بدون فرآیند ساعتی + + بدون فرآیند روزانه + + فعالیت روزانه + گشت راهداری +
{{ $item['province_name'] ?? '-' }}{{ $item['total'] ?? '-' }}{{ $item['khareg_mahdode'] ?? '-' }}{{ $item['gps'] ?? '-' }}{{ $item['durations'] ?? '-' }}{{ $item['bafarayand_saeti'] ?? '-' }}{{ $item['bafarayand_rozaneh'] ?? '-' }}{{ $item['bedon_bafarayand_saeti'] ?? '-' }}{{ $item['bedon_bafarayand_rozaneh'] ?? '-' }}{{ $item['item'] ?? '-' }}{{ $item['patrol'] ?? '-' }}
+ + diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php new file mode 100644 index 00000000..8d46c155 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php @@ -0,0 +1,110 @@ + + + + + + + + گزارش ادارات شهرستان + + + + + +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش ماموریت های انجام شده +
+ شهر + + کل ماموریت + جمع ساعات GPS + + جمع ساعات ماموریت + تردد خارج از محدوده + + با فرآیند ساعتی + + با فرآیند روزانه + بدون فرآیند ساعتی + + بدون فرآیند روزانه + +فعالیت روزانه + گشت راهداری +
{{ $item['city_name'] ?? '-' }}{{ $item['total'] ?? '-' }}{{ $item['khareg_mahdode'] ?? '-' }}{{ $item['gps'] ?? '-' }}{{ $item['durations'] ?? '-' }}{{ $item['bafarayand_saeti'] ?? '-' }}{{ $item['bafarayand_rozaneh'] ?? '-' }}{{ $item['bedon_bafarayand_saeti'] ?? '-' }}{{ $item['bedon_bafarayand_rozaneh'] ?? '-' }}{{ $item['item'] ?? '-' }}{{ $item['patrol'] ?? '-' }}
+ + diff --git a/routes/v3.php b/routes/v3.php index d627201f..679c96b3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -15,6 +15,8 @@ use App\Http\Controllers\V3\Dashboard\Harim\TechnicalDeputyController; use App\Http\Controllers\V3\Dashboard\ItemsManagementController; use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; +use App\Http\Controllers\V3\Dashboard\Mission\Report\ReportTradodController; +use App\Http\Controllers\V3\Dashboard\Mission\Report\ReportViolationController; use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; use App\Http\Controllers\V3\Dashboard\Mission\ViolationManagementController; @@ -533,9 +535,9 @@ Route::prefix('missions') Route::post('/{violation}', 'update')->name('update'); Route::delete('/{violation}', 'destroy')->name('destroy'); }); - Route::prefix('report') - ->name('reports.') - ->controller(\App\Http\Controllers\V3\Dashboard\Mission\ReportController::class) + Route::prefix('report_violation') + ->name('reportsViolation.') + ->controller(ReportViolationController::class) ->group(function () { Route::get('/country_activity', 'countryActivity')->name('countryActivity') ->middleware('permission:mission-report-country'); @@ -544,6 +546,17 @@ Route::prefix('missions') Route::get('/country_excel_activity', 'countryExcelActivity')->name('countryExcelActivity'); Route::get('/province_excel_activity', 'provinceExcelActivity')->name('provinceExcelActivity'); }); + Route::prefix('report_taradod') + ->name('reportsTaradod.') + ->controller(ReportTradodController::class) + ->group(function () { + Route::get('/country_activity', 'countryActivity')->name('countryActivity') + ->middleware('permission:mission-report-country'); + Route::get('/province_activity', 'provinceActivity')->name('provinceActivity') + ->middleware('permission:mission-report-province'); + Route::get('/country_excel_activity', 'countryExcelActivity')->name('countryExcelActivity'); + Route::get('/province_excel_activity', 'provinceExcelActivity')->name('provinceExcelActivity'); + }); }); Route::prefix('harim')