-- ============================================================================
-- MIGRACIÓN 002: Campos adicionales del firmante en tabla signatures
-- Ejecutar una sola vez sobre la base de datos existente
-- ============================================================================

USE contratos_db;

ALTER TABLE signatures
    ADD COLUMN nombre_completo   VARCHAR(255)  NULL AFTER numero_documento,
    ADD COLUMN fecha_nacimiento  DATE          NULL AFTER nombre_completo,
    ADD COLUMN fecha_expedicion  DATE          NULL AFTER fecha_nacimiento,
    ADD COLUMN telefono          VARCHAR(30)   NULL AFTER fecha_expedicion;

-- Índice para búsquedas por nombre o documento
ALTER TABLE signatures
    ADD INDEX idx_nombre      (nombre_completo),
    ADD INDEX idx_telefono    (telefono);

-- Actualizar la vista v_contracts_full para incluir los nuevos campos
DROP VIEW IF EXISTS v_contracts_full;

CREATE VIEW v_contracts_full AS
SELECT
    c.*,
    a.nombre  AS admin_nombre,
    a.email   AS admin_email,
    s.id                    AS signature_id,
    s.firmado_at,
    s.tipo_documento,
    s.numero_documento,
    s.nombre_completo,
    s.fecha_nacimiento,
    s.fecha_expedicion,
    s.telefono              AS firmante_telefono,
    s.ip_address            AS firmante_ip,
    s.ubicacion_lat,
    s.ubicacion_lng,
    s.pdf_path,
    CASE
        WHEN c.estado = 'firmado'    THEN 'Firmado'
        WHEN c.estado = 'expirado'   THEN 'Expirado'
        WHEN c.estado = 'cancelado'  THEN 'Cancelado'
        WHEN c.expira_at < NOW()     THEN 'Expirado'
        ELSE 'Pendiente'
    END AS estado_display
FROM contracts c
INNER JOIN admins a ON c.admin_id = a.id
LEFT JOIN signatures s ON c.id = s.contract_id;

SELECT 'Migración 002 aplicada correctamente' AS resultado;
