feat: Add Excel export functionality for reports (projects, phases, inspections) using maatwebsite/excel
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports;
|
||||
|
||||
use App\Models\Inspection;
|
||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||
|
||||
class InspectionsExport implements FromCollection, WithHeadings
|
||||
{
|
||||
public function collection()
|
||||
{
|
||||
return Inspection::select([
|
||||
'id',
|
||||
'project_id',
|
||||
'feature_id',
|
||||
'template_id',
|
||||
'status',
|
||||
'notes',
|
||||
'created_at',
|
||||
'updated_at'
|
||||
])->get();
|
||||
}
|
||||
|
||||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
'ID',
|
||||
'ID Proyecto',
|
||||
'ID Característica',
|
||||
'ID Plantilla',
|
||||
'Estado',
|
||||
'Notas',
|
||||
'Creado el',
|
||||
'Actualizado el'
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports;
|
||||
|
||||
use App\Models\Phase;
|
||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||
|
||||
class PhasesExport implements FromCollection, WithHeadings
|
||||
{
|
||||
public function collection()
|
||||
{
|
||||
return Phase::select([
|
||||
'id',
|
||||
'project_id',
|
||||
'name',
|
||||
'progress_percent',
|
||||
'start_date',
|
||||
'end_date',
|
||||
'created_at',
|
||||
'updated_at'
|
||||
])->get();
|
||||
}
|
||||
|
||||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
'ID',
|
||||
'ID Proyecto',
|
||||
'Nombre',
|
||||
'Progreso (%)',
|
||||
'Fecha de inicio',
|
||||
'Fecha de fin',
|
||||
'Creado el',
|
||||
'Actualizado el'
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports;
|
||||
|
||||
use App\Models\Project;
|
||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||
|
||||
class ProjectsExport implements FromCollection, WithHeadings
|
||||
{
|
||||
public function collection()
|
||||
{
|
||||
return Project::select([
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
'start_date',
|
||||
'end_date',
|
||||
'status',
|
||||
'created_at',
|
||||
'updated_at'
|
||||
])->get();
|
||||
}
|
||||
|
||||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
'ID',
|
||||
'Nombre',
|
||||
'Descripción',
|
||||
'Fecha de inicio',
|
||||
'Fecha de fin',
|
||||
'Estado',
|
||||
'Creado el',
|
||||
'Actualizado el'
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Reports;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Project;
|
||||
use App\Models\Phase;
|
||||
use App\Models\Inspection;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use App\Exports\ProjectsExport;
|
||||
use App\Exports\PhasesExport;
|
||||
use App\Exports\InspectionsExport;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ExportController extends Controller
|
||||
{
|
||||
public function exportProjects(Request $request)
|
||||
{
|
||||
return Excel::download(new ProjectsExport, 'projects.xlsx');
|
||||
}
|
||||
|
||||
public function exportPhases(Request $request)
|
||||
{
|
||||
return Excel::download(new PhasesExport, 'phases.xlsx');
|
||||
}
|
||||
|
||||
public function exportInspections(Request $request)
|
||||
{
|
||||
return Excel::download(new InspectionsExport, 'inspections.xlsx');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user