*/ public function columns(Tenant $tenant): array { $keys = $tenant->codigo === self::FIESTA_FUTBOL_INFANTIL ? ['order_number', 'category', 'product', 'type', 'amount', 'client', 'ticket', 'date', 'status', 'scanned_by'] : ['order_number', 'product', 'amount', 'client', 'ticket', 'date', 'status', 'scanned_by']; $columns = array_map(fn (string $key): array => $this->definitions()[$key], $keys); if ($tenant->codigo !== self::FIESTA_FUTBOL_INFANTIL) { $widths = [ 'order_number' => '11%', 'product' => '15%', 'amount' => '10%', 'client' => '15%', 'ticket' => '19%', 'date' => '11%', 'status' => '8%', 'scanned_by' => '11%', ]; $columns = array_map(function (array $column) use ($widths): array { $column['width'] = $widths[$column['key']]; return $column; }, $columns); } return $columns; } /** @return list */ public function publicColumns(Tenant $tenant): array { return array_map(function (array $column): array { unset($column['excel_width']); return $column; }, $this->columns($tenant)); } /** @return array */ private function definitions(): array { return [ 'order_number' => $this->column('order_number', 'N° de orden', 'order_number', '10.5%', 14), 'category' => $this->column('category', 'Categoría', 'text', '11%', 18), 'product' => $this->column('product', 'Producto', 'text', '11%', 22), 'type' => $this->column('type', 'Tipo', 'text', '8%', 18), 'amount' => $this->column('amount', 'Importe', 'currency', '9%', 15), 'client' => $this->column('client', 'Cliente', 'text', '13%', 30), 'ticket' => $this->column('ticket', 'ID', 'text', '14.5%', 39), 'date' => $this->column('date', 'Fecha', 'date', '9.5%', 20), 'status' => $this->column('status', 'Estado', 'status', '7%', 13), 'scanned_by' => $this->column('scanned_by', 'Escaneado por', 'text', '9%', 28), ]; } /** @return array{key: string, label: string, type: string, sortable: bool, width: string, excel_width: int} */ private function column( string $key, string $label, string $type, string $width, int $excelWidth, ): array { return [ 'key' => $key, 'label' => $label, 'type' => $type, 'sortable' => true, 'width' => $width, 'excel_width' => $excelWidth, ]; } }