<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use Maatwebsite\Excel\Concerns\WithColumnWidths;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use Maatwebsite\Excel\Concerns\WithTitle;

class PlantillaCompraExport implements FromArray, WithHeadings, WithStyles, WithColumnWidths, WithTitle
{
    /**
     * Datos de ejemplo para la plantilla
     */
    public function array(): array
    {
        return [
            ['7501234567890', 'Balde 15 L', 10, 50000, 'Principal', 'Si codigo existe, usa ese producto'],
            ['', 'Producto Nuevo Sin Codigo', 5, 75000, 'Principal', 'Si no hay codigo, busca por nombre'],
            ['9999999999999', 'Escoba Verde', 20, 25000, 'Principal', 'Codigo nuevo - crea producto con ese nombre'],
            ['', '', '', '', '', ''],
            ['', 'INSTRUCCIONES:', '', '', '', ''],
            ['', '1. Si tiene codigo: busca por codigo primero', '', '', '', ''],
            ['', '2. Si no hay codigo: busca por nombre', '', '', '', ''],
            ['', '3. Si no existe: crea nuevo producto', '', '', '', ''],
        ];
    }

    /**
     * Encabezados de las columnas
     */
    public function headings(): array
    {
        return [
            'Codigo de Barras',
            'Producto',
            'Cantidad',
            'Precio Unitario',
            'Bodega',
            'Observaciones',
        ];
    }

    /**
     * Estilos de la hoja
     */
    public function styles(Worksheet $sheet)
    {
        return [
            // Estilo para la fila de encabezados
            1 => [
                'font' => [
                    'bold' => true,
                    'size' => 12,
                    'color' => ['rgb' => 'FFFFFF'],
                ],
                'fill' => [
                    'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
                    'startColor' => ['rgb' => '4472C4'],
                ],
                'alignment' => [
                    'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
                    'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
                ],
            ],
            // Filas de datos
            '2:8' => [
                'alignment' => [
                    'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
                ],
            ],
            // Filas de instrucciones
            '5:8' => [
                'font' => [
                    'italic' => true,
                    'color' => ['rgb' => '666666'],
                ],
            ],
        ];
    }

    /**
     * Ancho de las columnas
     */
    public function columnWidths(): array
    {
        return [
            'A' => 20, // Codigo de Barras
            'B' => 25, // Producto
            'C' => 12, // Cantidad
            'D' => 18, // Precio Unitario
            'E' => 15, // Bodega
            'F' => 35, // Observaciones
        ];
    }

    /**
     * Título de la hoja
     */
    public function title(): string
    {
        return 'Plantilla Compras';
    }
}
