package com.escolapios.fctmongo.service.processor;

import com.escolapios.fctmongo.dto.GenerarDocumentoContext;
import com.escolapios.fctmongo.entity.Convenio;
import org.springframework.stereotype.Component;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Map;

@Component
public class Anexo5Processor implements AnexoProcessor {

    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy");

    @Override
    public String getTipoDocumento() { 
        return "ANEXO_5"; 
    }

    @Override
    public void procesarDatosEspecificos(GenerarDocumentoContext ctx, Map<String, Object> data) {
        // 1. 🔄 Recuperamos tu nueva entidad unificada Convenio del record contextual
        Convenio dto = ctx.datos();
        if (dto == null) return;

        // 2. Seteamos los datos transversales mínimos de la firma y cabeceras de página
        data.put("fechaHoy", LocalDate.now().format(FORMATTER));
        
        // Extraemos de forma segura el curso escolar desde la entidad integrada
        data.put("cursoAcademicoGlobal", dto.getCursoAcademico() != null ? dto.getCursoAcademico() : "");
        data.put("cursoAcademico", dto.getCursoAcademico() != null ? dto.getCursoAcademico() : "");

        // 3. 👥 INYECCIÓN DE LA LISTA DE ALUMNOS (Solución al problema)
        // Pasamos la lista completa de alumnos para que el WordTemplateService pueda iterar sobre ella
        if (dto.getAlumnos() != null) {
            data.put("alumnos", dto.getAlumnos());
            System.out.println("📊 Cargados " + dto.getAlumnos().size() + " alumnos para el bucle del Anexo 5.");
        } else {
            System.out.println("⚠️ Advertencia: El convenio no tiene alumnos asociados.");
        }

        System.out.println("📊 Variables globales para el Anexo 5 inyectadas con éxito.");
    }
}
