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

/**
 * AUSENTISMO_REGISTRO
 * Registra el ausentismo laboral por empleado, año y mes.
 * Separa días y horas de ausentismo con sus respectivos motivos,
 * tal como aparecen en la Matriz de Ausentismo Laboral 2025.
 *
 * Motivos habituales (no son enum, se guardan como texto libre):
 *   PERSONAL, P.MEDICO, RECUPERABLE, FALLECIMIENTO FAMILIAR,
 *   PATERNIDAD, CALAMIDAD DOMESTICA, CAPACITACION,
 *   REPOSO M., ATENCION MEDICA, ESTUDIOS
 */
const AusentismoRegistro = db.sequelize.define('AUSENTISMO_REGISTRO', {

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

    ID_USUARIO: {
        type: Sequelize.INTEGER,
        allowNull: false,
    },

    ANIO: {
        type: Sequelize.INTEGER,
        allowNull: false,
        comment: 'Año del registro de ausentismo. Ej: 2025'
    },

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

    // --- Ausentismo en DÍAS ---
    DIAS_AUSENTISMO: {
        type: Sequelize.DECIMAL(5, 2),
        allowNull: true,
        defaultValue: 0,
        comment: 'Número de días ausentes en el mes'
    },

    MOTIVO_DIAS: {
        type: Sequelize.STRING(200),
        allowNull: true,
        comment: 'Motivo de los días de ausentismo. Ej: PERSONAL, P.MEDICO, CALAMIDAD DOMESTICA'
    },

    // --- Ausentismo en HORAS ---
    HORAS_AUSENTISMO: {
        type: Sequelize.DECIMAL(5, 2),
        allowNull: true,
        defaultValue: 0,
        comment: 'Número de horas ausentes en el mes'
    },

    MOTIVO_HORAS: {
        type: Sequelize.STRING(200),
        allowNull: true,
        comment: 'Motivo de las horas de ausentismo. Ej: ATENCION MEDICA, ESTUDIOS, RECUPERABLE'
    },

    // --- Referencia al permiso aprobado (opcional) ---
    ID_PERMISO: {
        type: Sequelize.BIGINT,
        allowNull: true,
        comment: 'FK opcional al permiso que originó este ausentismo'
    },

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

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

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

module.exports = AusentismoRegistro;
