<?php
require '../../vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Fill;

// Recibe los datos del calendario por POST (JSON)
$input = json_decode(file_get_contents('php://input'), true);
$tabla = $input['tabla'] ?? [];
$colorMap = $input['colorMap'] ?? [];

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// Escribir la tabla y aplicar colores
for ($r = 0; $r < count($tabla); $r++) {
    for ($c = 0; $c < count($tabla[$r]); $c++) {
        $cell = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($c+1) . ($r+1);
        $val = $tabla[$r][$c];
        $sheet->setCellValue($cell, $val);
        if ($r > 0 && $c > 0 && trim($val) !== '') {
            // Buscar el primer colaborador que coincida en la celda
            $encontrado = false;
            foreach ($colorMap as $nombre => $color) {
                // Buscar el nombre en toda la celda (ignorando mayúsculas/minúsculas y espacios)
                if (preg_match('/(^|\n| )' . preg_quote($nombre, '/') . '($| |\n)/i', $val)) {
                    $sheet->getStyle($cell)->getFill()->setFillType(Fill::FILL_SOLID)
                        ->getStartColor()->setRGB($color);
                    $encontrado = true;
                    break;
                }
            }
        }
    }
}

// Descargar el archivo
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="calendario_coloreado.xlsx"');
header('Cache-Control: max-age=0');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
