File manager - Edit - /var/www/html/portalHomolog/app/Exports/CronogramasAtividadesExport.php
Back
<?php namespace App\Exports; use App\Enums\Accounts\Cronogramas\CronogramaActivityStatus; use App\Http\Resources\Accounts\Cronogramas\CronogramasResource; use App\Models\Accounts\Cronogramas\Project; use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\FromArray; use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithTitle; /** * Exportação Excel das atividades de um projeto de cronograma. */ class CronogramasAtividadesExport implements FromArray, WithHeadings, WithTitle { /** * @param Collection<int, \App\Models\Accounts\Cronogramas\Activity> $activities */ public function __construct( private readonly Project $project, private readonly Collection $activities, ) {} /** * @return list<list<string|float|null>> */ public function array(): array { $byId = $this->activities->keyBy('id'); $rows = []; $resource = app(CronogramasResource::class); foreach ($this->activities as $a) { $predecessors = $a->predecessors ->map(fn ($d) => $byId->get($d->predecessor_id)?->code ?? '') ->filter() ->implode(', '); $responsibleLabel = $resource->responsibleLabel($a); $rows[] = [ $a->code, $a->title, $predecessors, $responsibleLabel !== CronogramasResource::EMPTY_LABEL ? $responsibleLabel : '', CronogramaActivityStatus::tryFrom($a->status)?->label() ?? $a->status, (float) $a->completion_percent, $a->planned_start_date?->format('d/m/Y'), $a->planned_end_date?->format('d/m/Y'), $a->notes, ]; } return $rows; } /** * @return list<string> */ public function headings(): array { return [ __('Código'), __('Atividade'), __('Predecessora'), __('Responsável'), __('Status'), __('Progresso (%)'), __('Início'), __('Término'), __('Observações'), ]; } public function title(): string { return mb_substr($this->project->name, 0, 31); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings