RequirementExport.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Exports;
  3. use App\Models\Requirement;
  4. use Maatwebsite\Excel\Concerns\Exportable;
  5. use Maatwebsite\Excel\Concerns\FromQuery;
  6. use Maatwebsite\Excel\Concerns\WithHeadings;
  7. use Maatwebsite\Excel\Concerns\WithMapping;
  8. class RequirementExport implements FromQuery, WithMapping, WithHeadings
  9. {
  10. use Exportable;
  11. public function query()
  12. {
  13. return Requirement::with(['createdBy', 'plan', 'group', 'asset', 'projects'])
  14. ->orderBy("created_at")
  15. ->filter(request()->all());
  16. }
  17. /**
  18. * @param Requirement $requirement
  19. * @return array
  20. */
  21. public function map($requirement): array
  22. {
  23. return [
  24. $requirement->id,
  25. $requirement->title,
  26. $requirement->group?->name,
  27. $requirement->status,
  28. $requirement->asset?->name,
  29. $requirement->plan?->name,
  30. $requirement->projects?->pluck("name")->join(","),
  31. $requirement->priority,
  32. $requirement->approval_status,
  33. $requirement->note,
  34. $requirement->description,
  35. $requirement->createdBy?->name,
  36. $requirement->created_at,
  37. ];
  38. }
  39. public function headings(): array
  40. {
  41. return [
  42. 'ID',
  43. 'Title',
  44. 'Requirement Group',
  45. 'Status',
  46. 'Plan',
  47. 'Asset',
  48. 'Projects',
  49. 'Priority',
  50. 'Approval Status',
  51. 'Note',
  52. 'Description',
  53. 'Created By',
  54. 'Created Date',
  55. ];
  56. }
  57. }