RequirementExport.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. private static $index = 1;
  12. public function query()
  13. {
  14. return Requirement::with(['createdBy', 'plan', 'group', 'asset', 'projects'])
  15. ->orderBy("created_at")
  16. ->filter(request()->all());
  17. }
  18. /**
  19. * @param Requirement $requirement
  20. * @return array
  21. */
  22. public function map($requirement): array
  23. {
  24. $displayId = self::$index++;
  25. return [
  26. $displayId,
  27. //$requirement->id,
  28. $requirement->title,
  29. $requirement->group?->name,
  30. $requirement->status,
  31. $requirement->asset?->name,
  32. $requirement->plan?->name,
  33. $requirement->projects?->pluck("name")->join(","),
  34. $requirement->priority,
  35. $requirement->approval_status,
  36. $requirement->note,
  37. $requirement->description,
  38. $requirement->createdBy?->name,
  39. $requirement->created_at,
  40. ];
  41. }
  42. public function headings(): array
  43. {
  44. return [
  45. 'ID',
  46. 'Title',
  47. 'Requirement Group',
  48. 'Status',
  49. 'Plan',
  50. 'Asset',
  51. 'Projects',
  52. 'Priority',
  53. 'Approval Status',
  54. 'Note',
  55. 'Description',
  56. 'Created By',
  57. 'Created Date',
  58. ];
  59. }
  60. }