report = $report; } /** * @return Column[] */ public function getColumns(): array { return once(function (): array { return $this->report->fields; }); } public function getHeaders(): array { return once(function (): array { $headers = []; foreach ($this->getColumns() as $column) { $headers[$column->getName()] = $column->getLabel(); } return $headers; }); } public function getPdfView(): string { return 'components.company.reports.report-pdf'; } public function getAlignment(int $index): string { $column = $this->getColumns()[$index]; if ($column->getAlignment() === Alignment::Right) { return 'right'; } if ($column->getAlignment() === Alignment::Center) { return 'center'; } return 'left'; } public function getAlignmentClass(string $columnName): string { return once(function () use ($columnName): string { /** @var Column|null $column */ $column = collect($this->getColumns())->first(fn (Column $column) => $column->getName() === $columnName); if ($column?->getAlignment() === Alignment::Right) { return 'text-right'; } if ($column?->getAlignment() === Alignment::Center) { return 'text-center'; } return 'text-left'; }); } }