const Sequelize = require('sequelize');
var db = require("../database/db.js");

/**
 * CAPACITACION_DETALLE
 * Almacena los datos agregados mensuales necesarios para calcular
 * los indicadores de la Matriz de Capacitación:
 *   - Capacitaciones programadas vs realizadas (eficacia de programación)
 *   - Participantes esperados vs asistentes reales (cobertura)
 *
 * Nota: los eventos individuales de capacitación siguen en la tabla
 * CAPACITACION (un registro por empleado por evento).
 * Esta tabla guarda el resumen mensual para el dashboard de indicadores.
 */
const CapacitacionDetalle = db.sequelize.define('CAPACITACION_DETALLE', {

    ID_DETALLE: {
        primaryKey: true,
        type: Sequelize.BIGINT,
        allowNull: false,
        autoIncrement: true
    },

    ANIO: {
        type: Sequelize.INTEGER,
        allowNull: false,
        comment: 'Año del resumen mensual. Ej: 2025'
    },

    MES: {
        type: Sequelize.INTEGER,
        allowNull: false,
        comment: 'Mes del resumen (1-12)'
    },

    // --- Indicador de eficacia de programación ---
    CAP_PROGRAMADAS: {
        type: Sequelize.INTEGER,
        allowNull: true,
        defaultValue: 0,
        comment: 'Número de capacitaciones planificadas para el mes'
    },

    CAP_REALIZADAS: {
        type: Sequelize.INTEGER,
        allowNull: true,
        defaultValue: 0,
        comment: 'Número de capacitaciones efectivamente realizadas en el mes'
    },

    // --- Indicador de cobertura de participantes ---
    PARTICIPANTES_ESPERADOS: {
        type: Sequelize.INTEGER,
        allowNull: true,
        defaultValue: 0,
        comment: 'Total de participantes convocados o esperados en el mes'
    },

    PARTICIPANTES_ASISTENTES: {
        type: Sequelize.INTEGER,
        allowNull: true,
        defaultValue: 0,
        comment: 'Total de participantes que efectivamente asistieron en el mes'
    },

    // --- Horas totales (opcional, para indicador de horas de capacitación) ---
    HORAS_PLANIFICADAS: {
        type: Sequelize.DECIMAL(8, 2),
        allowNull: true,
        defaultValue: 0,
        comment: 'Horas totales de capacitación planificadas en el mes'
    },

    HORAS_EJECUTADAS: {
        type: Sequelize.DECIMAL(8, 2),
        allowNull: true,
        defaultValue: 0,
        comment: 'Horas totales de capacitación ejecutadas en el mes'
    },

    OBSERVACION: {
        type: Sequelize.STRING(500),
        allowNull: true,
    },

    FECHA_REGISTRO: {
        type: Sequelize.DATE,
        allowNull: false,
        defaultValue: Sequelize.NOW,
    },

},
    {
        timestamps: false,
        id: false
    });

module.exports = CapacitacionDetalle;
