From dbeaf431a38566eb4971bce93da6ba00cfdaccb4 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 29 Dec 2025 15:26:47 +0330 Subject: [PATCH 01/20] improve service cartabl --- app/Services/Cartables/Mission/ReportService.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/ReportService.php index 8e3dd647..9cc9c2e1 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/ReportService.php @@ -2,9 +2,9 @@ namespace App\Services\Cartables\Mission; -use App\Exceptions\ProhibitedAction; use App\Facades\DataTable\DataTableFacade; use App\Models\Mission; +use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -27,7 +27,7 @@ class ReportService public function countryActivity(Request $request): array { $from = $request->from_date ?? today()->startOfDay(); - $to = $request->to_date ?? today()->endOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay()?? today()->endOfDay(); $sql = " WITH r AS ( @@ -37,13 +37,13 @@ class ReportService COUNT(DISTINCT CASE WHEN mv.type = 1 - AND mv.created_at BETWEEN :from_mv AND :to_mv + AND mv.created_at >= :from_mv AND mv.created_at <= :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 + AND m.created_at >= :from_m AND m.created_at <= :to_m THEN m.id END) AS out_of_area_count @@ -87,7 +87,7 @@ class ReportService { $provinceId = $request->province_id ?? auth()->user()->province_id; $from = $request->from_date ?? today()->startOfDay(); - $to = $request->to_date ?? today()->endOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " WITH r AS ( @@ -97,13 +97,13 @@ class ReportService COUNT(DISTINCT CASE WHEN mv.type = 1 - AND mv.created_at BETWEEN :from_mv AND :to_mv + AND mv.created_at >= :from_mv AND mv.created_at <= :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 + AND m.created_at >= :from_m AND m.created_at <= :to_m THEN m.id END) AS out_of_area_count From d6358d950906f0cc4ca33b523ecdd01fd02e3fa3 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 29 Dec 2025 15:27:48 +0330 Subject: [PATCH 02/20] improve service cartabl --- app/Services/Cartables/Mission/ReportService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/ReportService.php index 9cc9c2e1..ecf958a2 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/ReportService.php @@ -4,6 +4,7 @@ namespace App\Services\Cartables\Mission; use App\Facades\DataTable\DataTableFacade; use App\Models\Mission; +use App\Models\MissionViolation; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -14,7 +15,7 @@ class ReportService { $user = auth()->user(); - $query = Mission::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); + $query =MissionViolation::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); return DataTableFacade::run( $query, From 79a5d56315a2380c6be7d4746f9432555cbead5b Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 31 Dec 2025 20:07:07 +0330 Subject: [PATCH 03/20] crate excel for volation mission --- .../V3/Mission/Violation/CountryReport.php | 90 +++++++++++++++++ .../V3/Mission/Violation/ProvinceReport.php | 99 +++++++++++++++++++ .../V3/Dashboard/Mission/ReportController.php | 45 ++++++--- .../Violation/CountryActivityReport.blade.php | 73 ++++++++++++++ .../ProvinceActivityReport.blade.php | 75 ++++++++++++++ 5 files changed, 366 insertions(+), 16 deletions(-) create mode 100644 app/Exports/V3/Mission/Violation/CountryReport.php create mode 100644 app/Exports/V3/Mission/Violation/ProvinceReport.php create mode 100644 resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php create mode 100644 resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php diff --git a/app/Exports/V3/Mission/Violation/CountryReport.php b/app/Exports/V3/Mission/Violation/CountryReport.php new file mode 100644 index 00000000..78604002 --- /dev/null +++ b/app/Exports/V3/Mission/Violation/CountryReport.php @@ -0,0 +1,90 @@ +data as $r) { + $pid = (int) $r->province_id; + $name = $r->province_name; + + if ($pid === -1) { + $national = [ + 'province_name' => $name, + 'no_mission_count' => (int) ($r->no_mission_count ?? 0), + 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), + ]; + continue; + } + + + if (!isset($grid[$pid])) { + $grid[$pid] = [ + 'province_name' => $name, + ]; + } + + $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); + $grid[$pid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + + } + + $exportRows = []; + if ($national) $exportRows[] = $national; + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.Mission.Violation.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('E1'); + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Violation/ProvinceReport.php b/app/Exports/V3/Mission/Violation/ProvinceReport.php new file mode 100644 index 00000000..7b26540a --- /dev/null +++ b/app/Exports/V3/Mission/Violation/ProvinceReport.php @@ -0,0 +1,99 @@ +data as $r) { + $pid = (int) $r->province_id; + $name = $r->city_name; + + if ($pid === -1) { + $province = [ + 'city_name' => $name, + 'no_mission_count' => (int) ($r->no_mission_count ?? 0), + 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), + ]; + continue; + } + + + if (!isset($grid[$pid])) { + $grid[$pid] = [ + 'city_name' => $name, + ]; + } + + $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); + $grid[$pid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + + } + + $exportRows = []; + if ($province) $exportRows[] = $province; + foreach ($grid as $row) { + $exportRows[] = $row; + } + + + return view('v3.Reports.Mission.Violation.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('E1'); + return [$drawing, $drawing2]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php b/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php index 8b3e6dc4..c59f4022 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; +use App\Exports\V3\Mission\Violation\CountryReport; +use App\Exports\V3\Mission\Violation\ProvinceReport; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\City; @@ -9,6 +11,9 @@ use App\Models\Province; use App\Services\Cartables\Mission\ReportService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Maatwebsite\Excel\Facades\Excel; +use PhpOffice\PhpSpreadsheet\Exception; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class ReportController extends Controller { @@ -29,20 +34,28 @@ class ReportController extends Controller '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); -// } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ + public function countryExcelActivity(Request $request, ReportService $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, ReportService $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/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php new file mode 100644 index 00000000..57103985 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php @@ -0,0 +1,73 @@ + + + + + + + + گزارش کل کشور + + + + + +@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 ($data as $item) + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ کد یکتا + +خروج بدون ماموریت + خارج از محدوده +
{{ $item['id'] ?? '-' }}{{ $item['no_mission_count'] ?? '-' }}{{ $item['out_of_area_count'] ?? '-' }}
+ + diff --git a/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php new file mode 100644 index 00000000..78910a8c --- /dev/null +++ b/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php @@ -0,0 +1,75 @@ + + + + + + + + گزارش ادارات شهرستان + + + + + +@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 ($data as $item) + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ کد یکتا + +خروج بدون ماموریت + خارج از محدوده +
{{ $item['id'] ?? '-' }}{{ $item['no_mission_count'] ?? '-' }}{{ $item['out_of_area_count'] ?? '-' }}
+ + From dcd6ca01875bc70ae153a610d5c47b85beb5aeaf Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 4 Jan 2026 10:52:34 +0330 Subject: [PATCH 04/20] change number of column in report --- .../Mission/Violation/CountryActivityReport.blade.php | 6 +++--- .../Mission/Violation/ProvinceActivityReport.blade.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php index 57103985..2dd88326 100644 --- a/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php @@ -27,18 +27,18 @@ - - - diff --git a/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php index 78910a8c..398a98eb 100644 --- a/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php @@ -27,18 +27,18 @@
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش نخلف های صورت گرفته
- - - From 1981b1eab4f157f019b2511986f537748af9c3d6 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 4 Jan 2026 14:52:23 +0330 Subject: [PATCH 05/20] fix code --- .../{Violation => Report}/CountryReport.php | 6 +++--- .../{Violation => Report}/ProvinceReport.php | 18 +++++++++--------- .../V3/Dashboard/Mission/ReportController.php | 4 ++-- .../CountryActivityReport.blade.php | 6 +++--- .../ProvinceActivityReport.blade.php | 6 +++--- 5 files changed, 20 insertions(+), 20 deletions(-) rename app/Exports/V3/Mission/{Violation => Report}/CountryReport.php (93%) rename app/Exports/V3/Mission/{Violation => Report}/ProvinceReport.php (85%) rename resources/views/v3/Reports/Mission/{Violation => Report}/CountryActivityReport.blade.php (95%) rename resources/views/v3/Reports/Mission/{Violation => Report}/ProvinceActivityReport.blade.php (96%) diff --git a/app/Exports/V3/Mission/Violation/CountryReport.php b/app/Exports/V3/Mission/Report/CountryReport.php similarity index 93% rename from app/Exports/V3/Mission/Violation/CountryReport.php rename to app/Exports/V3/Mission/Report/CountryReport.php index 78604002..523b3080 100644 --- a/app/Exports/V3/Mission/Violation/CountryReport.php +++ b/app/Exports/V3/Mission/Report/CountryReport.php @@ -1,6 +1,6 @@ $exportRows, ]); } @@ -84,7 +84,7 @@ class CountryReport implements FromView, WithEvents, ShouldAutoSize, WithDrawing $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('E1'); + $drawing2->setCoordinates('C1'); return [$drawing, $drawing2]; } } diff --git a/app/Exports/V3/Mission/Violation/ProvinceReport.php b/app/Exports/V3/Mission/Report/ProvinceReport.php similarity index 85% rename from app/Exports/V3/Mission/Violation/ProvinceReport.php rename to app/Exports/V3/Mission/Report/ProvinceReport.php index 7b26540a..cdc77205 100644 --- a/app/Exports/V3/Mission/Violation/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/ProvinceReport.php @@ -1,6 +1,6 @@ data as $r) { - $pid = (int) $r->province_id; + $cid = (int) $r->city_id; $name = $r->city_name; - if ($pid === -1) { + if ($cid === -1) { $province = [ 'city_name' => $name, 'no_mission_count' => (int) ($r->no_mission_count ?? 0), @@ -38,14 +38,14 @@ class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawin } - if (!isset($grid[$pid])) { - $grid[$pid] = [ + if (!isset($grid[$cid])) { + $grid[$cid] = [ 'city_name' => $name, ]; } - $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); - $grid[$pid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + $grid[$cid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); + $grid[$cid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); } @@ -56,7 +56,7 @@ class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawin } - return view('v3.Reports.Mission.Violation.ProvinceActivityReport', [ + return view('v3.Reports.Mission.Report.ProvinceActivityReport', [ 'rows' => $exportRows, ]); } @@ -93,7 +93,7 @@ class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawin $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('E1'); + $drawing2->setCoordinates('C1'); return [$drawing, $drawing2]; } } \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php b/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php index c59f4022..f4b04424 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; -use App\Exports\V3\Mission\Violation\CountryReport; -use App\Exports\V3\Mission\Violation\ProvinceReport; +use App\Exports\V3\Mission\Report\CountryReport; +use App\Exports\V3\Mission\Report\ProvinceReport; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\City; diff --git a/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php similarity index 95% rename from resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php rename to resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index 2dd88326..1abf73da 100644 --- a/resources/views/v3/Reports/Mission/Violation/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -46,7 +46,7 @@ - @foreach ($data as $item) + @foreach ($rows as $item) - + diff --git a/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php similarity index 96% rename from resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php rename to resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php index 398a98eb..be25c1e9 100644 --- a/resources/views/v3/Reports/Mission/Violation/ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php @@ -46,7 +46,7 @@ - @foreach ($data as $item) + @foreach ($rows as $item) - + From 66cfb5ff096d7fe2168a4980e4e6b2a30f354322 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 4 Jan 2026 14:52:30 +0330 Subject: [PATCH 06/20] fix code --- app/Exports/V3/Mission/Report/ProvinceReport.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/Exports/V3/Mission/Report/ProvinceReport.php b/app/Exports/V3/Mission/Report/ProvinceReport.php index cdc77205..6d79b39d 100644 --- a/app/Exports/V3/Mission/Report/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/ProvinceReport.php @@ -2,10 +2,8 @@ namespace App\Exports\V3\Mission\Report; -use App\Models\EdarateShahri; + use Illuminate\Contracts\View\View; -use Illuminate\Database\Eloquent\Collection; -use Illuminate\Http\Request; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; @@ -13,7 +11,6 @@ use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet; use PhpOffice\PhpSpreadsheet\Exception; use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; -use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { From c3f503dc15a33aa2b8722f8d81a375c39b46434d Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 5 Jan 2026 11:09:10 +0330 Subject: [PATCH 07/20] fix code and use pint for mission in some folder --- .../V3/Mission/Report/CountryReport.php | 23 +++-- .../V3/Mission/Report/ProvinceReport.php | 29 ++++--- .../Cartables/Mission/ControlUnitService.php | 15 ++-- .../Mission/DailyMoveMachineService.php | 6 +- .../Cartables/Mission/ReportService.php | 83 +++++++++---------- .../Mission/RequestPortalService.php | 11 +-- .../Mission/TransportationUnitService.php | 10 +-- 7 files changed, 85 insertions(+), 92 deletions(-) diff --git a/app/Exports/V3/Mission/Report/CountryReport.php b/app/Exports/V3/Mission/Report/CountryReport.php index 523b3080..a7eae8f4 100644 --- a/app/Exports/V3/Mission/Report/CountryReport.php +++ b/app/Exports/V3/Mission/Report/CountryReport.php @@ -10,9 +10,11 @@ use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet; use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; -class CountryReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings +class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvents { - public function __construct(private array $data){} + public function __construct(private array $data) + { + } public function view(): View { @@ -20,32 +22,34 @@ class CountryReport implements FromView, WithEvents, ShouldAutoSize, WithDrawing $national = null; foreach ($this->data as $r) { - $pid = (int) $r->province_id; + $pid = (int) $r->province_id; $name = $r->province_name; if ($pid === -1) { $national = [ - 'province_name' => $name, - 'no_mission_count' => (int) ($r->no_mission_count ?? 0), + 'province_name' => $name, + 'no_mission_count' => (int) ($r->no_mission_count ?? 0), 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), ]; + continue; } - - if (!isset($grid[$pid])) { + if (! isset($grid[$pid])) { $grid[$pid] = [ 'province_name' => $name, ]; } - $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); + $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); $grid[$pid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); } $exportRows = []; - if ($national) $exportRows[] = $national; + if ($national) { + $exportRows[] = $national; + } foreach ($grid as $row) { $exportRows[] = $row; } @@ -85,6 +89,7 @@ class CountryReport implements FromView, WithEvents, ShouldAutoSize, WithDrawing $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); $drawing2->setCoordinates('C1'); + return [$drawing, $drawing2]; } } diff --git a/app/Exports/V3/Mission/Report/ProvinceReport.php b/app/Exports/V3/Mission/Report/ProvinceReport.php index 6d79b39d..2069f4f9 100644 --- a/app/Exports/V3/Mission/Report/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/ProvinceReport.php @@ -2,7 +2,6 @@ namespace App\Exports\V3\Mission\Report; - use Illuminate\Contracts\View\View; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; @@ -12,9 +11,11 @@ use Maatwebsite\Excel\Events\AfterSheet; use PhpOffice\PhpSpreadsheet\Exception; use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; -class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings +class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEvents { - public function __construct(private array $data){} + public function __construct(private array $data) + { + } public function view(): View { @@ -22,37 +23,38 @@ class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawin $province = null; foreach ($this->data as $r) { - $cid = (int) $r->city_id; + $cid = (int) $r->city_id; $name = $r->city_name; if ($cid === -1) { $province = [ - 'city_name' => $name, - 'no_mission_count' => (int) ($r->no_mission_count ?? 0), + 'city_name' => $name, + 'no_mission_count' => (int) ($r->no_mission_count ?? 0), 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), ]; + continue; } - - if (!isset($grid[$cid])) { + if (! isset($grid[$cid])) { $grid[$cid] = [ 'city_name' => $name, ]; } - $grid[$cid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); + $grid[$cid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); $grid[$cid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); } $exportRows = []; - if ($province) $exportRows[] = $province; + if ($province) { + $exportRows[] = $province; + } foreach ($grid as $row) { $exportRows[] = $row; } - return view('v3.Reports.Mission.Report.ProvinceActivityReport', [ 'rows' => $exportRows, ]); @@ -61,7 +63,7 @@ class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawin public function registerEvents(): array { return [ - AfterSheet::class => function (AfterSheet $event) { + AfterSheet::class => function (AfterSheet $event) { $event->sheet->getDelegate()->setRightToLeft(true); }, ]; @@ -91,6 +93,7 @@ class ProvinceReport implements FromView, WithEvents, ShouldAutoSize, WithDrawin $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); $drawing2->setCoordinates('C1'); + return [$drawing, $drawing2]; } -} \ No newline at end of file +} 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/ReportService.php b/app/Services/Cartables/Mission/ReportService.php index ecf958a2..2d454b76 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/ReportService.php @@ -3,7 +3,6 @@ namespace App\Services\Cartables\Mission; use App\Facades\DataTable\DataTableFacade; -use App\Models\Mission; use App\Models\MissionViolation; use Carbon\Carbon; use Illuminate\Http\Request; @@ -15,7 +14,7 @@ class ReportService { $user = auth()->user(); - $query =MissionViolation::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); + $query = MissionViolation::query()->where('edare_shahri_id', '=', $user->edarate_shahri_id); return DataTableFacade::run( $query, @@ -28,67 +27,68 @@ class ReportService public function countryActivity(Request $request): array { $from = $request->from_date ?? today()->startOfDay(); - $to = Carbon::parse($request->to_date)->endOfDay()?? today()->endOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay() ?? 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 >= :from_mv AND mv.created_at <= :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 >= :from_m AND m.created_at <= :to_m - THEN m.id - END) AS out_of_area_count - + + COUNT(DISTINCT mv.id) AS no_mission_count, + COUNT(DISTINCT m.id) 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) + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv + LEFT JOIN missions m ON m.province_id = p.id - + AND m.mission_duration != m.in_area_duration + AND m.created_at >= :from_m + AND m.created_at <= :to_m + 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, + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, province_name - "; + "; return DB::select($sql, [ 'from_mv' => $from, - 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, + '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 = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " WITH r AS ( @@ -96,31 +96,26 @@ class ReportService c.id AS city_id, c.name_fa AS city_name, - COUNT(DISTINCT CASE - WHEN mv.type = 1 - AND mv.created_at >= :from_mv AND mv.created_at <= :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 >= :from_m AND m.created_at <= :to_m - THEN m.id - END) AS out_of_area_count + COUNT(DISTINCT mv.id) AS no_mission_count, + COUNT(DISTINCT m.id) 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) + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv LEFT JOIN missions m ON m.city_id = c.id + AND m.mission_duration != m.in_area_duration + AND m.created_at >= :from_m + AND m.created_at <= :to_m WHERE c.province_id = :province_id - GROUP BY c.id, c.name_fa ) @@ -145,9 +140,9 @@ class ReportService return DB::select($sql, [ 'province_id' => $provinceId, 'from_mv' => $from, - 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, + '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 +} From 8775fb13c736abfd5a49dbf76d2880d90d31a7dd Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 5 Jan 2026 15:52:32 +0330 Subject: [PATCH 08/20] improve code --- app/Services/Cartables/Mission/ReportService.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/ReportService.php index 2d454b76..ec070159 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/ReportService.php @@ -116,6 +116,10 @@ class ReportService AND m.created_at <= :to_m WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشین آلات', 'اداره نقلیه') + ) GROUP BY c.id, c.name_fa ) From 5ae832bc0eb223e07520515dd6a402bf95dbeba8 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 5 Jan 2026 16:00:57 +0330 Subject: [PATCH 09/20] improve code --- app/Services/Cartables/Mission/ReportService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/ReportService.php index ec070159..902d100c 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/ReportService.php @@ -118,7 +118,7 @@ class ReportService WHERE c.province_id = :province_id AND ( c.type_id = 1 - OR c.name_fa IN ('اداره ماشین آلات', 'اداره نقلیه') + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') ) GROUP BY c.id, c.name_fa ) From f93f361d8ff4ce7f2340aaf1492f7aaee7af6533 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 24 Jan 2026 13:45:51 +0330 Subject: [PATCH 10/20] change .example --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index f9adb344..bb4a5e23 100644 --- a/.env.example +++ b/.env.example @@ -100,7 +100,7 @@ HARIM_NEED_GUARANTEE_LETTER_USERNAME= BACKUP_TARGET_DIR= BACKUP_USER= -BACKUP_PASSWORD= +BACKUP_PASSWORD=1qaz HARIM_ENCRYPTION_KEY="TestKey" From 0763e1732ec464fc5995ec1814fd2f832767428b Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sat, 24 Jan 2026 19:13:47 +0330 Subject: [PATCH 11/20] change Format table report --- .../Mission/Report/Tradod/CountryReport.php | 102 +++++++++++ .../Mission/Report/Tradod/ProvinceReport.php | 107 ++++++++++++ .../Report/{ => Violation}/CountryReport.php | 16 +- .../Report/{ => Violation}/ProvinceReport.php | 17 +- .../Mission/Report/ReportTradodController.php | 61 +++++++ .../ReportViolationController.php} | 18 +- .../Mission/Report/ReportTradodService.php | 161 ++++++++++++++++++ .../ReportViolationService.php} | 70 ++++---- .../Report/CountryActivityReport.blade.php | 23 ++- .../Report/ProvinceActivityReport.blade.php | 23 ++- .../Tradod /CountryActivityReport.blade.php | 93 ++++++++++ .../Tradod /ProvinceActivityReport.blade.php | 95 +++++++++++ routes/v3.php | 15 +- 13 files changed, 741 insertions(+), 60 deletions(-) create mode 100644 app/Exports/V3/Mission/Report/Tradod/CountryReport.php create mode 100644 app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php rename app/Exports/V3/Mission/Report/{ => Violation}/CountryReport.php (75%) rename app/Exports/V3/Mission/Report/{ => Violation}/ProvinceReport.php (76%) create mode 100644 app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php rename app/Http/Controllers/V3/Dashboard/Mission/{ReportController.php => Report/ReportViolationController.php} (72%) create mode 100644 app/Services/Cartables/Mission/Report/ReportTradodService.php rename app/Services/Cartables/Mission/{ReportService.php => Report/ReportViolationService.php} (63%) create mode 100644 resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php create mode 100644 resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php 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..c5aef909 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php @@ -0,0 +1,102 @@ +data as $r) { + $pid = (int) $r->province_id; + $name = $r->province_name; + + if ($pid === -1) { + $national = [ + 'province_name' => $name, + 'total_missions' => (int) ($r->total_missions ?? 0), + 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), + 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), + 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + ]; + + continue; + } + + if (! isset($grid[$pid])) { + $grid[$pid] = [ + 'province_name' => $name, + ]; + } + + $grid[$pid]['total_missions'] = (int) ($r->total_missions ?? 0); + $grid[$pid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); + $grid[$pid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); + $grid[$pid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); + $grid[$pid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); + $grid[$pid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 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('C1'); + + 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..256fd5c7 --- /dev/null +++ b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php @@ -0,0 +1,107 @@ +data as $r) { + $cid = (int) $r->city_id; + $name = $r->city_name; + + if ($cid === -1) { + $province = [ + 'city_name' => $name, + 'total_missions' => (int) ($r->total_missions ?? 0), + 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), + 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), + 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), + 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), + 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + ]; + + continue; + } + + if (! isset($grid[$cid])) { + $grid[$cid] = [ + 'city_name' => $name, + ]; + } + + $grid[$cid]['total_missions'] = (int) ($r->total_missions ?? 0); + $grid[$cid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); + $grid[$cid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); + $grid[$cid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); + $grid[$cid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); + $grid[$cid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 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('C1'); + + return [$drawing, $drawing2]; + } +} diff --git a/app/Exports/V3/Mission/Report/CountryReport.php b/app/Exports/V3/Mission/Report/Violation/CountryReport.php similarity index 75% rename from app/Exports/V3/Mission/Report/CountryReport.php rename to app/Exports/V3/Mission/Report/Violation/CountryReport.php index a7eae8f4..c248c340 100644 --- a/app/Exports/V3/Mission/Report/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -1,6 +1,6 @@ $name, - 'no_mission_count' => (int) ($r->no_mission_count ?? 0), - 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), + 'total_violations' => (int) ($r->total_violations ?? 0), + 'egdam_shode' => (int) ($r->egdam_shode ?? 0), + 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), + 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'sabt_herasat' => (int) ($r->herasat ?? 0), ]; continue; @@ -41,8 +44,11 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent ]; } - $grid[$pid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); - $grid[$pid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + $grid[$pid]['total_violations'] = (int) ($r->total_violations ?? 0); + $grid[$pid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); + $grid[$pid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); + $grid[$pid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); + $grid[$pid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); } diff --git a/app/Exports/V3/Mission/Report/ProvinceReport.php b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php similarity index 76% rename from app/Exports/V3/Mission/Report/ProvinceReport.php rename to app/Exports/V3/Mission/Report/Violation/ProvinceReport.php index 2069f4f9..4d1b02bf 100644 --- a/app/Exports/V3/Mission/Report/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -1,6 +1,6 @@ $name, - 'no_mission_count' => (int) ($r->no_mission_count ?? 0), - 'out_of_area_count' => (int) ($r->out_of_area_count ?? 0), + 'total_violations' => (int) ($r->total_violations ?? 0), + 'egdam_shode' => (int) ($r->egdam_shode ?? 0), + 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), + 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'sabt_herasat' => (int) ($r->herasat ?? 0), + ]; continue; @@ -42,8 +46,11 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven ]; } - $grid[$cid]['no_mission_count'] = (int) ($r->no_mission_count ?? 0); - $grid[$cid]['out_of_area_count'] = (int) ($r->out_of_area_count ?? 0); + $grid[$cid]['total_violations'] = (int) ($r->total_violations ?? 0); + $grid[$cid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); + $grid[$cid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); + $grid[$cid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); + $grid[$cid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); } 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..d5610e3a --- /dev/null +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php @@ -0,0 +1,61 @@ +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)->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/ReportController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php similarity index 72% rename from app/Http/Controllers/V3/Dashboard/Mission/ReportController.php rename to app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php index f4b04424..9be4b05b 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php @@ -1,25 +1,25 @@ successResponse([ 'activities' => $reportService->countryActivity($request), @@ -27,7 +27,7 @@ class ReportController extends Controller ]); } - public function provinceActivity(Request $request, ReportService $reportService): JsonResponse + public function provinceActivity(Request $request, ReportViolationService $reportService): JsonResponse { return $this->successResponse([ 'activities' =>$reportService->provinceActivity($request), @@ -39,7 +39,7 @@ class ReportController extends Controller * @throws Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception */ - public function countryExcelActivity(Request $request, ReportService $reportService): BinaryFileResponse + public function countryExcelActivity(Request $request, ReportViolationService $reportService): BinaryFileResponse { $data = $reportService->countryActivity($request); $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; @@ -51,7 +51,7 @@ class ReportController extends Controller * @throws Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception */ - public function provinceExcelActivity(Request $request, ReportService $reportService): BinaryFileResponse + public function provinceExcelActivity(Request $request, ReportViolationService $reportService): BinaryFileResponse { $data = $reportService->provinceActivity($request); $name = 'گزارش تخلفات ماموریت ها '.verta()->now()->format('Y-m-d H-i').'.xlsx'; diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php new file mode 100644 index 00000000..86520219 --- /dev/null +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -0,0 +1,161 @@ +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 = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + + $sql = " + WITH r AS ( + SELECT + p.id AS province_id, + p.name_fa AS province_name, + + COUNT(DISTINCT m.id) AS total_missions, + SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, + SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, + SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, + + FROM provinces + + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + + GROUP BY p.id, p.name_fa + ) + + SELECT + -1 AS province_id, + 'کل کشور' AS province_name, + SUM(total_missions) AS total_missions, + SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, + SUM(bafarayand_saeti) AS bafarayand_saeti, + SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, + SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, + SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh + FROM r + + UNION ALL + + SELECT + province_id, + province_name, + total_missions, + taradod_khareg_mahdode, + bafarayand_saeti, + bafarayand_rozaneh, + bedon_bafarayand_saeti, + bedon_bafarayand_rozaneh + FROM r + + ORDER BY + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name + "; + + return DB::select($sql, [ + 'from_mv' => $from, + 'to_mv' => $to, + ]); + } + + public function provinceActivity(Request $request): array + { + $provinceId = $request->province_id ?? auth()->user()->province_id; + $from = $request->from_date ?? today()->startOfDay(); + $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + + $sql = " + WITH r AS ( + SELECT + c.id AS city_id, + c.name_fa AS city_name, + + COUNT(DISTINCT m.id) AS total_missions, + SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, + SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, + SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, + SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, + + FROM cities c + LEFT JOIN cmms_machines cm + ON cm.city_id = c.id + + LEFT JOIN missions m + ON m.province_id = p.id + AND m.created_at >= :from_m + AND m.created_at <= :to_m + + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id, c.name_fa + ) + + SELECT + -1 AS city_id, + 'کل استان' AS city_name, + SUM(total_missions) AS total_missions, + SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, + SUM(bafarayand_saeti) AS bafarayand_saeti, + SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, + SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, + SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh + FROM r + + UNION ALL + + SELECT + city_id, + city_name, + total_missions, + taradod_khareg_mahdode, + bafarayand_saeti, + bafarayand_rozaneh, + bedon_bafarayand_saeti, + bedon_bafarayand_rozaneh + 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, + ]); + } +} diff --git a/app/Services/Cartables/Mission/ReportService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php similarity index 63% rename from app/Services/Cartables/Mission/ReportService.php rename to app/Services/Cartables/Mission/Report/ReportViolationService.php index 902d100c..8f56dc65 100644 --- a/app/Services/Cartables/Mission/ReportService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -1,6 +1,6 @@ = :from_mv - AND mv.created_at <= :to_mv - - LEFT JOIN missions m - ON m.province_id = p.id - AND m.mission_duration != m.in_area_duration - AND m.created_at >= :from_m - AND m.created_at <= :to_m + AND mv.type = 1 + AND mv.created_at >= :from_mv + AND mv.created_at <= :to_mv GROUP BY p.id, p.name_fa ) @@ -61,14 +58,23 @@ class ReportService 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 + SUM(total_violations) AS total_violations, + SUM(egdam_shode) AS egdam_shode, + SUM(bedone_egdam) AS bedone_egdam, + SUM(sabt_gps) AS sabt_gps, + SUM(sabt_herasat) AS sabt_herasat FROM r UNION ALL SELECT - province_id, province_name, no_mission_count, out_of_area_count + province_id, + province_name, + total_violations, + egdam_shode, + bedone_egdam, + sabt_gps, + sabt_herasat FROM r ORDER BY @@ -79,8 +85,6 @@ class ReportService return DB::select($sql, [ 'from_mv' => $from, 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, ]); } @@ -96,8 +100,11 @@ class ReportService c.id AS city_id, c.name_fa AS city_name, - COUNT(DISTINCT mv.id) AS no_mission_count, - COUNT(DISTINCT m.id) AS out_of_area_count + COUNT(DISTINCT mv.id) AS total_violations, + SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END) AS egdam_shode, + SUM(CASE WHEN mv.status = 2 THEN 1 ELSE 0 END) AS bedone_egdam, + SUM(CASE WHEN mv.gps = 1 THEN 1 ELSE 0 END) AS sabt_gps, + SUM(CASE WHEN mv.gps = 0 THEN 1 ELSE 0 END) AS sabt_herasat FROM cities c LEFT JOIN cmms_machines cm @@ -109,12 +116,6 @@ class ReportService AND mv.created_at >= :from_mv AND mv.created_at <= :to_mv - LEFT JOIN missions m - ON m.city_id = c.id - AND m.mission_duration != m.in_area_duration - AND m.created_at >= :from_m - AND m.created_at <= :to_m - WHERE c.province_id = :province_id AND ( c.type_id = 1 @@ -126,14 +127,23 @@ class ReportService 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 + SUM(total_violations) AS total_violations, + SUM(egdam_shode) AS egdam_shode, + SUM(bedone_egdam) AS bedone_egdam, + SUM(sabt_gps) AS sabt_gps, + SUM(sabt_herasat) AS sabt_herasat FROM r UNION ALL SELECT - city_id, city_name, no_mission_count, out_of_area_count + city_id, + city_name, + total_violations, + egdam_shode, + bedone_egdam, + sabt_gps, + sabt_herasat FROM r ORDER BY @@ -145,8 +155,6 @@ class ReportService 'province_id' => $provinceId, 'from_mv' => $from, 'to_mv' => $to, - 'from_m' => $from, - 'to_m' => $to, ]); } } diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index 1abf73da..dbf58e31 100644 --- a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -50,11 +50,23 @@ +کل تخلفات + + + + @@ -63,8 +75,11 @@ @foreach ($rows as $item) - - + + + + + @endforeach diff --git a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php index be25c1e9..c88ca80c 100644 --- a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php @@ -50,14 +50,24 @@ + کل تخلفات + + - + @@ -65,8 +75,11 @@ @foreach ($rows as $item) - - + + + + + @endforeach 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..e94c38f2 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/Tradod /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 + +
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش نخلف های صورت گرفته
- کد یکتا + استان @@ -60,9 +60,9 @@
{{ $item['id'] ?? '-' }}{{ $item['province_name'] ?? '-' }} {{ $item['no_mission_count'] ?? '-' }} {{ $item['out_of_area_count'] ?? '-' }}
- کد یکتا + شهر @@ -62,9 +62,9 @@
{{ $item['id'] ?? '-' }}{{ $item['city_name'] ?? '-' }} {{ $item['no_mission_count'] ?? '-' }} {{ $item['out_of_area_count'] ?? '-' }}
-خروج بدون ماموریت - خارج از محدوده + اقدام شده + + اقدام نشده + + ثبت GPS + ثبت حراست
{{ $item['province_name'] ?? '-' }}{{ $item['no_mission_count'] ?? '-' }}{{ $item['out_of_area_count'] ?? '-' }}{{ $item['total_violations'] ?? '-' }}{{ $item['egdam_shode'] ?? '-' }}{{ $item['bedone_egdam'] ?? '-' }}{{ $item['sabt_gps'] ?? '-' }}{{ $item['sabt_herasat'] ?? '-' }}
-خروج بدون ماموریت - خارج از محدوده + اقدام شده + اقدام نشده + + ثبت GPS + ثبت حراست +
{{ $item['city_name'] ?? '-' }}{{ $item['no_mission_count'] ?? '-' }}{{ $item['out_of_area_count'] ?? '-' }}{{ $item['total_violations'] ?? '-' }}{{ $item['egdam_shode'] ?? '-' }}{{ $item['bedone_egdam'] ?? '-' }}{{ $item['sabt_gps'] ?? '-' }}{{ $item['sabt_herasat'] ?? '-' }}
+ + + + + + + + + + + + + + + + + + + + + + + + + @foreach ($rows as $item) + + + + + + + + + + @endforeach + +
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }} +
+
+ گزارش نخلف های صورت گرفته +
+ استان + +کل تردد + تردد خارج از محدوده + + با فرآیند ساعتی + + با فرآیند روزانه + بدون فرآیند ساعتی + + بدون فرآیند روزانه +
{{ $item['province_name'] ?? '-' }}{{ $item['total_missions'] ?? '-' }}{{ $item['taradod_khareg_mahdode'] ?? '-' }}{{ $item['bafarayand_saeti'] ?? '-' }}{{ $item['bafarayand_rozaneh'] ?? '-' }}{{ $item['bedon_bafarayand_saeti'] ?? '-' }}{{ $item['bedon_bafarayand_rozaneh'] ?? '-' }}
+ + 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..d78d2901 --- /dev/null +++ b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php @@ -0,0 +1,95 @@ + + + + + + + + گزارش ادارات شهرستان + + + + + +@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') }} +
+
+ گزارش نخلف های صورت گرفته +
+ شهر + + کل تردد + تردد خارج از محدوده + + با فرآیند ساعتی + + با فرآیند روزانه + بدون فرآیند ساعتی + + بدون فرآیند روزانه +
{{ $item['city_name'] ?? '-' }}{{ $item['total_missions'] ?? '-' }}{{ $item['taradod_khareg_mahdode'] ?? '-' }}{{ $item['bafarayand_saeti'] ?? '-' }}{{ $item['bafarayand_rozaneh'] ?? '-' }}{{ $item['bedon_bafarayand_saeti'] ?? '-' }}{{ $item['bedon_bafarayand_rozaneh'] ?? '-' }}
+ + diff --git a/routes/v3.php b/routes/v3.php index d627201f..085febb3 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; @@ -535,7 +537,7 @@ Route::prefix('missions') }); Route::prefix('report') ->name('reports.') - ->controller(\App\Http\Controllers\V3\Dashboard\Mission\ReportController::class) + ->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') + ->name('reports.') + ->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') From 18fc3eaad5cdbeb2b283953ff1bb25a4ebfb3f9a Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Sun, 25 Jan 2026 09:53:26 +0330 Subject: [PATCH 12/20] fix route --- routes/v3.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/routes/v3.php b/routes/v3.php index 085febb3..ce0d74ad 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -535,8 +535,8 @@ Route::prefix('missions') Route::post('/{violation}', 'update')->name('update'); Route::delete('/{violation}', 'destroy')->name('destroy'); }); - Route::prefix('report') - ->name('reports.') + Route::prefix('report_violation') + ->name('reportsViolation.') ->controller(ReportViolationController::class) ->group(function () { Route::get('/country_activity', 'countryActivity')->name('countryActivity') @@ -546,8 +546,8 @@ Route::prefix('missions') Route::get('/country_excel_activity', 'countryExcelActivity')->name('countryExcelActivity'); Route::get('/province_excel_activity', 'provinceExcelActivity')->name('provinceExcelActivity'); }); - Route::prefix('report') - ->name('reports.') + Route::prefix('report_tradod') + ->name('reportsTradod.') ->controller(ReportTradodController::class) ->group(function () { Route::get('/country_activity', 'countryActivity')->name('countryActivity') From 1775a8e75e2f2905045c8c4dd874a3baf090b667 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 25 Jan 2026 16:16:37 +0330 Subject: [PATCH 13/20] add start and finish time --- .../Commands/DailyMovingMachineCommand.php | 8 ++++- .../Mission/ControlUnitController.php | 8 ++--- .../Mission/ViolationManagementController.php | 6 ++++ .../V3/Mission/ControlUnit/FinishRequest.php | 2 +- .../V3/Mission/ControlUnit/StartRequest.php | 1 + ...add_column_to_mission_violations_table.php | 31 +++++++++++++++++++ 6 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 database/migrations/2026_01_25_153836_add_column_to_mission_violations_table.php 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/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/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/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']); + }); + } +}; From 85d2dc572870916ae3a617c93547dddd9f64e9e5 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 26 Jan 2026 13:44:33 +0330 Subject: [PATCH 14/20] change item in report mission --- .../Mission/Report/Tradod/CountryReport.php | 34 ++- .../Mission/Report/Tradod/ProvinceReport.php | 34 ++- .../Report/Violation/CountryReport.php | 24 +- .../Report/Violation/ProvinceReport.php | 25 +- .../Mission/Report/ReportTradodService.php | 250 ++++++++++-------- .../Mission/Report/ReportViolationService.php | 203 +++++++------- .../Report/CountryActivityReport.blade.php | 5 + .../Report/ProvinceActivityReport.blade.php | 7 +- .../Tradod /CountryActivityReport.blade.php | 25 +- .../Tradod /ProvinceActivityReport.blade.php | 27 +- 10 files changed, 367 insertions(+), 267 deletions(-) diff --git a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php index c5aef909..425879b5 100644 --- a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php @@ -28,12 +28,16 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent if ($pid === -1) { $national = [ 'province_name' => $name, - 'total_missions' => (int) ($r->total_missions ?? 0), - 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), - 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), - 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), - 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), - 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + '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; @@ -45,12 +49,16 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent ]; } - $grid[$pid]['total_missions'] = (int) ($r->total_missions ?? 0); - $grid[$pid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); - $grid[$pid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); - $grid[$pid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); - $grid[$pid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); - $grid[$pid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 0); + $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 = []; @@ -95,7 +103,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $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 index 256fd5c7..e56d6cef 100644 --- a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php @@ -29,12 +29,16 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven if ($cid === -1) { $province = [ 'city_name' => $name, - 'total_missions' => (int) ($r->total_missions ?? 0), - 'taradod_khareg_mahdode' => (int) ($r->taradod_khareg_mahdode ?? 0), - 'bafarayand_saeti' => (int) ($r->bafarayand_saeti ?? 0), - 'bafarayand_rozaneh' => (int) ($r->bafarayand_rozaneh ?? 0), - 'bedon_bafarayand_saeti' => (int) ($r->bedon_bafarayand_saeti ?? 0), - 'bedon_bafarayand_rozaneh' => (int) ($r->bedon_bafarayand_rozaneh ?? 0), + '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; @@ -46,12 +50,16 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven ]; } - $grid[$cid]['total_missions'] = (int) ($r->total_missions ?? 0); - $grid[$cid]['taradod_khareg_mahdode'] = (int) ($r->taradod_khareg_mahdode ?? 0); - $grid[$cid]['bafarayand_saeti'] = (int) ($r->bafarayand_saeti ?? 0); - $grid[$cid]['bafarayand_rozaneh'] = (int) ($r->bafarayand_rozaneh ?? 0); - $grid[$cid]['bedon_bafarayand_saeti'] = (int) ($r->bedon_bafarayand_saeti ?? 0); - $grid[$cid]['bedon_bafarayand_rozaneh'] = (int) ($r->bedon_bafarayand_rozaneh ?? 0); + $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); } @@ -100,7 +108,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $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 index c248c340..59eb65c7 100644 --- a/app/Exports/V3/Mission/Report/Violation/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -28,11 +28,12 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent if ($pid === -1) { $national = [ 'province_name' => $name, - 'total_violations' => (int) ($r->total_violations ?? 0), - 'egdam_shode' => (int) ($r->egdam_shode ?? 0), - 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), - 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'total' => (int) ($r->total ?? 0), + 'egdam_shode' => (int) ($r->done ?? 0), + 'bedone_egdam' => (int) ($r->undon ?? 0), + 'sabt_gps' => (int) ($r->gps ?? 0), 'sabt_herasat' => (int) ($r->herasat ?? 0), + 'mil_gps' => (int) ($r->mil_gps ?? 0), ]; continue; @@ -43,13 +44,12 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent 'province_name' => $name, ]; } - - $grid[$pid]['total_violations'] = (int) ($r->total_violations ?? 0); - $grid[$pid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); - $grid[$pid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); - $grid[$pid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); - $grid[$pid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); - + $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 = []; @@ -94,7 +94,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $drawing2->setCoordinates('E1'); return [$drawing, $drawing2]; } diff --git a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php index 4d1b02bf..a4251c64 100644 --- a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -29,12 +29,12 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven if ($cid === -1) { $province = [ 'city_name' => $name, - 'total_violations' => (int) ($r->total_violations ?? 0), - 'egdam_shode' => (int) ($r->egdam_shode ?? 0), - 'bedone_egdam' => (int) ($r->bedone_egdam ?? 0), - 'sabt_gps' => (int) ($r->sabt_gps ?? 0), + 'total' => (int) ($r->total ?? 0), + 'egdam_shode' => (int) ($r->done ?? 0), + 'bedone_egdam' => (int) ($r->undon ?? 0), + 'sabt_gps' => (int) ($r->gps ?? 0), 'sabt_herasat' => (int) ($r->herasat ?? 0), - + 'mil_gps' => (int) ($r->mil_gps ?? 0), ]; continue; @@ -45,13 +45,12 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven 'city_name' => $name, ]; } - - $grid[$cid]['total_violations'] = (int) ($r->total_violations ?? 0); - $grid[$cid]['egdam_shode'] = (int) ($r->egdam_shode ?? 0); - $grid[$cid]['bedone_egdam'] = (int) ($r->bedone_egdam ?? 0); - $grid[$cid]['sabt_gps'] = (int) ($r->sabt_gps ?? 0); - $grid[$cid]['sabt_herasat'] = (int) ($r->sabt_herasat ?? 0); - + $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 = []; @@ -99,7 +98,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('C1'); + $drawing2->setCoordinates('E1'); return [$drawing, $drawing2]; } diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php index 86520219..f975662d 100644 --- a/app/Services/Cartables/Mission/Report/ReportTradodService.php +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -28,62 +28,75 @@ class ReportTradodService { $from = $request->from_date ?? today()->startOfDay(); $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); - $sql = " - WITH r AS ( - SELECT - p.id AS province_id, - p.name_fa AS province_name, + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + SUM(t.total) AS total, + SUM(t.khareg_mahdode) AS khareg_mahdode, + SUM(t.gps) AS gps, + SUM(t.durations) AS durations, + SUM(t.far_h) AS far_h, + SUM(t.far_d) AS far_d, + SUM(t.un_far_h) AS un_far_h, + SUM(t.un_far_d) AS un_far_d, + SUM(t.item) AS item, + SUM(t.patrol) AS patrol + FROM ( + SELECT + 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 + AND m.created_at <= :to_m + GROUP BY p.id + ) t - COUNT(DISTINCT m.id) AS total_missions, - SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, - SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, - SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, + UNION ALL - FROM provinces + 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 + AND m.created_at <= :to_m + GROUP BY p.id, p.name_fa + )q + ORDER BY + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; - LEFT JOIN missions m - ON m.province_id = p.id - AND m.created_at >= :from_m - AND m.created_at <= :to_m - - GROUP BY p.id, p.name_fa - ) - - SELECT - -1 AS province_id, - 'کل کشور' AS province_name, - SUM(total_missions) AS total_missions, - SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, - SUM(bafarayand_saeti) AS bafarayand_saeti, - SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, - SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, - SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh - FROM r - - UNION ALL - - SELECT - province_id, - province_name, - total_missions, - taradod_khareg_mahdode, - bafarayand_saeti, - bafarayand_rozaneh, - bedon_bafarayand_saeti, - bedon_bafarayand_rozaneh - FROM r - - ORDER BY - CASE WHEN province_id = -1 THEN 0 ELSE 1 END, - province_name - "; + "; + return DB::select($sql, [ - 'from_mv' => $from, - 'to_mv' => $to, + 'from_m' => $from, + 'to_m' => $to, ]); } @@ -94,68 +107,87 @@ class ReportTradodService $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " - WITH r AS ( - SELECT - c.id AS city_id, - c.name_fa AS city_name, - - COUNT(DISTINCT m.id) AS total_missions, - SUM(CASE WHEN m.mission_duration != m.in_area_duration THEN 1 ELSE 0 END) AS taradod_khareg_mahdode, - SUM(CASE WHEN m.mission_status = 1 THEN 1 ELSE 0 END) AS bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 2 THEN 1 ELSE 0 END) AS bafarayand_rozaneh, - SUM(CASE WHEN m.mission_status = 3 THEN 1 ELSE 0 END) AS bedon_bafarayand_saeti, - SUM(CASE WHEN m.mission_status = 4 THEN 1 ELSE 0 END) AS bedon_bafarayand_rozaneh, - - FROM cities c - LEFT JOIN cmms_machines cm - ON cm.city_id = c.id - - LEFT JOIN missions m - ON m.province_id = p.id - AND m.created_at >= :from_m - AND m.created_at <= :to_m - - WHERE c.province_id = :province_id - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id, c.name_fa - ) - - SELECT - -1 AS city_id, - 'کل استان' AS city_name, - SUM(total_missions) AS total_missions, - SUM(taradod_khareg_mahdode) AS taradod_khareg_mahdode, - SUM(bafarayand_saeti) AS bafarayand_saeti, - SUM(bafarayand_rozaneh) AS bafarayand_rozaneh, - SUM(bedon_bafarayand_saeti) AS bedon_bafarayand_saeti, - SUM(bedon_bafarayand_rozaneh) AS bedon_bafarayand_rozaneh - FROM r - - UNION ALL - - SELECT - city_id, - city_name, - total_missions, - taradod_khareg_mahdode, - bafarayand_saeti, - bafarayand_rozaneh, - bedon_bafarayand_saeti, - bedon_bafarayand_rozaneh - FROM r - - ORDER BY - CASE WHEN city_id = -1 THEN 0 ELSE 1 END, - city_name - "; + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + SUM(t.total) AS total, + SUM(t.khareg_mahdode) AS khareg_mahdode, + SUM(t.gps) AS gps, + SUM(t.durations) AS durations, + SUM(t.far_h) AS far_h, + SUM(t.far_d) AS far_d, + SUM(t.un_far_h) AS un_far_h, + SUM(t.un_far_d) AS un_far_d, + SUM(t.item) AS item, + SUM(t.patrol) AS patrol + FROM ( + SELECT + 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 + AND m.created_at <= :to_m + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id + ) t + + 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 + AND m.created_at <= :to_m + WHERE c.province_id = :province_id + 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' => $provinceId, - 'from_mv' => $from, - 'to_mv' => $to, + 'from_m' => $from, + 'to_m' => $to, ]); } } diff --git a/app/Services/Cartables/Mission/Report/ReportViolationService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php index 8f56dc65..278868fa 100644 --- a/app/Services/Cartables/Mission/Report/ReportViolationService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -30,56 +30,59 @@ class ReportViolationService $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " - WITH r AS ( - SELECT - p.id AS province_id, - p.name_fa AS province_name, - - COUNT(DISTINCT mv.id) AS total_violations, - SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END) AS egdam_shode, - SUM(CASE WHEN mv.status = 2 THEN 1 ELSE 0 END) AS bedone_egdam, - SUM(CASE WHEN mv.gps = 1 THEN 1 ELSE 0 END) AS sabt_gps, - SUM(CASE WHEN mv.gps = 0 THEN 1 ELSE 0 END) AS sabt_herasat - + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + SUM(t.total) AS total, + SUM(t.done) AS done, + SUM(t.undone) AS undone, + SUM(t.gps) AS gps, + SUM(t.herasat) AS herasat, + SUM(t.mil_gps) AS mil_gps + FROM ( + SELECT + 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 cmms_machines cm - ON cm.province_id = p.id - LEFT JOIN mission_violations mv - ON TRIM(cm.machine_code) = TRIM(mv.machine_code) + ON mv.province_id = p.id AND mv.type = 1 AND mv.created_at >= :from_mv AND mv.created_at <= :to_mv - - GROUP BY p.id, p.name_fa - ) - + GROUP BY p.id + ) t + + UNION ALL + SELECT - -1 AS province_id, - 'کل کشور' AS province_name, - SUM(total_violations) AS total_violations, - SUM(egdam_shode) AS egdam_shode, - SUM(bedone_egdam) AS bedone_egdam, - SUM(sabt_gps) AS sabt_gps, - SUM(sabt_herasat) AS sabt_herasat - FROM r - - UNION ALL - - SELECT - province_id, - province_name, - total_violations, - egdam_shode, - bedone_egdam, - sabt_gps, - sabt_herasat - FROM r - + 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 + AND mv.created_at <= :to_mv + GROUP BY p.id, p.name_fa + )q ORDER BY - CASE WHEN province_id = -1 THEN 0 ELSE 1 END, - province_name + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; + "; return DB::select($sql, [ @@ -95,60 +98,68 @@ class ReportViolationService $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); $sql = " - WITH r AS ( - SELECT - c.id AS city_id, - c.name_fa AS city_name, + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + SUM(t.total) AS total, + SUM(t.done) AS done, + SUM(t.undone) AS undone, + SUM(t.gps) AS gps, + SUM(t.herasat) AS herasat, + SUM(t.mil_gps) AS mil_gps + FROM ( + SELECT + 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 + AND mv.created_at <= :to_mv + WHERE c.province_id = :province_id + AND ( + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id + ) t + + 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 + AND mv.created_at <= :to_mv + WHERE c.province_id = :province_id + 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; - COUNT(DISTINCT mv.id) AS total_violations, - SUM(CASE WHEN mv.status = 1 THEN 1 ELSE 0 END) AS egdam_shode, - SUM(CASE WHEN mv.status = 2 THEN 1 ELSE 0 END) AS bedone_egdam, - SUM(CASE WHEN mv.gps = 1 THEN 1 ELSE 0 END) AS sabt_gps, - SUM(CASE WHEN mv.gps = 0 THEN 1 ELSE 0 END) AS sabt_herasat - - 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) - AND mv.type = 1 - AND mv.created_at >= :from_mv - AND mv.created_at <= :to_mv - - WHERE c.province_id = :province_id - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id, c.name_fa - ) - - SELECT - -1 AS city_id, - 'کل استان' AS city_name, - SUM(total_violations) AS total_violations, - SUM(egdam_shode) AS egdam_shode, - SUM(bedone_egdam) AS bedone_egdam, - SUM(sabt_gps) AS sabt_gps, - SUM(sabt_herasat) AS sabt_herasat - FROM r - - UNION ALL - - SELECT - city_id, - city_name, - total_violations, - egdam_shode, - bedone_egdam, - sabt_gps, - sabt_herasat - FROM r - - ORDER BY - CASE WHEN city_id = -1 THEN 0 ELSE 1 END, - city_name "; return DB::select($sql, [ diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index dbf58e31..2dbe9f08 100644 --- a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -68,6 +68,10 @@ style="text-align: center;border: 1px solid black;background-color: #EBF1DE;font-weight: bold;"> ثبت حراست + + کیلومتر GPS + @@ -80,6 +84,7 @@ {{ $item['bedone_egdam'] ?? '-' }} {{ $item['sabt_gps'] ?? '-' }} {{ $item['sabt_herasat'] ?? '-' }} + {{ $item['mil_gps'] ?? '-' }} @endforeach diff --git a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php index c88ca80c..d62f37ed 100644 --- a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php @@ -50,7 +50,7 @@ - کل تخلفات + کل تخلفات @@ -68,6 +68,10 @@ style="text-align: center;border: 1px solid black;background-color: #EBF1DE;font-weight: bold;"> ثبت حراست + + مسافت ثبت شده GPS + @@ -80,6 +84,7 @@ {{ $item['bedone_egdam'] ?? '-' }} {{ $item['sabt_gps'] ?? '-' }} {{ $item['sabt_herasat'] ?? '-' }} + {{ $item['mil_gps'] ?? '-' }} @endforeach diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php index e94c38f2..cfb60ac5 100644 --- a/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php @@ -50,8 +50,14 @@ -کل تردد - + کل ماموریت + + جمع ساعات GPS + + + جمع ساعات ماموریت تردد خارج از محدوده @@ -72,6 +78,13 @@ style="text-align: center;border: 1px solid black;background-color: #EBF1DE;font-weight: bold;"> بدون فرآیند روزانه + + فعالیت روزانه + + گشت راهداری + @@ -79,12 +92,16 @@ @foreach ($rows as $item) {{ $item['province_name'] ?? '-' }} - {{ $item['total_missions'] ?? '-' }} - {{ $item['taradod_khareg_mahdode'] ?? '-' }} + {{ $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'] ?? '-' }} @endforeach diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php index d78d2901..a78d5b56 100644 --- a/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php @@ -50,8 +50,14 @@ - کل تردد - + کل ماموریت + + جمع ساعات GPS + + + جمع ساعات ماموریت تردد خارج از محدوده @@ -72,8 +78,13 @@ style="text-align: center;border: 1px solid black;background-color: #EBF1DE;font-weight: bold;"> بدون فرآیند روزانه - - + +فعالیت روزانه + + گشت راهداری + @@ -81,12 +92,16 @@ @foreach ($rows as $item) {{ $item['city_name'] ?? '-' }} - {{ $item['total_missions'] ?? '-' }} - {{ $item['taradod_khareg_mahdode'] ?? '-' }} + {{ $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'] ?? '-' }} @endforeach From fe45d815bcb51697b154e7b136301a4d3741f942 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 26 Jan 2026 14:11:31 +0330 Subject: [PATCH 15/20] merge to github --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index bb4a5e23..14720635 100644 --- a/.env.example +++ b/.env.example @@ -98,7 +98,7 @@ 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=1qaz From acdce4a3bd9229e0606625e81f9fd61c850a18d9 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Mon, 26 Jan 2026 16:40:34 +0330 Subject: [PATCH 16/20] debug the reports --- .../Mission/Report/ReportTradodController.php | 8 +- .../Report/ReportViolationController.php | 8 +- app/Providers/AppServiceProvider.php | 2 +- app/Providers/RouteServiceProvider.php | 2 +- .../Mission/Report/ReportTradodService.php | 266 +++++++++--------- .../Mission/Report/ReportViolationService.php | 196 ++++++------- routes/v3.php | 20 +- 7 files changed, 259 insertions(+), 243 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php index d5610e3a..46508fef 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php @@ -31,7 +31,13 @@ class ReportTradodController extends Controller { return $this->successResponse([ 'activities' =>$reportMissionService->provinceActivity($request), - 'city' => City::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']), + 'city' => City::query() + ->where('province_id', $request->province_id) + ->where(function ($query) { + $query->where('type_id', 1) + ->orWhereIn('name_fa', ['اداره ماشين‌آلات', 'اداره نقلیه']); + }) + ->get(['id', 'name_fa']) ]); } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php index 9be4b05b..3cc97a10 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportViolationController.php @@ -31,7 +31,13 @@ class ReportViolationController extends Controller { return $this->successResponse([ 'activities' =>$reportService->provinceActivity($request), - 'city' => City::query()->where('province_id', $request->province_id)->get(['id', 'name_fa']), + 'city' => City::query() + ->where('province_id', $request->province_id) + ->where(function ($query) { + $query->where('type_id', 1) + ->orWhereIn('name_fa', ['اداره ماشين‌آلات', 'اداره نقلیه']); + }) + ->get(['id', 'name_fa']) ]); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index fe8a66ae..a794382e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -25,6 +25,6 @@ class AppServiceProvider extends ServiceProvider public function boot() { Schema::defaultStringLength(191); - \URL::forceScheme('https'); +// \URL::forceScheme('https'); } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 1276b656..4d661d74 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -70,7 +70,7 @@ class RouteServiceProvider extends ServiceProvider Route::prefix('api/v3') ->name('v3.') - ->middleware(['web', 'auth', 'confirmUser']) +// ->middleware(['web', 'auth', 'confirmUser']) ->namespace($this->namespace) ->group(base_path('routes/v3.php')); diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php index f975662d..f0d25df3 100644 --- a/app/Services/Cartables/Mission/Report/ReportTradodService.php +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -27,76 +27,77 @@ class ReportTradodService public function countryActivity(Request $request): array { $from = $request->from_date ?? today()->startOfDay(); - $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); - $sql = " - SELECT* - FROM( - SELECT - 'کل کشور' AS province_name, - -1 AS province_id, - SUM(t.total) AS total, - SUM(t.khareg_mahdode) AS khareg_mahdode, - SUM(t.gps) AS gps, - SUM(t.durations) AS durations, - SUM(t.far_h) AS far_h, - SUM(t.far_d) AS far_d, - SUM(t.un_far_h) AS un_far_h, - SUM(t.un_far_d) AS un_far_d, - SUM(t.item) AS item, - SUM(t.patrol) AS patrol - FROM ( - SELECT - 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 - AND m.created_at <= :to_m - GROUP BY p.id - ) t - - 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 - AND m.created_at <= :to_m - GROUP BY p.id, p.name_fa - )q - ORDER BY - CASE WHEN province_id = -1 THEN 0 ELSE 1 END, - province_name; - - "; + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); + $sql = " + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + SUM(t.total) AS total, + SUM(t.khareg_mahdode) AS khareg_mahdode, + SUM(t.gps) AS gps, + SUM(t.durations) AS durations, + SUM(t.far_h) AS far_h, + SUM(t.far_d) AS far_d, + SUM(t.un_far_h) AS un_far_h, + SUM(t.un_far_d) AS un_far_d, + SUM(t.item) AS item, + SUM(t.patrol) AS patrol + FROM ( + SELECT + 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_1 + AND m.created_at <= :to_m_1 + GROUP BY p.id + ) t + + 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' => $from, - 'to_m' => $to, + 'from_m_1' => $from, + 'to_m_1' => $to, + 'from_m_2' => $from, + 'to_m_2' => $to, ]); } @@ -104,57 +105,27 @@ class ReportTradodService { $provinceId = $request->province_id ?? auth()->user()->province_id; $from = $request->from_date ?? today()->startOfDay(); - $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " - SELECT* - FROM( - SELECT - 'کل استان' AS city_name, - -1 AS city_id, - SUM(t.total) AS total, - SUM(t.khareg_mahdode) AS khareg_mahdode, - SUM(t.gps) AS gps, - SUM(t.durations) AS durations, - SUM(t.far_h) AS far_h, - SUM(t.far_d) AS far_d, - SUM(t.un_far_h) AS un_far_h, - SUM(t.un_far_d) AS un_far_d, - SUM(t.item) AS item, - SUM(t.patrol) AS patrol - FROM ( - SELECT - 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 - AND m.created_at <= :to_m - WHERE c.province_id = :province_id - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id - ) t - - UNION ALL - - SELECT - c.name_fa AS city_name, + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + SUM(t.total) AS total, + SUM(t.khareg_mahdode) AS khareg_mahdode, + SUM(t.gps) AS gps, + SUM(t.durations) AS durations, + SUM(t.far_h) AS far_h, + SUM(t.far_d) AS far_d, + SUM(t.un_far_h) AS un_far_h, + SUM(t.un_far_d) AS un_far_d, + SUM(t.item) AS item, + SUM(t.patrol) AS patrol + FROM ( + SELECT 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, @@ -165,29 +136,58 @@ class ReportTradodService 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 + FROM cities c + LEFT JOIN missions m ON m.city_id = c.id - AND m.created_at >= :from_m - AND m.created_at <= :to_m - WHERE c.province_id = :province_id + AND m.created_at >= :from_m_1 + AND m.created_at <= :to_m_1 + WHERE c.province_id = :province_id_1 AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + 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; - - "; + GROUP BY c.id + ) t + + 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' => $provinceId, - 'from_m' => $from, - 'to_m' => $to, + '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 index 278868fa..5e9f2c91 100644 --- a/app/Services/Cartables/Mission/Report/ReportViolationService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -27,20 +27,21 @@ class ReportViolationService public function countryActivity(Request $request): array { $from = $request->from_date ?? today()->startOfDay(); - $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + // اصلاحیه برای جلوگیری از خطا در صورت null بودن to_date + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " - SELECT* - FROM( - SELECT - 'کل کشور' AS province_name, - -1 AS province_id, - SUM(t.total) AS total, - SUM(t.done) AS done, - SUM(t.undone) AS undone, - SUM(t.gps) AS gps, - SUM(t.herasat) AS herasat, - SUM(t.mil_gps) AS mil_gps + SELECT* + FROM( + SELECT + 'کل کشور' AS province_name, + -1 AS province_id, + SUM(t.total) AS total, + SUM(t.done) AS done, + SUM(t.undone) AS undone, + SUM(t.gps) AS gps, + SUM(t.herasat) AS herasat, + SUM(t.mil_gps) AS mil_gps FROM ( SELECT p.id AS province_id, @@ -50,44 +51,44 @@ class ReportViolationService 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_1 + AND mv.created_at <= :to_mv_1 + GROUP BY p.id + ) t + + 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 - AND mv.created_at <= :to_mv - GROUP BY p.id - ) t - - 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 - AND mv.created_at <= :to_mv - GROUP BY p.id, p.name_fa - )q + 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; - - "; + CASE WHEN province_id = -1 THEN 0 ELSE 1 END, + province_name; + "; return DB::select($sql, [ - 'from_mv' => $from, - 'to_mv' => $to, + 'from_mv_1' => $from, + 'to_mv_1' => $to, + 'from_mv_2' => $from, + 'to_mv_2' => $to, ]); } @@ -95,47 +96,23 @@ class ReportViolationService { $provinceId = $request->province_id ?? auth()->user()->province_id; $from = $request->from_date ?? today()->startOfDay(); - $to = Carbon::parse($request->to_date)->endOfDay() ?? today()->endOfDay(); + // اصلاحیه برای جلوگیری از خطا در صورت null بودن to_date + $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " - SELECT* - FROM( + SELECT* + FROM( + SELECT + 'کل استان' AS city_name, + -1 AS city_id, + SUM(t.total) AS total, + SUM(t.done) AS done, + SUM(t.undone) AS undone, + SUM(t.gps) AS gps, + SUM(t.herasat) AS herasat, + SUM(t.mil_gps) AS mil_gps + FROM ( SELECT - 'کل استان' AS city_name, - -1 AS city_id, - SUM(t.total) AS total, - SUM(t.done) AS done, - SUM(t.undone) AS undone, - SUM(t.gps) AS gps, - SUM(t.herasat) AS herasat, - SUM(t.mil_gps) AS mil_gps - FROM ( - SELECT - 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 - AND mv.created_at <= :to_mv - WHERE c.province_id = :province_id - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id - ) t - - 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, @@ -147,25 +124,52 @@ class ReportViolationService LEFT JOIN mission_violations mv ON mv.city_id = c.id AND mv.type = 1 - AND mv.created_at >= :from_mv - AND mv.created_at <= :to_mv - WHERE c.province_id = :province_id + AND mv.created_at >= :from_mv_1 + AND mv.created_at <= :to_mv_1 + WHERE c.province_id = :province_id_1 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; - + c.type_id = 1 + OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') + ) + GROUP BY c.id + ) t + + 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' => $provinceId, - 'from_mv' => $from, - 'to_mv' => $to, + '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/routes/v3.php b/routes/v3.php index ce0d74ad..6c10cec9 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -539,21 +539,21 @@ Route::prefix('missions') ->name('reportsViolation.') ->controller(ReportViolationController::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_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('report_tradod') - ->name('reportsTradod.') + 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_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'); }); From 81bd7532e9b201938b7817578c2ef72e487e2120 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Tue, 27 Jan 2026 10:26:47 +0330 Subject: [PATCH 17/20] fix code in views --- app/Exports/V3/Mission/Report/Violation/CountryReport.php | 2 +- app/Exports/V3/Mission/Report/Violation/ProvinceReport.php | 2 +- .../V3/Dashboard/Mission/Report/ReportTradodController.php | 4 ++-- .../Reports/Mission/Report/CountryActivityReport.blade.php | 6 +++--- .../Reports/Mission/Report/ProvinceActivityReport.blade.php | 6 +++--- .../Mission/Report/Tradod /CountryActivityReport.blade.php | 6 +++--- .../Mission/Report/Tradod /ProvinceActivityReport.blade.php | 6 +++--- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/Exports/V3/Mission/Report/Violation/CountryReport.php b/app/Exports/V3/Mission/Report/Violation/CountryReport.php index 59eb65c7..7862ec52 100644 --- a/app/Exports/V3/Mission/Report/Violation/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -94,7 +94,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('E1'); + $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 index a4251c64..17adae78 100644 --- a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -98,7 +98,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven $drawing2->setHeight(50); $drawing2->setOffsetX(5); $drawing2->setOffsetY(5); - $drawing2->setCoordinates('E1'); + $drawing2->setCoordinates('G1'); return [$drawing, $drawing2]; } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php index d5610e3a..9bffa8bf 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/Report/ReportTradodController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\V3\Dashboard\Mission\Report; -use App\Exports\V3\Mission\Report\Violation\CountryReport; -use App\Exports\V3\Mission\Report\Violation\ProvinceReport; +use App\Exports\V3\Mission\Report\Tradod\CountryReport; +use App\Exports\V3\Mission\Report\Tradod\ProvinceReport; use App\Http\Controllers\Controller; use App\Http\Traits\ApiResponse; use App\Models\City; diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index 2dbe9f08..a70cc052 100644 --- a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -27,18 +27,18 @@ - - - diff --git a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php index d62f37ed..7d34bdc3 100644 --- a/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/ProvinceActivityReport.blade.php @@ -27,18 +27,18 @@
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش نخلف های صورت گرفته
- - - diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php index cfb60ac5..868274c1 100644 --- a/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/Tradod /CountryActivityReport.blade.php @@ -27,18 +27,18 @@
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش نخلف های صورت گرفته
- - - diff --git a/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php index a78d5b56..33b8c044 100644 --- a/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/Tradod /ProvinceActivityReport.blade.php @@ -27,18 +27,18 @@
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش نخلف های صورت گرفته
- - - From 93baa95f4612128e068becdb0a28a55bb1e93d55 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 27 Jan 2026 11:21:34 +0330 Subject: [PATCH 18/20] fix the performance --- .../Mission/Report/ReportTradodService.php | 92 ++++++------------- .../Mission/Report/ReportViolationService.php | 75 +++++---------- 2 files changed, 48 insertions(+), 119 deletions(-) diff --git a/app/Services/Cartables/Mission/Report/ReportTradodService.php b/app/Services/Cartables/Mission/Report/ReportTradodService.php index f0d25df3..2aacae97 100644 --- a/app/Services/Cartables/Mission/Report/ReportTradodService.php +++ b/app/Services/Cartables/Mission/Report/ReportTradodService.php @@ -35,36 +35,19 @@ class ReportTradodService SELECT 'کل کشور' AS province_name, -1 AS province_id, - SUM(t.total) AS total, - SUM(t.khareg_mahdode) AS khareg_mahdode, - SUM(t.gps) AS gps, - SUM(t.durations) AS durations, - SUM(t.far_h) AS far_h, - SUM(t.far_d) AS far_d, - SUM(t.un_far_h) AS un_far_h, - SUM(t.un_far_d) AS un_far_d, - SUM(t.item) AS item, - SUM(t.patrol) AS patrol - FROM ( - SELECT - 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_1 - AND m.created_at <= :to_m_1 - GROUP BY p.id - ) t + 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 @@ -113,41 +96,20 @@ class ReportTradodService SELECT 'کل استان' AS city_name, -1 AS city_id, - SUM(t.total) AS total, - SUM(t.khareg_mahdode) AS khareg_mahdode, - SUM(t.gps) AS gps, - SUM(t.durations) AS durations, - SUM(t.far_h) AS far_h, - SUM(t.far_d) AS far_d, - SUM(t.un_far_h) AS un_far_h, - SUM(t.un_far_d) AS un_far_d, - SUM(t.item) AS item, - SUM(t.patrol) AS patrol - FROM ( - SELECT - 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_1 - AND m.created_at <= :to_m_1 - WHERE c.province_id = :province_id_1 - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id - ) t + 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 diff --git a/app/Services/Cartables/Mission/Report/ReportViolationService.php b/app/Services/Cartables/Mission/Report/ReportViolationService.php index 5e9f2c91..45ec40a1 100644 --- a/app/Services/Cartables/Mission/Report/ReportViolationService.php +++ b/app/Services/Cartables/Mission/Report/ReportViolationService.php @@ -27,7 +27,6 @@ class ReportViolationService public function countryActivity(Request $request): array { $from = $request->from_date ?? today()->startOfDay(); - // اصلاحیه برای جلوگیری از خطا در صورت null بودن to_date $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " @@ -36,29 +35,15 @@ class ReportViolationService SELECT 'کل کشور' AS province_name, -1 AS province_id, - SUM(t.total) AS total, - SUM(t.done) AS done, - SUM(t.undone) AS undone, - SUM(t.gps) AS gps, - SUM(t.herasat) AS herasat, - SUM(t.mil_gps) AS mil_gps - FROM ( - SELECT - 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_1 - AND mv.created_at <= :to_mv_1 - GROUP BY p.id - ) t + 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 @@ -96,7 +81,6 @@ class ReportViolationService { $provinceId = $request->province_id ?? auth()->user()->province_id; $from = $request->from_date ?? today()->startOfDay(); - // اصلاحیه برای جلوگیری از خطا در صورت null بودن to_date $to = $request->to_date ? Carbon::parse($request->to_date)->endOfDay() : today()->endOfDay(); $sql = " @@ -105,34 +89,17 @@ class ReportViolationService SELECT 'کل استان' AS city_name, -1 AS city_id, - SUM(t.total) AS total, - SUM(t.done) AS done, - SUM(t.undone) AS undone, - SUM(t.gps) AS gps, - SUM(t.herasat) AS herasat, - SUM(t.mil_gps) AS mil_gps - FROM ( - SELECT - 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_1 - AND mv.created_at <= :to_mv_1 - WHERE c.province_id = :province_id_1 - AND ( - c.type_id = 1 - OR c.name_fa IN ('اداره ماشين‌آلات', 'اداره نقلیه') - ) - GROUP BY c.id - ) t + 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 @@ -147,7 +114,7 @@ class ReportViolationService 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 + ON mv.city_id = c.id AND mv.type = 1 AND mv.created_at >= :from_mv_2 AND mv.created_at <= :to_mv_2 From ad03609c3d92b93d10ea5c458d83bff35744696b Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 27 Jan 2026 11:32:08 +0330 Subject: [PATCH 19/20] revert the dependencies --- app/Providers/AppServiceProvider.php | 2 +- app/Providers/RouteServiceProvider.php | 2 +- routes/v3.php | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index a794382e..fe8a66ae 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -25,6 +25,6 @@ class AppServiceProvider extends ServiceProvider public function boot() { Schema::defaultStringLength(191); -// \URL::forceScheme('https'); + \URL::forceScheme('https'); } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 4d661d74..1276b656 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -70,7 +70,7 @@ class RouteServiceProvider extends ServiceProvider Route::prefix('api/v3') ->name('v3.') -// ->middleware(['web', 'auth', 'confirmUser']) + ->middleware(['web', 'auth', 'confirmUser']) ->namespace($this->namespace) ->group(base_path('routes/v3.php')); diff --git a/routes/v3.php b/routes/v3.php index 6c10cec9..679c96b3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -539,10 +539,10 @@ Route::prefix('missions') ->name('reportsViolation.') ->controller(ReportViolationController::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_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'); }); @@ -550,10 +550,10 @@ Route::prefix('missions') ->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_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'); }); From f1c560928e3f06abe3daf005cdc5b730c80f8e30 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Tue, 27 Jan 2026 11:54:14 +0330 Subject: [PATCH 20/20] debug the excels --- app/Exports/V3/Mission/Report/Tradod/CountryReport.php | 2 +- app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php | 2 +- app/Exports/V3/Mission/Report/Violation/CountryReport.php | 2 +- app/Exports/V3/Mission/Report/Violation/ProvinceReport.php | 2 +- .../v3/Reports/Mission/Report/CountryActivityReport.blade.php | 4 ++-- .../Reports/Mission/Report/ProvinceActivityReport.blade.php | 4 ++-- .../Mission/Report/Tradod /CountryActivityReport.blade.php | 4 ++-- .../Mission/Report/Tradod /ProvinceActivityReport.blade.php | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php index 425879b5..69e2b66d 100644 --- a/app/Exports/V3/Mission/Report/Tradod/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Tradod/CountryReport.php @@ -69,7 +69,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent $exportRows[] = $row; } - return view('v3.Reports.Mission.Report.CountryActivityReport', [ + return view('v3.Reports.Mission.Report.Tradod .CountryActivityReport', [ 'rows' => $exportRows, ]); } diff --git a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php index e56d6cef..28e31bd0 100644 --- a/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Tradod/ProvinceReport.php @@ -71,7 +71,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven $exportRows[] = $row; } - return view('v3.Reports.Mission.Report.ProvinceActivityReport', [ + return view('v3.Reports.Mission.Report.Tradod .ProvinceActivityReport', [ 'rows' => $exportRows, ]); } diff --git a/app/Exports/V3/Mission/Report/Violation/CountryReport.php b/app/Exports/V3/Mission/Report/Violation/CountryReport.php index 7862ec52..b38b65a4 100644 --- a/app/Exports/V3/Mission/Report/Violation/CountryReport.php +++ b/app/Exports/V3/Mission/Report/Violation/CountryReport.php @@ -30,7 +30,7 @@ class CountryReport implements FromView, ShouldAutoSize, WithDrawings, WithEvent 'province_name' => $name, 'total' => (int) ($r->total ?? 0), 'egdam_shode' => (int) ($r->done ?? 0), - 'bedone_egdam' => (int) ($r->undon ?? 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), diff --git a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php index 17adae78..29a52806 100644 --- a/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php +++ b/app/Exports/V3/Mission/Report/Violation/ProvinceReport.php @@ -31,7 +31,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithDrawings, WithEven 'city_name' => $name, 'total' => (int) ($r->total ?? 0), 'egdam_shode' => (int) ($r->done ?? 0), - 'bedone_egdam' => (int) ($r->undon ?? 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), diff --git a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php index a70cc052..2f929a97 100644 --- a/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php +++ b/resources/views/v3/Reports/Mission/Report/CountryActivityReport.blade.php @@ -5,7 +5,7 @@ - گزارش کل کشور + گزارش کل کشور
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
گزارش نخلف های صورت گرفته