create report files

This commit is contained in:
2025-01-20 09:13:22 +03:30
parent f4fa6421d3
commit fae721a3f1
6 changed files with 472 additions and 6 deletions

View File

@@ -0,0 +1,108 @@
<?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';
$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 != -1 THEN 1 END) AS TotalCount
FROM (
SELECT
province_fa,
province_id,
item,
status
FROM road_items_projects
WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59'
) AS merged_table
WHERE status = 1
GROUP BY province_id, province_fa;";
$countryActivities = DB::select($query);
return view('', [
'activities' => $countryActivities,
'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,122 @@
<?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 CountryActivityPerSubItemReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings
{
public function __construct(private ?string $fromDate, private ?string $toDate){}
public function view(): View
{
$fromDate = $this->fromDate ?? '2021-03-21';
$toDate = $this->toDate ?? Carbon::now();
$query = "SELECT
COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount,
SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum,
COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount,
SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum,
COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount,
SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum,
COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount,
SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum,
COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount,
SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum,
COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount,
SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum,
COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount,
SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum,
COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount,
SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum,
COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount,
SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum,
COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount,
SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum,
COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount,
SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum,
COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount,
SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum,
province_id,
province_fa
FROM road_items_projects
WHERE item = 1 and status = 1
AND activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59'
GROUP BY province_id, province_fa
ORDER BY province_id ASC;";
$countryActivities = DB::select($query);
return view('', [
'activities' => $countryActivities,
'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,116 @@
<?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';
$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 != -1 THEN 1 END) AS TotalCount
FROM (
SELECT
province_fa,
province_id,
edarat_name,
edarat_id,
item,
status
FROM road_items_projects
WHERE activity_date_time BETWEEN '{$fromDate} 00:00:00' and '{$toDate} 23:59:59'
) AS merged_table
WHERE status = 1
AND province_id = {$this->provinceId}
GROUP BY edarat_id, edarat_name, order by province_id ASC;";
$provinceActivities = DB::select($query);
return view('', [
'activities' => $provinceActivities,
'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,120 @@
<?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 ProvinceActivityPerSubItemReport 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';
$toDate = $this->toDate ?? Carbon::now();
$query = "SELECT
COUNT(CASE WHEN sub_item = 1 THEN 1 END) as LabeAsphaltCount,
SUM(CASE WHEN sub_item = 1 THEN sub_item_data END) as LabeAsphaltSum,
COUNT(CASE WHEN sub_item = 2 THEN 1 END) as ShaneSaziCount,
SUM(CASE WHEN sub_item = 2 THEN sub_item_data END) as ShaneSaziSum,
COUNT(CASE WHEN sub_item = 3 THEN 1 END) as GodOftadegiCount,
SUM(CASE WHEN sub_item = 3 THEN sub_item_data END) as GodOftadegiSum,
COUNT(CASE WHEN sub_item = 4 THEN 1 END) as LakegiriCount,
SUM(CASE WHEN sub_item = 4 THEN sub_item_data END) as LakegiriSum,
COUNT(CASE WHEN sub_item = 5 THEN 1 END) as MarematCount,
SUM(CASE WHEN sub_item = 5 THEN sub_item_data END) as MarematSum,
COUNT(CASE WHEN sub_item = 6 THEN 1 END) as BastarHarimCount,
SUM(CASE WHEN sub_item = 6 THEN sub_item_data END) as BastarHarimSum,
COUNT(CASE WHEN sub_item = 8 THEN 1 END) as DarzgiriCount,
SUM(CASE WHEN sub_item = 8 THEN sub_item_data END) as DarzgiriSum,
COUNT(CASE WHEN sub_item = 9 THEN 1 END) as MozresCount,
SUM(CASE WHEN sub_item = 9 THEN sub_item_data END) as MozresSum,
COUNT(CASE WHEN sub_item = 10 THEN 1 END) as TarashRooyeCount,
SUM(CASE WHEN sub_item = 10 THEN sub_item_data END) as TarashRooyeSum,
COUNT(CASE WHEN sub_item = 11 THEN 1 END) as TighzaniCount,
SUM(CASE WHEN sub_item = 11 THEN sub_item_data END) as TighzaniSum,
COUNT(CASE WHEN sub_item = 12 THEN 1 END) as ShenriziCount,
SUM(CASE WHEN sub_item = 12 THEN sub_item_data END) as ShenriziSum,
COUNT(CASE WHEN sub_item = 13 THEN 1 END) as KhakbardariCount,
SUM(CASE WHEN sub_item = 13 THEN sub_item_data END) as KhakbardariSum,
province_id, province_fa, city_id, user_name as city_fa
FROM road_items_projects
WHERE item =1 AND status = 1
AND province_id = {$this->provinceId}
AND activity_date_time BETWEEN '{$fromDate}' AND '{$toDate}' GROUP BY city_id ORDER BY province_id ASC;";
$provinceActivities = DB::select($query);
return view('', [
'activities' => $provinceActivities,
'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

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