Merge branch 'feature/Exports' into 'develop'

Feature/exports

See merge request witelgroup/rms_v2!63
This commit is contained in:
2025-01-26 11:07:56 +00:00
23 changed files with 1441 additions and 149 deletions

View File

@@ -0,0 +1,129 @@
<?php
namespace App\Exports\V3\RoadItemsProjects;
use App\Models\Province;
use App\Models\RoadItemsProject;
use Carbon\Carbon;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class CountryActivityPerItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private ?string $fromDate, private ?string $toDate){}
public function view(): View
{
$fromDate = $this->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];
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace App\Exports\V3\RoadItemsProjects;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class CountryActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private array $activities){}
public function view(): View
{
$activities = $this->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];
}
}

View File

@@ -0,0 +1,137 @@
<?php
namespace App\Exports\V3\RoadItemsProjects;
use App\Models\Province;
use App\Models\RoadItemsProject;
use Carbon\Carbon;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class ProvinceActivityPerItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private ?string $fromDate,
private ?string $toDate,
private string $provinceId,
){}
public function view(): View
{
$fromDate = $this->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];
}
}

View File

@@ -0,0 +1,75 @@
<?php
namespace App\Exports\V3\RoadItemsProjects;
use App\Models\Province;
use App\Models\RoadItemsProject;
use Carbon\Carbon;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class ProvinceActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private array $activities){}
public function view(): View
{
$activities = $this->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];
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace App\Exports\V3\RoadPatrols;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class CountryActivity implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private array $activities){}
public function view(): View
{
$activities = $this->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];
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace App\Exports\V3\RoadPatrols;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithDrawings;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
class ProvinceActivity implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private array $activities){}
public function view(): View
{
$activities = $this->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];
}
}

View File

@@ -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']);
}

View File

@@ -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()) {

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -0,0 +1,93 @@
<?php
namespace App\Services\Reports;
use App\Models\InfoItem;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
class RoadItemReportService
{
public function countryActivityPerSubItem(int $item, string $fromDate, string $toDate): 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');
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')
];
}
}

View File

@@ -0,0 +1,124 @@
<?php
namespace App\Services\Reports;
use Illuminate\Support\Facades\DB;
class RoadPatrolReportService
{
public function countryActivity(string $fromDate, string $toDate): array
{
$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 "'.$toDate.'") 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 "'.$toDate.'") temp
GROUP BY province_id'
);
return [
'activities' => $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
];
}
}

View File

