-- Phase 11: Separation Module (Licencia/Renuncia/Pase a Retiro)
-- Based on Resolución N.° 00746-2025-JNE
-- Critical deadline: April 6, 2026

-- Table for candidate separation data
CREATE TABLE IF NOT EXISTS candidatos_separacion (
    id INT AUTO_INCREMENT PRIMARY KEY,
    candidato_dni VARCHAR(8) NOT NULL,
    inscripcion_id INT NULL COMMENT 'FK to future inscripciones table',
    
    -- Base data
    es_funcionario_autoridad BOOLEAN DEFAULT FALSE,
    tipo_vinculo ENUM(
        'ALCALDE_DISTRITAL',
        'ALCALDE_PROVINCIAL',
        'REGIDOR_DISTRITAL',
        'REGIDOR_PROVINCIAL',
        'CONSEJERO_REGIONAL',
        'GOBERNADOR_REGIONAL',
        'VICEGOBERNADOR_REGIONAL',
        'TRABAJADOR_PUBLICO',
        'FFAA_PNP',
        'OTRO'
    ) NULL,
    entidad VARCHAR(255) NULL COMMENT 'Nombre de la entidad donde labora',
    cargo_actual VARCHAR(255) NULL,
    fecha_inicio_cargo DATE NULL,
    fecha_fin_cargo DATE NULL,
    
    -- Auto-calculated separation type
    separacion_requerida ENUM(
        'LICENCIA_SIN_GOCE',
        'RENUNCIA',
        'PASE_A_RETIRO',
        'NO_REQUIERE',
        'REVISAR'
    ) DEFAULT 'NO_REQUIERE',
    
    -- Licencia sin goce data
    fecha_solicitud_licencia DATE NULL,
    fecha_aprobacion_licencia DATE NULL,
    fecha_inicio_licencia DATE NULL,
    nro_acuerdo_resolucion VARCHAR(100) NULL,
    tipo_documento_licencia VARCHAR(100) NULL COMMENT 'Acuerdo de Concejo, Resolución, etc.',
    doc_licencia_url VARCHAR(500) NULL,
    
    -- Renuncia data
    fecha_renuncia DATE NULL,
    fecha_aceptacion_renuncia DATE NULL,
    fecha_presentacion_mpv DATE NULL COMMENT 'Fecha presentación cargo ante MPV (límite 14/04/2026)',
    doc_renuncia_url VARCHAR(500) NULL,
    
    -- Pase a retiro data (FFAA/PNP)
    fecha_pase_retiro DATE NULL,
    nro_resolucion_retiro VARCHAR(100) NULL,
    doc_retiro_url VARCHAR(500) NULL,
    
    -- Validation status
    validacion_estado ENUM('BORRADOR', 'VALIDADO', 'ERROR') DEFAULT 'BORRADOR',
    validacion_errores TEXT NULL COMMENT 'JSON array of validation errors',
    validacion_advertencias TEXT NULL COMMENT 'JSON array of warnings',
    
    -- Metadata
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_dni (candidato_dni),
    INDEX idx_tipo_vinculo (tipo_vinculo),
    INDEX idx_separacion (separacion_requerida),
    INDEX idx_estado (validacion_estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Add separation deadline settings to existing settings table
-- Note: settings table uses key_name, value_text structure
INSERT INTO settings (key_name, value_text) VALUES
('fecha_limite_licencia', '2026-06-08'),
('fecha_limite_renuncia', '2026-04-06'),
('fecha_limite_retiro', '2026-06-16'),
('fecha_limite_cargo_mpv', '2026-04-14')
ON DUPLICATE KEY UPDATE value_text = VALUES(value_text);
