groupViewExport.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Exports;
  3. use App\Models\Project;
  4. use App\Models\Task;
  5. use App\Services\Project\ProjectTaskGroupViewService;
  6. use Maatwebsite\Excel\Concerns\FromCollection;
  7. use Maatwebsite\Excel\Concerns\WithHeadings;
  8. class groupViewExport implements FromCollection, WithHeadings
  9. {
  10. private static $index = 1;
  11. protected $project;
  12. protected $group;
  13. protected $request;
  14. public function __construct($project,$group,$request)
  15. {
  16. $this->project = $project;
  17. $this->group=$group;
  18. $this->request=$request;
  19. }
  20. public function collection()
  21. {
  22. $tasksCollection = collect([]);
  23. $projectTaskGroupViews=(new ProjectTaskGroupViewService())->groupView( $this->project, $this->group, $this->request->all());
  24. $projectTaskGroupItems= $projectTaskGroupViews['items'];
  25. foreach ($projectTaskGroupItems as $item){
  26. $groupLabel=$item['group_label'];
  27. $count='allCount:'.$item['count']['all_count'].' '.' waitCount:'.$item['count']['wait_count'].' doingCount:'.$item['count']['doing_count'];
  28. $tasks=$item['tasks'];
  29. foreach ($tasks as $task){
  30. $taskModel=new Task();
  31. $taskModel->id=$task->id;
  32. $taskModel->name=$task->name;
  33. $taskModel->task_type=$task->task_type;
  34. $taskModel->status=$task->status;
  35. $taskModel->assign=$task->assign;
  36. $taskModel->end=$task->end;
  37. $taskModel->finished_by=$task->finished_by;
  38. $tasksCollection->push($this->formatRow($groupLabel,$count,$taskModel));
  39. }
  40. }
  41. // TODO: Implement collection() method.
  42. return $tasksCollection;
  43. }
  44. protected function formatRow($groupLabel,$count,Task $task)
  45. {
  46. $displayId = self::$index++;
  47. return[
  48. $displayId,
  49. $count,
  50. $groupLabel['name']??'',
  51. $task->id,
  52. $task->name,
  53. $task->task_type,
  54. $task->status,
  55. $task->assignTo?->name,
  56. $task->end,
  57. $task->finishedBy?->name,
  58. ];
  59. }
  60. public function headings(): array
  61. {
  62. return [
  63. 'ID',
  64. 'GroupLabelCount',
  65. 'GroupLabelName',
  66. 'TaskId',
  67. 'TaskName',
  68. 'TaskType',
  69. 'TaskStatus',
  70. 'TaskAssign',
  71. 'TaskEnd',
  72. 'TaskFinishBy',
  73. ];
  74. }
  75. }