@@ -1 +1,3 @@
views
/views/*
!/views/v3/
!/views/v3/*

View File

@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>کشوری</title>
</head>
<body dir="rtl" style="text-align: center;">
<table>
<thead>
<tr>
<th colspan="18"
style="background-color: #DAEEF3;text-align: center;border-right: 1px solid black;font-weight:bolder;">
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
</th>
</tr>
<tr>
<th colspan="18"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;">
</th>
</tr>
<tr>
<th colspan="18"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13;">
گزارش فعالیت روزانه و جاری راهداری از تاریخ
{{ verta($fromDate)->format('Y/n/j') }}
تا
تاریخ
{{ verta($toDate)->format('Y/n/j') }}
</th>
</tr>
<tr>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">اداره کل
</th>
<th colspan="16" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">فعالیت های
جاری و روزانه راهداری
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">کل</th>
</tr>
<tr>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">مرمت رویه</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">پاکسازی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">علائم</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">حفاظ</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">روشنایی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">خط کشی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">رنگ آمیزی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">شستشو</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">ایمن سازی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">حریم</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">پل</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">تونل و گالری</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">عملیات زمستانی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">ماشین آلات</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">راهدارخانه</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">موارد اضطراری</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border:1px solid black;text-align: center;">کل کشور</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalMarematRooyeCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalPaksaziCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalAlaemCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalHefazCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalRoshanayiCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalKhatkeshiCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalRangamiziCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalWashingCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalImenSaziCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalHarimCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalPolCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalToonelCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalAmaliatZemestaniCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalMashinAlatCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalTollhouseCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalEmergencyCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $countryCount['totalCountryCount'] }}</td>
</tr>
@foreach ($provinceCount as $activity)
<tr>
<td style="border:1px solid black;text-align: center;">{{ $activity->province_fa }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->MarematRooyeCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->PaksaziCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->AlaemCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->HefazCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->RoshanayiCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->KhatkeshiCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->RangamiziCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->WashingCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->ImenSaziCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->HarimCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->PolCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->ToonelCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->AmaliatZemestaniCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->MashinAlatCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->TollhouseCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->EmergencyCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->TotalProvinceCount }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>کشوری</title>
</head>
<body dir="rtl" style="text-align: center;">
<table>
<thead>
<tr>
<th colspan="25" style="background-color: #DAEEF3;text-align: center;border-right: 1px solid black;font-weight:bolder;">
تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}}
</th>
</tr>
<tr>
<th colspan="25" style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;"></th>
</tr>
<tr>
<th colspan="26" style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13;">
تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ
{{verta($fromDate)->format('Y/n/j')}}
تا
تاریخ
{{verta($toDate)->format('Y/n/j')}}
</th>>
</tr>
<tr>
<th rowspan="3" style="border: 1px solid black;text-align: center;background-color: #EBF1DE;">اداره کل</th>
<th colspan="24" style="border: 1px solid black;text-align: center;background-color: #EBF1DE;">فعالیت های انجام شده</th>
</tr>
<tr>
@foreach($details as $detail)
<th colspan="2" style="border:1px solid black;text-align:center;background-color:#C4D79B">{{ $detail->sub_item_str }}</th>
@endforeach
</tr>
<tr>
@foreach($details as $detail)
<th style="background-color: #FDE9D9;border: 1px solid black;text-align: center;">تعداد</th>
<th style="background-color: #FDE9D9;border: 1px solid black;text-align: center;">مجموع ({{ $detail->sub_item_unit }})</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach ($activities as $activity)
<tr>
<td style="border: 1px solid black;text-align: center;">{{ $activity->province_fa }}</td>
@foreach ($details as $index => $detail)
<td style="border: 1px solid black;text-align: center;">
{{ $activity->{'Count_' . ($index)} ?? '-' }}
</td>
<td style="border: 1px solid black;text-align: center;">
{{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }}
</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>استانی</title>
</head>
<body dir="rtl" style="text-align: center;">
<table>
<thead>
<tr>
<th colspan="18"
style="background-color: #DAEEF3;text-align: center;border-right: 1px solid black;font-weight:bolder;">
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
</th>
</tr>
<tr>
<th colspan="18"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;">
</th>
</tr>
<tr>
<th colspan="18"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13;">
گزارش فعالیت روزانه و جاری راهداری از تاریخ
{{ verta($fromDate)->format('Y/n/j') }}
تا
تاریخ
{{ verta($toDate)->format('Y/n/j') }}
</th>
</tr>
<tr>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">اداره کل
</th>
<th colspan="16" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">فعالیت های
جاری و روزانه راهداری
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">کل</th>
</tr>
<tr>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">مرمت رویه</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">پاکسازی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">علائم</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">حفاظ</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">روشنایی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">خط کشی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">رنگ آمیزی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">شستشو</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">ایمن سازی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">حریم</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">پل</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">تونل و گالری</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">عملیات زمستانی</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">ماشین آلات</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">راهدارخانه</th>
<th style="border:1px solid black;text-align:center;background-color: #C4D79B;">موارد اضطراری</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border:1px solid black;text-align: center;">کل استان</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalMarematRooyeCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalPaksaziCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalAlaemCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalHefazCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalRoshanayiCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalKhatkeshiCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalRangamiziCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalWashingCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalImenSaziCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalHarimCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalPolCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalToonelCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalAmaliatZemestaniCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalMashinAlatCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalTollhouseCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['totalEmergencyCount'] }}</td>
<td style="border:1px solid black;text-align: center;">{{ $provinceCount['TotalProvinceCount'] }}</td>
</tr>
@foreach ($cityCount as $activity)
<tr>
<td style="border:1px solid black;text-align: center;">{{ $activity->edarat_name }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->MarematRooyeCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->PaksaziCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->AlaemCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->HefazCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->RoshanayiCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->KhatkeshiCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->RangamiziCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->WashingCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->ImenSaziCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->HarimCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->PolCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->ToonelCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->AmaliatZemestaniCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->MashinAlatCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->TollhouseCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->EmergencyCount }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->TotalCityCount }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>استانی</title>
</head>
<body dir="rtl" style="text-align: center;">
<table>
<thead>
<tr>
<th colspan="25" style="background-color: #DAEEF3;text-align: center;border-right: 1px solid black;font-weight:bolder;">
تاریخ دریافت گزارش: {{verta()->now()->format('Y/m/d H:i')}}
</th>
</tr>
<tr>
<th colspan="25" style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;"></th>
</tr>
<tr>
<th colspan="26" style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13;">
تعداد و مجموع فعالیت های روزانه و جاری راهداری ثبت شده از تاریخ
{{verta($fromDate)->format('Y/n/j')}}
تا
تاریخ
{{verta($toDate)->format('Y/n/j')}}
</th>>
</tr>
<tr>
<th rowspan="3" style="border: 1px solid black;text-align: center;background-color: #EBF1DE;">اداره</th>
<th colspan="24" style="border: 1px solid black;text-align: center;background-color: #EBF1DE;">فعالیت های انجام شده</th>
</tr>
<tr>
@foreach($details as $detail)
<th colspan="2" style="border:1px solid black;text-align:center;background-color:#C4D79B">{{ $detail->sub_item_str }}</th>
@endforeach
</tr>
<tr>
@foreach($details as $detail)
<th style="background-color: #FDE9D9;border: 1px solid black;text-align: center;">تعداد</th>
<th style="background-color: #FDE9D9;border: 1px solid black;text-align: center;">مجموع ({{ $detail->sub_item_unit }})</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach ($activities as $activity)
<tr>
<td style="border: 1px solid black;text-align: center;">{{ $activity->city_fa }}</td>
@foreach ($details as $index => $detail)
<td style="border: 1px solid black;text-align: center;">
{{ $activity->{'Count_' . ($index)} ?? '-' }}
</td>
<td style="border: 1px solid black;text-align: center;">
{{ isset($activity->{'Sum_' . ($index)}) ? round($activity->{'Sum_' . ($index)}, 1) : '-' }}
</td>
@endforeach
</tr>
@endforeach
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,102 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>کشوری</title>
</head>
<body dir="rtl" style="text-align: center;">
<table>
<thead>
<tr>
<th colspan="8"
style="background-color: #DAEEF3;text-align: center;border-right: 1px solid black;font-weight:bolder;">
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
</th>
</tr>
<tr>
<th colspan="8"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;">
</th>
</tr>
<tr>
<th colspan="8"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13;">
گزارش گشت راهداری و ترابری از تاریخ
{{ verta($fromDate)->format('Y/n/j') }}
تا
تاریخ
{{ verta($toDate)->format('Y/n/j') }}
</th>
</tr>
<tr class="headercolortable">
<th rowspan="3" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
اداره کل
</th>
<th colspan="7" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
گشت راهداری
</th>
</tr>
<tr>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
تعداد کل
</th>
<th colspan="3" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
اقدامات لازم جهت رسیدگی آتی
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
اقدامات رسیدگی شده
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
مجموع مسافت پیمایش شده(کیلومتر)
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
تعداد فعالیت صورت گرفته حین گشت زنی
</th>
</tr>
<tr>
<th style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
عادی
</th>
<th style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
فوری
</th>
<th style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
آنی
</th>
</tr>
</thead>
<tbody>
@foreach ($activities as $activity)
<tr>
<td style="border:1px solid black;text-align: center;">{{ $activity->province_fa }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedade }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_moshede_shode_adi }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_moshede_shode_fori }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_moshede_shode_ani }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_peygiri_shode }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->masafat_tey_shode }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_faliyat_sabt_shode }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>استانی</title>
</head>
<body dir="rtl" style="text-align: center;">
<table>
<thead>
<tr>
<th colspan="8"
style="background-color: #DAEEF3;text-align: center;border-right: 1px solid black;font-weight:bolder;">
تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
</th>
</tr>
<tr>
<th colspan="8"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;">
</th>
</tr>
<tr>
<th colspan="8"
style="background-color: #DAEEF3;text-align: center;border-right:1px solid black;font-weight:bolder;font-size: 13;">
گزارش گشت راهداری و ترابری از تاریخ
{{ verta($fromDate)->format('Y/n/j') }}
تا
تاریخ
{{ verta($toDate)->format('Y/n/j') }}
</th>
</tr>
<tr class="headercolortable">
<th rowspan="3" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
اداره کل
</th>
<th colspan="7" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
گشت راهداری
</th>
</tr>
<tr>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
تعداد کل
</th>
<th colspan="3" style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
اقدامات لازم جهت رسیدگی آتی
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
اقدامات رسیدگی شده
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
مجموع مسافت پیمایش شده(کیلومتر)
</th>
<th rowspan="2" style="border:1px solid black;text-align:center;background-color: #C4D79B;">
تعداد فعالیت صورت گرفته حین گشت زنی
</th>
</tr>
<tr>
<th style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
عادی
</th>
<th style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
فوری
</th>
<th style="border:1px solid black;text-align:center;background-color: #EBF1DE;">
آنی
</th>
</tr>
</thead>
<tbody>
@foreach ($activities as $activity)
<tr>
<td style="border:1px solid black;text-align: center;">{{ $activity->edare_name }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedade }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_moshede_shode_adi }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_moshede_shode_fori }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_moshede_shode_ani }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_mavarede_peygiri_shode }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->masafat_tey_shode }}</td>
<td style="border:1px solid black;text-align: center;">{{ $activity->tedad_faliyat_sabt_shode }}</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>

View File

@@ -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');
});