MilestoneExport.php
1 <?php 2 3 namespace App\Exports; 4 5 use App\Enums\StatusEnum; 6 use App\Enums\ValidationStatusEnum; 7 use App\Models\Dossier; 8 use Illuminate\Database\Eloquent\Collection; 9 use Maatwebsite\Excel\Concerns\ShouldAutoSize; 10 use Illuminate\Contracts\View\View; 11 use Maatwebsite\Excel\Concerns\FromView; 12 13 class MilestoneExport implements FromView, ShouldAutoSize 14 { 15 16 public function __construct(public Dossier $dossier, public Collection $milestones) 17 { 18 $milestones->map(function ($milestone) { 19 $milestone->bgColor = $this->getBgColor($milestone); 20 }); 21 } 22 23 private function getBgColor($milestone): string 24 { 25 $isFinished = $milestone->task_status_id === StatusEnum::finished()->value; 26 if (!$isFinished) { 27 return ''; 28 } 29 30 $validationStatusId = $milestone->milestoneValidation->validation_status_id ?? null; 31 return match ($validationStatusId) { 32 ValidationStatusEnum::no_pass()->value => "background-color:#ffc7ce;", 33 default => "background-color:#c6efce;", 34 }; 35 } 36 37 public function headings(): array 38 { 39 return [ 40 __('tasks.task.panel.form.title'), 41 __('tasks.task.panel.form.end_date'), 42 __('tasks.task.panel.form.status'), 43 ]; 44 } 45 46 public function view(): View 47 { 48 return view('exports.milestones', [ 49 'headings' => $this->headings(), 50 'dossierCode' => $this->dossier->code, 51 'milestones' => $this->milestones 52 ]); 53 } 54 }