diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php
new file mode 100644
index 00000000..a5f33307
--- /dev/null
+++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerItemReport.php
@@ -0,0 +1,129 @@
+fromDate ?? '2021-03-21 00:00:00';
+ $toDate = $this->toDate ?? \Carbon\Carbon::now();
+
+ $query = "SELECT
+ COUNT(CASE WHEN item = 1 THEN 1 END) AS MarematRooyeCount,
+ COUNT(CASE WHEN item = 2 THEN 1 END) AS PaksaziCount,
+ COUNT(CASE WHEN item = 3 THEN 1 END) AS AlaemCount,
+ COUNT(CASE WHEN item = 4 THEN 1 END) AS HefazCount,
+ COUNT(CASE WHEN item = 5 THEN 1 END) AS RoshanayiCount,
+ COUNT(CASE WHEN item = 6 THEN 1 END) AS KhatkeshiCount,
+ COUNT(CASE WHEN item = 7 THEN 1 END) AS RangamiziCount,
+ COUNT(CASE WHEN item = 8 THEN 1 END) AS WashingCount,
+ COUNT(CASE WHEN item = 9 THEN 1 END) AS ImenSaziCount,
+ COUNT(CASE WHEN item = 10 THEN 1 END) AS HarimCount,
+ COUNT(CASE WHEN item = 11 THEN 1 END) AS PolCount,
+ COUNT(CASE WHEN item = 12 THEN 1 END) AS ToonelCount,
+ COUNT(CASE WHEN item = 13 THEN 1 END) AS AmaliatZemestaniCount,
+ COUNT(CASE WHEN item = 14 THEN 1 END) AS MashinAlatCount,
+ COUNT(CASE WHEN item = 15 THEN 1 END) AS TollhouseCount,
+ COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount,
+ province_fa,
+ province_id,
+ COUNT(CASE WHEN item != 20 THEN 1 END) AS TotalProvinceCount
+ FROM (
+ SELECT
+ province_fa,
+ province_id,
+ item,
+ status
+ FROM road_items_projects
+ WHERE activity_date_time BETWEEN '{$fromDate}' and '{$toDate}'
+ ) AS merged_table
+ WHERE status = 1
+ GROUP BY province_id, province_fa;";
+
+ $provinceActivities = collect(DB::select($query));
+
+ $totalItemCount = [
+ 'totalMarematRooyeCount' => $provinceActivities->sum('MarematRooyeCount'),
+ 'totalPaksaziCount' => $provinceActivities->sum('PaksaziCount'),
+ 'totalAlaemCount' => $provinceActivities->sum('AlaemCount'),
+ 'totalHefazCount' => $provinceActivities->sum('HefazCount'),
+ 'totalRoshanayiCount' => $provinceActivities->sum('RoshanayiCount'),
+ 'totalKhatkeshiCount' => $provinceActivities->sum('KhatkeshiCount'),
+ 'totalRangamiziCount' => $provinceActivities->sum('RangamiziCount'),
+ 'totalWashingCount' => $provinceActivities->sum('WashingCount'),
+ 'totalImenSaziCount' => $provinceActivities->sum('ImenSaziCount'),
+ 'totalHarimCount' => $provinceActivities->sum('HarimCount'),
+ 'totalPolCount' => $provinceActivities->sum('PolCount'),
+ 'totalToonelCount' => $provinceActivities->sum('ToonelCount'),
+ 'totalAmaliatZemestaniCount' => $provinceActivities->sum('AmaliatZemestaniCount'),
+ 'totalMashinAlatCount' => $provinceActivities->sum('MashinAlatCount'),
+ 'totalTollhouseCount' => $provinceActivities->sum('TollhouseCount'),
+ 'totalEmergencyCount' => $provinceActivities->sum('EmergencyCount'),
+ 'totalCountryCount' => $provinceActivities->sum('TotalProvinceCount'),
+ ];
+
+ return view('v3.Reports.RoadItems.CountryActivityPerItem', [
+ 'provinceCount' => $provinceActivities,
+ 'countryCount' => $totalItemCount,
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setHorizontal(Alignment::HORIZONTAL_CENTER);
+
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setVertical(Alignment::VERTICAL_CENTER);
+ }
+ ];
+ }
+
+ 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('q1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php
new file mode 100644
index 00000000..16fc87cf
--- /dev/null
+++ b/app/Exports/V3/RoadItemsProjects/CountryActivityPerSubItemReport.php
@@ -0,0 +1,70 @@
+activities;
+
+ return view('v3.Reports.RoadItems.CountryActivityPerSubItem', [
+ 'activities' => $activities["data"],
+ 'fromDate' => $activities["fromDate"],
+ 'toDate' => $activities["toDate"],
+ 'details' => $activities["details"]
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setHorizontal(Alignment::HORIZONTAL_CENTER);
+
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setVertical(Alignment::VERTICAL_CENTER);
+ }
+ ];
+ }
+
+ 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('q1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php
new file mode 100644
index 00000000..7b8f99b2
--- /dev/null
+++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerItemReport.php
@@ -0,0 +1,137 @@
+fromDate ?? '2021-03-21 00:00:00';
+ $toDate = $this->toDate ?? \Carbon\Carbon::now();
+
+ $query = "SELECT
+ COUNT(CASE WHEN item = 1 THEN 1 END) AS MarematRooyeCount,
+ COUNT(CASE WHEN item = 2 THEN 1 END) AS PaksaziCount,
+ COUNT(CASE WHEN item = 3 THEN 1 END) AS AlaemCount,
+ COUNT(CASE WHEN item = 4 THEN 1 END) AS HefazCount,
+ COUNT(CASE WHEN item = 5 THEN 1 END) AS RoshanayiCount,
+ COUNT(CASE WHEN item = 6 THEN 1 END) AS KhatkeshiCount,
+ COUNT(CASE WHEN item = 7 THEN 1 END) AS RangamiziCount,
+ COUNT(CASE WHEN item = 8 THEN 1 END) AS WashingCount,
+ COUNT(CASE WHEN item = 9 THEN 1 END) AS ImenSaziCount,
+ COUNT(CASE WHEN item = 10 THEN 1 END) AS HarimCount,
+ COUNT(CASE WHEN item = 11 THEN 1 END) AS PolCount,
+ COUNT(CASE WHEN item = 12 THEN 1 END) AS ToonelCount,
+ COUNT(CASE WHEN item = 13 THEN 1 END) AS AmaliatZemestaniCount,
+ COUNT(CASE WHEN item = 14 THEN 1 END) AS MashinAlatCount,
+ COUNT(CASE WHEN item = 15 THEN 1 END) AS TollhouseCount,
+ COUNT(CASE WHEN item = 16 THEN 1 END) AS EmergencyCount,
+ province_fa,
+ province_id,
+ edarat_name,
+ edarat_id,
+ COUNT(CASE WHEN item != 20 THEN 1 END) AS TotalCityCount
+ FROM (
+ SELECT
+ province_fa,
+ province_id,
+ edarat_name,
+ edarat_id,
+ item,
+ status
+ FROM road_items_projects
+ WHERE activity_date_time BETWEEN '{$fromDate}' and '{$toDate}'
+ ) AS merged_table
+ WHERE status = 1
+ AND province_id = {$this->provinceId}
+ GROUP BY edarat_id, edarat_name order by province_id ASC;";
+
+ $cityActivities = collect(DB::select($query));
+
+ $totalItemCount = [
+ 'totalMarematRooyeCount' => $cityActivities->sum('MarematRooyeCount'),
+ 'totalPaksaziCount' => $cityActivities->sum('PaksaziCount'),
+ 'totalAlaemCount' => $cityActivities->sum('AlaemCount'),
+ 'totalHefazCount' => $cityActivities->sum('HefazCount'),
+ 'totalRoshanayiCount' => $cityActivities->sum('RoshanayiCount'),
+ 'totalKhatkeshiCount' => $cityActivities->sum('KhatkeshiCount'),
+ 'totalRangamiziCount' => $cityActivities->sum('RangamiziCount'),
+ 'totalWashingCount' => $cityActivities->sum('WashingCount'),
+ 'totalImenSaziCount' => $cityActivities->sum('ImenSaziCount'),
+ 'totalHarimCount' => $cityActivities->sum('HarimCount'),
+ 'totalPolCount' => $cityActivities->sum('PolCount'),
+ 'totalToonelCount' => $cityActivities->sum('ToonelCount'),
+ 'totalAmaliatZemestaniCount' => $cityActivities->sum('AmaliatZemestaniCount'),
+ 'totalMashinAlatCount' => $cityActivities->sum('MashinAlatCount'),
+ 'totalTollhouseCount' => $cityActivities->sum('TollhouseCount'),
+ 'totalEmergencyCount' => $cityActivities->sum('EmergencyCount'),
+ 'TotalProvinceCount' => $cityActivities->sum('TotalCityCount'),
+ ];
+
+ return view('v3.Reports.RoadItems.ProvinceActivityPerItem', [
+ 'cityCount' => $cityActivities,
+ 'provinceCount' => $totalItemCount,
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setHorizontal(Alignment::HORIZONTAL_CENTER);
+
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setVertical(Alignment::VERTICAL_CENTER);
+ }
+ ];
+ }
+
+ 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('q1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php
new file mode 100644
index 00000000..2d8aad5a
--- /dev/null
+++ b/app/Exports/V3/RoadItemsProjects/ProvinceActivityPerSubItemReport.php
@@ -0,0 +1,75 @@
+activities;
+
+ return view('v3.Reports.RoadItems.ProvinceActivityPerSubItem', [
+ 'activities' => $activities["data"],
+ 'fromDate' => $activities["fromDate"],
+ 'toDate' => $activities["toDate"],
+ 'details' => $activities["details"]
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setHorizontal(Alignment::HORIZONTAL_CENTER);
+
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setVertical(Alignment::VERTICAL_CENTER);
+ }
+ ];
+ }
+
+ 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('q1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Exports/V3/RoadPatrols/CountryActivity.php b/app/Exports/V3/RoadPatrols/CountryActivity.php
new file mode 100644
index 00000000..29be9cff
--- /dev/null
+++ b/app/Exports/V3/RoadPatrols/CountryActivity.php
@@ -0,0 +1,70 @@
+activities;
+
+ return view('v3.Reports.RoadPatrols.CountryActivity', [
+ 'activities' => $activities["activities"],
+ 'fromDate' => $activities["fromDate"],
+ 'toDate' => $activities["toDate"]
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setHorizontal(Alignment::HORIZONTAL_CENTER);
+
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setVertical(Alignment::VERTICAL_CENTER);
+ }
+ ];
+ }
+
+ 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('q1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Exports/V3/RoadPatrols/ProvinceActivity.php b/app/Exports/V3/RoadPatrols/ProvinceActivity.php
new file mode 100644
index 00000000..1d7d0d8d
--- /dev/null
+++ b/app/Exports/V3/RoadPatrols/ProvinceActivity.php
@@ -0,0 +1,70 @@
+activities;
+
+ return view('v3.Reports.RoadPatrols.ProvinceActivity', [
+ 'activities' => $activities["activities"],
+ 'fromDate' => $activities["fromDate"],
+ 'toDate' => $activities["toDate"]
+ ]);
+ }
+
+ public function registerEvents(): array
+ {
+ return [
+ AfterSheet::class => function (AfterSheet $event) {
+ $event->sheet->getDelegate()->setRightToLeft(true);
+ $event->sheet->getDelegate()->getStyle('A:U')->getFont()->setName('Arial');
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setHorizontal(Alignment::HORIZONTAL_CENTER);
+
+ $event->sheet->getDelegate()->getStyle('A:U')
+ ->getAlignment()
+ ->setVertical(Alignment::VERTICAL_CENTER);
+ }
+ ];
+ }
+
+ 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('q1');
+ return [$drawing, $drawing2];
+ }
+}
\ No newline at end of file
diff --git a/app/Http/Controllers/DevelopController.php b/app/Http/Controllers/DevelopController.php
index 9fa55bde..d7eaec3e 100644
--- a/app/Http/Controllers/DevelopController.php
+++ b/app/Http/Controllers/DevelopController.php
@@ -658,7 +658,7 @@ class DevelopController extends Controller
$save = $file->move(storage_path('images'), $fileName);
- \App\Helpers\Compress::resize($save);
+// \App\Helpers\Compress::resize($save);
return response()->json(['msg' => 'ok']);
}
diff --git a/app/Http/Controllers/RoadItemsProjectController.php b/app/Http/Controllers/RoadItemsProjectController.php
index ff774208..502f8ad1 100644
--- a/app/Http/Controllers/RoadItemsProjectController.php
+++ b/app/Http/Controllers/RoadItemsProjectController.php
@@ -154,13 +154,13 @@ class RoadItemsProjectController extends Controller
$after = $request->file('after_image')->store('road_items_projects_new/after', 'public');
$roadItems->files()->create(['path' => $after]);
$urlAfter = "/var/www/rms/public/storage/{$after}";
- \App\Helpers\Compress::resize($urlAfter);
+// \App\Helpers\Compress::resize($urlAfter);
}
if ($request->has('before_image')) {
$before = $request->file('before_image')->store('/road_items_projects_new/before', 'public');
$roadItems->files()->create(['path' => $before]);
$urlBefore = "/var/www/rms/public/storage/{$before}";
- \App\Helpers\Compress::resize($urlBefore);
+// \App\Helpers\Compress::resize($urlBefore);
}
if (auth()->user()) {
diff --git a/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php b/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php
index 445db4ad..e6e8e907 100644
--- a/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php
+++ b/app/Http/Controllers/V2/Dashboard/RoadItemsProjectController.php
@@ -372,7 +372,7 @@ class RoadItemsProjectController extends Controller
]);
// $road_item->files()->create(['path' => $after]);
$urlAfter = "/var/www/rms/public/storage/{$after}";
- \App\Helpers\Compress::resize($urlAfter);
+// \App\Helpers\Compress::resize($urlAfter);
}
if ($request->has('before_image')) {
Storage::delete('public/'. $road_item->files[1]->path);
@@ -383,7 +383,7 @@ class RoadItemsProjectController extends Controller
]);
// $road_item->files()->create(['path' => $before]);
$urlBefore = "/var/www/rms/public/storage/{$before}";
- \App\Helpers\Compress::resize($urlBefore);
+// \App\Helpers\Compress::resize($urlBefore);
}
}
diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php
index 5c0d789c..be92abb6 100644
--- a/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php
+++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadItemsReportController.php
@@ -2,13 +2,17 @@
namespace App\Http\Controllers\V3\Dashboard\Reports;
-use App\Exports\Activities\One\AllSheets as OneSheet;
+use App\Exports\V3\RoadItemsProjects\CountryActivityPerItemReport;
+use App\Exports\V3\RoadItemsProjects\CountryActivityPerSubItemReport;
+use App\Exports\V3\RoadItemsProjects\ProvinceActivityPerItemReport;
+use App\Exports\V3\RoadItemsProjects\ProvinceActivityPerSubItemReport;
use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\InfoItem;
use App\Models\Province;
use App\Models\RoadItemsProject;
+use App\Services\Reports\RoadItemReportService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
@@ -224,38 +228,48 @@ class RoadItemsReportController extends Controller
return $this->successResponse($data);
}
- public function activityExcelPerItem(Request $request): BinaryFileResponse
+ public function countryActivityExcelPerItem(Request $request): BinaryFileResponse
{
auth()->user()->addActivityComplete(1034);
- $name = 'گزارش از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
- return Excel::download(new OneSheet($request->fromDate, $request->toDate, $request->province), $name);
+ $name = 'گزارش کشوری از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+ return Excel::download(new CountryActivityPerItemReport($request->fromDate, $request->toDate), $name);
}
- public function activityExcelPerSubItem(Request $request)
+ public function provinceActivityExcelPerItem(Request $request): BinaryFileResponse
{
- $url_correction = $request->province ? "&province={$request->province}" : "";
+ auth()->user()->addActivityComplete(1034);
+ $name = 'گزارش استانی از فعالیت روزانه و جاری - جدول 1 ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+ return Excel::download(new ProvinceActivityPerItemReport($request->fromDate, $request->toDate, $request->province), $name);
+ }
- return match ($request->type) {
- 1 => redirect("/reports/two/maremat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 2 => redirect("/reports/two/paksazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 3 => redirect("/reports/two/alaem?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 4 => redirect("/reports/two/hefaz?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 5 => redirect("/reports/two/roshanaei?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 6 => redirect("/reports/two/khatkeshi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 7 => redirect("/reports/two/rangamizi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 8 => redirect("/reports/two/shosteshoo?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 9 => redirect("/reports/two/imensazi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 10 => redirect("/reports/two/harim?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 11 => redirect("/reports/two/pol?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 12 => redirect("/reports/two/toonel?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 13 => redirect("/reports/two/zemestani?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 14 => redirect("/reports/two/mashinalat?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 15 => redirect("/reports/two/rahdar?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 16 => redirect("/reports/two/ezterari?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- 20 => redirect("/reports/two/bazrasi?fromDate={$request->fromDate}&toDate={$request->toDate}" . $url_correction),
- default => response()->json([
- 'error' => '404'
- ], 404),
- };
+ public function countryActivityExcelPerSubItem(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse
+ {
+ auth()->user()->addActivityComplete(1034);
+
+ $activities = $roadItemReportService->countryActivityPerSubItem(
+ $request->item,
+ $request->fromDate,
+ $request->toDate,
+ );
+
+ $name = "گزارش کشوری از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+
+ return Excel::download(new CountryActivityPerSubItemReport($activities), $name);
+ }
+
+ public function provinceActivityExcelPerSubItem(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse
+ {
+ auth()->user()->addActivityComplete(1034);
+
+ $activities = $roadItemReportService->provinceActivityPerSubItem(
+ $request->item,
+ $request->fromDate,
+ $request->toDate,
+ $request->province_id
+ );
+
+ $name = "گزارش استانی از فعالیت روزانه و جاری - جدول 2 " . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+
+ return Excel::download(new ProvinceActivityPerSubItemReport($activities), $name);
}
}
diff --git a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php
index 26e218ba..8df975dd 100644
--- a/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php
+++ b/app/Http/Controllers/V3/Dashboard/Reports/RoadPatrolReportController.php
@@ -2,69 +2,27 @@
namespace App\Http\Controllers\V3\Dashboard\Reports;
-use App\Exports\V2\RoadPatrol\RoadPatrolTable\AllSheets as RoadPatrolTable;
+use App\Exports\V3\RoadPatrols\CountryActivity;
+use App\Exports\V3\RoadPatrols\ProvinceActivity;
use App\Http\Controllers\Controller;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\Province;
-use App\Models\RoadPatrolProject;
+use App\Services\Reports\RoadPatrolReportService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
-use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class RoadPatrolReportController extends Controller
{
use ApiResponse;
- public function provincePatrolActivity(Request $request): JsonResponse
+ public function countryPatrolActivity(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse
{
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
- $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
+ $toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
- $activities = DB::select('SELECT
- "کشوری" as province_fa,
- -1 as province_id,
- COUNT(*) tedade,
- SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
- SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
- SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
- SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
- SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
- ROUND(SUM(distance)) as masafat_tey_shode
- FROM (SELECT
- province_id,
- province_fa,
- distance,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
- FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
- union
- SELECT
- province_fa,
- province_id,
- COUNT(*) tedade,
- SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
- SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
- SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
- SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
- SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
- ROUND(SUM(distance)) as masafat_tey_shode
- FROM (SELECT
- province_id,
- province_fa,
- distance,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
- FROM `road_patrols` rp where rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
- GROUP BY province_id'
- );
+ $activities = $roadPatrolReportService->countryActivity($fromDate, $toDate);
$provinces = Province::all(['id', 'name_fa']);
@@ -74,66 +32,14 @@ class RoadPatrolReportController extends Controller
]);
}
- public function cityPatrolActivity(Request $request): JsonResponse
+ public function provincePatrolActivity(Request $request, RoadPatrolReportService $roadPatrolReportService): JsonResponse
{
$request->validate(["province_id" => "required",]);
$fromDate = $request->from_date ? $request->from_date . ' 00:00:00' : now()->startOfDay()->toDateTimeString();
- $dateTo = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
+ $toDate = $request->date_to ? $request->date_to . ' 23:59:59' : now()->endOfDay()->toDateTimeString();
$provinceId = $request->province_id;
- $activities = DB::select(
- 'SELECT
- province_fa,
- province_id,
- -1 AS edare_id,
- "استانی" AS edare_name,
- COUNT(*) tedade,
- SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
- SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
- SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
- SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
- SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
- ROUND(SUM(distance)) as masafat_tey_shode
- FROM (SELECT
- province_id,
- province_fa,
- edare_id,
- edare_name,
- distance,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
- FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
- UNION
- SELECT
- province_fa,
- province_id,
- edare_id,
- edare_name,
- COUNT(*) tedade,
- SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
- SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
- SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
- SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
- SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
- ROUND(SUM(distance)) as masafat_tey_shode
- FROM (SELECT
- province_id,
- province_fa,
- edare_id,
- edare_name,
- distance,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
- (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
- (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
- FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$dateTo.'") temp
- GROUP BY edare_id
- '
- );
+ $activities = $roadPatrolReportService->provinceActivity($fromDate, $toDate, $provinceId);
$edarateShahri = EdarateShahri::query()->where('province_id', '=', $provinceId)->get(['id', 'name_fa']);
@@ -143,12 +49,21 @@ class RoadPatrolReportController extends Controller
]);
}
- public function excel(Request $request): BinaryFileResponse
+ public function countryActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse
{
+ $activities = $roadPatrolReportService->countryActivity($request->from_date, $request->to_date);
+
$name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
- return Excel::download(
- new RoadPatrolTable($request->from_date, $request->date_to), $name
- );
+ return Excel::download(new CountryActivity($activities), $name);
+ }
+
+ public function provinceActivityExcel(Request $request, RoadPatrolReportService $roadPatrolReportService): BinaryFileResponse
+ {
+ $activities = $roadPatrolReportService->provinceActivity($request->from_date, $request->to_date, $request->province_id);
+
+ $name = 'گزارش از گشت راهداری و ترابری ' . verta()->now()->format('Y-m-d H-i') . '.xlsx';
+
+ return Excel::download(new ProvinceActivity($activities), $name);
}
}
diff --git a/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php b/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php
index 0d9ecc5e..c2a7d122 100644
--- a/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php
+++ b/app/Http/Controllers/V3/Dashboard/RoadItemsProjectController.php
@@ -35,7 +35,7 @@ class RoadItemsProjectController extends Controller
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item',
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
- 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code'
+ 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code', 'rahdaran.code',
);
$allowedFilters = $columns;
@@ -142,7 +142,7 @@ class RoadItemsProjectController extends Controller
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item',
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
- 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code'
+ 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code', 'rahdaran.code',
);
$allowedFilters = $columns;
diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php
index dfac13c0..6d62ba03 100644
--- a/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php
+++ b/app/Http/Controllers/V3/Dashboard/RoadPatrolProjectController.php
@@ -33,11 +33,11 @@ class RoadPatrolProjectController extends Controller
public function supervisorIndex(Request $request): JsonResponse
{
$columns = array(
- 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'operator_id',
+ 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'operator_id', 'created_at',
'operator_name', 'officer_plaque', 'officer_phone_number', 'officer_name',
'supervisor_description', 'supervising_time', 'supervisor_name', 'status',
'status_fa', 'distance', 'province_id', 'province_fa', 'edare_id', 'edare_name',
- 'start_time', 'end_time','description', 'cmmsMachines.machine_code'
+ 'start_time', 'end_time','description', 'cmmsMachines.machine_code', 'rahdaran.code',
);
$allowedFilters = $columns;
@@ -124,9 +124,9 @@ class RoadPatrolProjectController extends Controller
public function operatorIndex(Request $request): JsonResponse
{
$columns = array(
- 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'officer_plaque',
+ 'id', 'start_lat', 'start_lon', 'end_lat', 'end_lon', 'officer_plaque', 'created_at',
'officer_phone_number', 'officer_name', 'supervisor_description', 'supervising_time',
- 'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time', 'cmmsMachines.machine_code'
+ 'supervisor_name', 'status', 'status_fa', 'distance', 'start_time', 'end_time', 'cmmsMachines.machine_code', 'rahdaran.code',
);
$allowedFilters = $columns;
diff --git a/app/Services/Reports/RoadItemReportService.php b/app/Services/Reports/RoadItemReportService.php
new file mode 100644
index 00000000..240d6bb4
--- /dev/null
+++ b/app/Services/Reports/RoadItemReportService.php
@@ -0,0 +1,93 @@
+where('item', $item)
+ ->orderBy('sub_item')
+ ->get(['sub_item', 'sub_item_str', 'sub_item_unit']);
+
+ $query = DB::table('road_items_projects')
+ ->selectRaw('province_id, province_fa');
+
+ foreach ($subItems as $subItem) {
+ $query->selectRaw("
+ COUNT(CASE WHEN sub_item = {$subItem->sub_item} THEN 1 END) as Count_{$subItem->sub_item},
+ SUM(CASE WHEN sub_item = {$subItem->sub_item} THEN sub_item_data END) as Sum_{$subItem->sub_item}
+ ");
+ }
+
+ $query->where('item', '=', $item)
+ ->where('status', '=', 1)
+ ->whereBetween('activity_date_time', [$fromDate, $toDate])
+ ->groupBy('province_id', 'province_fa')
+ ->orderBy('province_id');
+
+ $activities = $query->get();
+
+ $totalItemCount = [
+ 'province_fa' => 'کشوری'
+ ];
+
+ foreach ($subItems as $subItem) {
+ $totalItemCount["Count_{$subItem->sub_item}"] = $activities->sum("Count_{$subItem->sub_item}");
+ $totalItemCount["Sum_{$subItem->sub_item}"] = $activities->sum("Sum_{$subItem->sub_item}");
+ }
+
+ return [
+ 'data' => $activities->push((object)$totalItemCount),
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate,
+ 'details' => $subItems->keyBy('sub_item'),
+ ];
+ }
+
+ public function provinceActivityPerSubItem(int $item, string $fromDate, string $toDate, int $provinceId): array
+ {
+ $subItems = InfoItem::query()->where('item', $item)
+ ->orderBy('sub_item')
+ ->get(['sub_item', 'sub_item_str', 'sub_item_unit']);
+
+ $query = DB::table('road_items_projects')
+ ->selectRaw('province_id, province_fa, TRIM(SUBSTRING_INDEX(user_name, "استان", 1)) as city_fa, city_id');
+
+ foreach ($subItems as $subItem) {
+ $query->selectRaw("
+ COUNT(CASE WHEN sub_item = {$subItem->sub_item} THEN 1 END) as Count_{$subItem->sub_item},
+ SUM(CASE WHEN sub_item = {$subItem->sub_item} THEN sub_item_data END) as Sum_{$subItem->sub_item}
+ ");
+ }
+
+ $query->where('item', '=', $item)
+ ->where('status', '=', 1)
+ ->where('province_id', '=', $provinceId)
+ ->whereBetween('activity_date_time', [$fromDate, $toDate])
+ ->groupBy('city_id')
+ ->orderBy('province_id');
+
+ $activities = $query->get();
+
+ $totalItemCount = [
+ 'city_fa' => 'استانی'
+ ];
+
+ foreach ($subItems as $subItem) {
+ $totalItemCount["Count_{$subItem->sub_item}"] = $activities->sum("Count_{$subItem->sub_item}");
+ $totalItemCount["Sum_{$subItem->sub_item}"] = $activities->sum("Sum_{$subItem->sub_item}");
+ }
+
+ return [
+ 'data' => $activities->push((object)$totalItemCount),
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate,
+ 'details' => $subItems->keyBy('sub_item')
+ ];
+ }
+}
\ No newline at end of file
diff --git a/app/Services/Reports/RoadPatrolReportService.php b/app/Services/Reports/RoadPatrolReportService.php
new file mode 100644
index 00000000..309533b0
--- /dev/null
+++ b/app/Services/Reports/RoadPatrolReportService.php
@@ -0,0 +1,124 @@
+ $activities,
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate
+ ];
+ }
+
+ public function provinceActivity(string $fromDate, string $toDate, int $provinceId): array
+ {
+ $activities = DB::select(
+ 'SELECT
+ province_fa,
+ province_id,
+ -1 AS edare_id,
+ "استانی" AS edare_name,
+ COUNT(*) tedade,
+ SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
+ SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
+ SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
+ SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
+ SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
+ ROUND(SUM(distance)) as masafat_tey_shode
+ FROM (SELECT
+ province_id,
+ province_fa,
+ edare_id,
+ edare_name,
+ distance,
+ (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
+ (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
+ (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
+ (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
+ (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
+ FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$toDate.'") temp
+ UNION
+ SELECT
+ province_fa,
+ province_id,
+ edare_id,
+ edare_name,
+ COUNT(*) tedade,
+ SUM(tedad_mavarede_moshede_shode_adi) as tedad_mavarede_moshede_shode_adi,
+ SUM(tedad_mavarede_moshede_shode_fori) as tedad_mavarede_moshede_shode_fori,
+ SUM(tedad_mavarede_moshede_shode_ani) as tedad_mavarede_moshede_shode_ani,
+ SUM(tedad_mavarede_peygiri_shode) as tedad_mavarede_peygiri_shode,
+ SUM(tedad_faliyat_sabt_shode) as tedad_faliyat_sabt_shode,
+ ROUND(SUM(distance)) as masafat_tey_shode
+ FROM (SELECT
+ province_id,
+ province_fa,
+ edare_id,
+ edare_name,
+ distance,
+ (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 1) AS tedad_mavarede_moshede_shode_adi,
+ (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 2) AS tedad_mavarede_moshede_shode_fori,
+ (SELECT COUNT(*) FROM `observed_items` oi WHERE rp.`id`= oi.road_patrol_id AND priority = 3) AS tedad_mavarede_moshede_shode_ani,
+ (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NOT NULL) AS tedad_mavarede_peygiri_shode,
+ (SELECT COUNT(*) FROM `observed_items` oii WHERE rp.`id`= oii.road_patrol_id AND oii.road_item_id IS NOT NULL AND priority IS NULL) AS tedad_faliyat_sabt_shode
+ FROM `road_patrols` rp where rp.province_id = "'.$provinceId.'" AND rp.start_time BETWEEN "'.$fromDate.'" AND "'.$toDate.'") temp
+ GROUP BY edare_id
+ '
+ );
+
+ return [
+ 'activities' => $activities,
+ 'fromDate' => $fromDate,
+ 'toDate' => $toDate
+ ];
+ }
+}
\ No newline at end of file
diff --git a/resources/.gitignore b/resources/.gitignore
index 9db1b5b1..a50fbbe5 100644
--- a/resources/.gitignore
+++ b/resources/.gitignore
@@ -1 +1,3 @@
-views
+/views/*
+!/views/v3/
+!/views/v3/*
\ No newline at end of file
diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php
new file mode 100644
index 00000000..cc387f3d
--- /dev/null
+++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerItem.blade.php
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+ کشوری
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ |
+
+
+
+ |
+ |
+
+
+ |
+ گزارش فعالیت روزانه و جاری راهداری از تاریخ
+ {{ verta($fromDate)->format('Y/n/j') }}
+ تا
+ تاریخ
+ {{ verta($toDate)->format('Y/n/j') }}
+
+ |
+
+
+
+ | اداره کل
+ |
+ فعالیت های
+ جاری و روزانه راهداری
+ |
+ کل |
+
+
+
+ | مرمت رویه |
+ پاکسازی |
+ علائم |
+ حفاظ |
+ روشنایی |
+ خط کشی |
+ رنگ آمیزی |
+ شستشو |
+ ایمن سازی |
+ حریم |
+ پل |
+ تونل و گالری |
+ عملیات زمستانی |
+ ماشین آلات |
+ راهدارخانه |
+ موارد اضطراری |
+
+
+
+
+
+ | کل کشور |
+ {{ $countryCount['totalMarematRooyeCount'] }} |
+ {{ $countryCount['totalPaksaziCount'] }} |
+ {{ $countryCount['totalAlaemCount'] }} |
+ {{ $countryCount['totalHefazCount'] }} |
+ {{ $countryCount['totalRoshanayiCount'] }} |
+ {{ $countryCount['totalKhatkeshiCount'] }} |
+ {{ $countryCount['totalRangamiziCount'] }} |
+ {{ $countryCount['totalWashingCount'] }} |
+ {{ $countryCount['totalImenSaziCount'] }} |
+ {{ $countryCount['totalHarimCount'] }} |
+ {{ $countryCount['totalPolCount'] }} |
+ {{ $countryCount['totalToonelCount'] }} |
+ {{ $countryCount['totalAmaliatZemestaniCount'] }} |
+ {{ $countryCount['totalMashinAlatCount'] }} |
+ {{ $countryCount['totalTollhouseCount'] }} |
+ {{ $countryCount['totalEmergencyCount'] }} |
+ {{ $countryCount['totalCountryCount'] }} |
+
+
+ @foreach ($provinceCount as $activity)
+
+ | {{ $activity->province_fa }} |
+ {{ $activity->MarematRooyeCount }} |
+ {{ $activity->PaksaziCount }} |
+ {{ $activity->AlaemCount }} |
+ {{ $activity->HefazCount }} |
+ {{ $activity->RoshanayiCount }} |
+ {{ $activity->KhatkeshiCount }} |
+ {{ $activity->RangamiziCount }} |
+ {{ $activity->WashingCount }} |
+ {{ $activity->ImenSaziCount }} |
+ {{ $activity->HarimCount }} |
+ {{ $activity->PolCount }} |
+ {{ $activity->ToonelCount }} |
+ {{ $activity->AmaliatZemestaniCount }} |
+ {{ $activity->MashinAlatCount }} |
+ {{ $activity->TollhouseCount }} |
+ {{ $activity->EmergencyCount }} |
+ {{ $activity->TotalProvinceCount }} |
+
+ @endforeach
+
+
+
+
+
+
+
+
diff --git a/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php
new file mode 100644
index 00000000..62d19ec5
--- /dev/null
+++ b/resources/views/v3/Reports/RoadItems/CountryActivityPerSubItem.blade.php
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ کشوری
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}}
+ |
+
+
+
+ |
+
+
+ |
+ تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ
+ {{verta($fromDate)->format('Y/n/j')}}
+ تا
+ تاریخ
+ {{verta($toDate)->format('Y/n/j')}}
+ | >
+
+
+
+ | اداره کل |
+ فعالیت های انجام شده |
+
+
+
+ @foreach($details as $detail)
+ | {{ $detail->sub_item_str }} |
+ @endforeach
+
+
+
+ @foreach($details as $detail)
+ | تعداد |
+ مجموع ({{ $detail->sub_item_unit }}) |
+ @endforeach
+
+
+
+
+
+ @foreach ($activities as $activity)
+
+ | {{ $activity->province_fa }} |
+
+ @foreach ($details as $index => $detail)
+
+ {{ $activity->{'Count_' . ($index)} ?? '-' }}
+ |
+
+ {{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }}
+ |
+ @endforeach
+
+ @endforeach
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php
new file mode 100644
index 00000000..55a708ee
--- /dev/null
+++ b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerItem.blade.php
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+ استانی
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ |
+
+
+
+ |
+ |
+
+
+ |
+ گزارش فعالیت روزانه و جاری راهداری از تاریخ
+ {{ verta($fromDate)->format('Y/n/j') }}
+ تا
+ تاریخ
+ {{ verta($toDate)->format('Y/n/j') }}
+
+ |
+
+
+
+ | اداره کل
+ |
+ فعالیت های
+ جاری و روزانه راهداری
+ |
+ کل |
+
+
+
+ | مرمت رویه |
+ پاکسازی |
+ علائم |
+ حفاظ |
+ روشنایی |
+ خط کشی |
+ رنگ آمیزی |
+ شستشو |
+ ایمن سازی |
+ حریم |
+ پل |
+ تونل و گالری |
+ عملیات زمستانی |
+ ماشین آلات |
+ راهدارخانه |
+ موارد اضطراری |
+
+
+
+
+
+ | کل استان |
+ {{ $provinceCount['totalMarematRooyeCount'] }} |
+ {{ $provinceCount['totalPaksaziCount'] }} |
+ {{ $provinceCount['totalAlaemCount'] }} |
+ {{ $provinceCount['totalHefazCount'] }} |
+ {{ $provinceCount['totalRoshanayiCount'] }} |
+ {{ $provinceCount['totalKhatkeshiCount'] }} |
+ {{ $provinceCount['totalRangamiziCount'] }} |
+ {{ $provinceCount['totalWashingCount'] }} |
+ {{ $provinceCount['totalImenSaziCount'] }} |
+ {{ $provinceCount['totalHarimCount'] }} |
+ {{ $provinceCount['totalPolCount'] }} |
+ {{ $provinceCount['totalToonelCount'] }} |
+ {{ $provinceCount['totalAmaliatZemestaniCount'] }} |
+ {{ $provinceCount['totalMashinAlatCount'] }} |
+ {{ $provinceCount['totalTollhouseCount'] }} |
+ {{ $provinceCount['totalEmergencyCount'] }} |
+ {{ $provinceCount['TotalProvinceCount'] }} |
+
+
+ @foreach ($cityCount as $activity)
+
+ | {{ $activity->edarat_name }} |
+ {{ $activity->MarematRooyeCount }} |
+ {{ $activity->PaksaziCount }} |
+ {{ $activity->AlaemCount }} |
+ {{ $activity->HefazCount }} |
+ {{ $activity->RoshanayiCount }} |
+ {{ $activity->KhatkeshiCount }} |
+ {{ $activity->RangamiziCount }} |
+ {{ $activity->WashingCount }} |
+ {{ $activity->ImenSaziCount }} |
+ {{ $activity->HarimCount }} |
+ {{ $activity->PolCount }} |
+ {{ $activity->ToonelCount }} |
+ {{ $activity->AmaliatZemestaniCount }} |
+ {{ $activity->MashinAlatCount }} |
+ {{ $activity->TollhouseCount }} |
+ {{ $activity->EmergencyCount }} |
+ {{ $activity->TotalCityCount }} |
+
+ @endforeach
+
+
+
+
+
+
+
+
diff --git a/resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php
new file mode 100644
index 00000000..9ff1b3cf
--- /dev/null
+++ b/resources/views/v3/Reports/RoadItems/ProvinceActivityPerSubItem.blade.php
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ استانی
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}}
+ |
+
+
+
+ |
+
+
+ |
+ تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ
+ {{verta($fromDate)->format('Y/n/j')}}
+ تا
+ تاریخ
+ {{verta($toDate)->format('Y/n/j')}}
+ | >
+
+
+
+ | اداره |
+ فعالیت های انجام شده |
+
+
+
+ @foreach($details as $detail)
+ | {{ $detail->sub_item_str }} |
+ @endforeach
+
+
+
+ @foreach($details as $detail)
+ | تعداد |
+ مجموع ({{ $detail->sub_item_unit }}) |
+ @endforeach
+
+
+
+
+
+ @foreach ($activities as $activity)
+
+ | {{ $activity->city_fa }} |
+
+ @foreach ($details as $index => $detail)
+
+ {{ $activity->{'Count_' . ($index)} ?? '-' }}
+ |
+
+ {{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }}
+ |
+ @endforeach
+
+ @endforeach
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php
new file mode 100644
index 00000000..0e94bde7
--- /dev/null
+++ b/resources/views/v3/Reports/RoadPatrols/CountryActivity.blade.php
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+ کشوری
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ |
+
+
+
+ |
+ |
+
+
+ |
+ گزارش گشت راهداری و ترابری از تاریخ
+ {{ verta($fromDate)->format('Y/n/j') }}
+ تا
+ تاریخ
+ {{ verta($toDate)->format('Y/n/j') }}
+
+ |
+
+
+
+
+
+ |
+ تعداد کل
+ |
+
+
+ اقدامات لازم جهت رسیدگی آتی
+ |
+
+ اقدامات رسیدگی شده
+ |
+
+ مجموع مسافت پیمایش شده(کیلومتر)
+ |
+
+ تعداد فعالیت صورت گرفته حین گشت زنی
+ |
+
+
+ |
+ عادی
+ |
+
+ فوری
+ |
+
+ آنی
+ |
+
+
+
+
+
+ @foreach ($activities as $activity)
+
+ | {{ $activity->province_fa }} |
+ {{ $activity->tedade }} |
+ {{ $activity->tedad_mavarede_moshede_shode_adi }} |
+ {{ $activity->tedad_mavarede_moshede_shode_fori }} |
+ {{ $activity->tedad_mavarede_moshede_shode_ani }} |
+ {{ $activity->tedad_mavarede_peygiri_shode }} |
+ {{ $activity->masafat_tey_shode }} |
+ {{ $activity->tedad_faliyat_sabt_shode }} |
+
+ @endforeach
+
+
+
+
+
+
+
+
diff --git a/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php b/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php
new file mode 100644
index 00000000..602352e5
--- /dev/null
+++ b/resources/views/v3/Reports/RoadPatrols/ProvinceActivity.blade.php
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+ استانی
+
+
+
+
+
+
+
+
+ |
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ |
+
+
+
+ |
+ |
+
+
+ |
+ گزارش گشت راهداری و ترابری از تاریخ
+ {{ verta($fromDate)->format('Y/n/j') }}
+ تا
+ تاریخ
+ {{ verta($toDate)->format('Y/n/j') }}
+
+ |
+
+
+
+
+
+ |
+ تعداد کل
+ |
+
+
+ اقدامات لازم جهت رسیدگی آتی
+ |
+
+ اقدامات رسیدگی شده
+ |
+
+ مجموع مسافت پیمایش شده(کیلومتر)
+ |
+
+ تعداد فعالیت صورت گرفته حین گشت زنی
+ |
+
+
+ |
+ عادی
+ |
+
+ فوری
+ |
+
+ آنی
+ |
+
+
+
+
+
+ @foreach ($activities as $activity)
+
+ | {{ $activity->edare_name }} |
+ {{ $activity->tedade }} |
+ {{ $activity->tedad_mavarede_moshede_shode_adi }} |
+ {{ $activity->tedad_mavarede_moshede_shode_fori }} |
+ {{ $activity->tedad_mavarede_moshede_shode_ani }} |
+ {{ $activity->tedad_mavarede_peygiri_shode }} |
+ {{ $activity->masafat_tey_shode }} |
+ {{ $activity->tedad_faliyat_sabt_shode }} |
+
+ @endforeach
+
+
+
+
diff --git a/routes/v3.php b/routes/v3.php
index 78e8be34..ae606cc8 100644
--- a/routes/v3.php
+++ b/routes/v3.php
@@ -200,13 +200,18 @@ Route::prefix('road_item_reports')
Route::get('/province_activity_per_item', 'provinceActivityPerItem')->name('provinceActivityPerItem');
Route::get('/city_activity_per_item', 'cityActivityPerItem')->name('cityActivityPerItem');
Route::get('/map', 'map')->name('map');
+ Route::get('/country_activity_excel_per_item', 'countryActivityExcelPerItem')->name('countryActivityExcelPerItem');
+ Route::get('/province_activity_excel_per_item', 'provinceActivityExcelPerItem')->name('provinceActivityExcelPerItem');
+ Route::get('/country_activity_excel_per_sub_item', 'countryActivityExcelPerSubItem')->name('countryActivityExcelPerSubItem');
+ Route::get('/province_activity_excel_per_sub_item', 'provinceActivityExcelPerSubItem')->name('provinceActivityExcelPerSubItem');
});
Route::prefix('road_patrol_reports')
->name('roadPatrolReports.')
->controller(RoadPatrolReportController::class)
->group(function () {
+ Route::get('/country_activity', 'countryPatrolActivity')->name('countryPatrolActivity');
Route::get('/province_activity', 'provincePatrolActivity')->name('provincePatrolActivity');
- Route::get('/city_activity', 'cityPatrolActivity')->name('cityPatrolActivity');
- Route::get('/excel', 'excel')->name('excel');
+ Route::get('/country_activity_excel', 'countryActivityExcel')->name('countryActivityExcel');
+ Route::get('/province_activity_excel', 'provinceActivityExcel')->name('provinceActivityExcel');
});