<?php

namespace Tests\Support;

use Illuminate\Http\UploadedFile;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

trait CreatesStationImportExcel
{
    /**
     * Genera un Excel mínimo con la misma estructura que espera el importador.
     *
     * Se usa en tests para evitar fixtures binarios en el repositorio y para
     * mantener los casos deterministas y fáciles de leer.
     */
    protected function createStationsExcel(array $rows): UploadedFile
    {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();

        $headers = [
            'Nº',
            'Dirección y/o Localidad',
            'Coordenadas',
            'Ciudad',
            'Departamento',
            'Inmueble',
            'Grupo',
            'Tienda',
            'Flota',
            'Flete Propio',
        ];

        foreach ($headers as $column => $header) {
            $sheet->setCellValueByColumnAndRow($column + 1, 1, $header);
        }

        foreach ($rows as $index => $row) {
            foreach ($row as $column => $value) {
                $sheet->setCellValueByColumnAndRow($column + 1, $index + 2, $value);
            }
        }

        $path = tempnam(sys_get_temp_dir(), 'stations-import-');
        $writer = new Xlsx($spreadsheet);
        $writer->save($path);

        return new UploadedFile(
            $path,
            'estaciones.xlsx',
            'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            null,
            true
        );
    }
}
