-- =============================================
-- CEIPS - Base de Datos
-- Educación Médica IPS
-- =============================================

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ---------------------------------------------
-- Tabla: usuarios (Administradores del sistema)
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `usuarios` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `nombre` VARCHAR(100) NOT NULL,
    `email` VARCHAR(150) NOT NULL UNIQUE,
    `password` VARCHAR(255) NOT NULL,
    `rol` ENUM('admin', 'editor') DEFAULT 'editor',
    `activo` TINYINT(1) DEFAULT 1,
    `ultimo_acceso` DATETIME NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: equipo (Miembros del departamento)
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `equipo` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `nombre` VARCHAR(150) NOT NULL,
    `titulo` VARCHAR(50) NULL COMMENT 'Dr., Dra., Lic., Mg., Abog., etc.',
    `cargo` VARCHAR(200) NULL,
    `especialidad` VARCHAR(200) NULL,
    `email` VARCHAR(150) NULL,
    `telefono` VARCHAR(50) NULL,
    `foto` VARCHAR(255) NULL,
    `biografia` TEXT NULL,
    `es_jefe` TINYINT(1) DEFAULT 0,
    `orden` INT(11) DEFAULT 0,
    `activo` TINYINT(1) DEFAULT 1,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: categorias_documentos
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `categorias_documentos` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `nombre` VARCHAR(100) NOT NULL,
    `slug` VARCHAR(100) NOT NULL UNIQUE,
    `descripcion` TEXT NULL,
    `icono` VARCHAR(50) DEFAULT 'fas fa-file',
    `orden` INT(11) DEFAULT 0,
    `activo` TINYINT(1) DEFAULT 1,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: documentos
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `documentos` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `categoria_id` INT(11) NULL,
    `titulo` VARCHAR(255) NOT NULL,
    `descripcion` TEXT NULL,
    `archivo` VARCHAR(255) NOT NULL,
    `tipo_archivo` VARCHAR(50) NULL COMMENT 'pdf, docx, xlsx, etc.',
    `tamanio` INT(11) NULL COMMENT 'Tamaño en bytes',
    `enlace_externo` VARCHAR(500) NULL COMMENT 'URL de Google Drive u otro',
    `descargas` INT(11) DEFAULT 0,
    `destacado` TINYINT(1) DEFAULT 0,
    `activo` TINYINT(1) DEFAULT 1,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`categoria_id`) REFERENCES `categorias_documentos`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: jornadas (Jornadas Científicas)
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `jornadas` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `titulo` VARCHAR(255) NOT NULL,
    `numero` INT(11) NOT NULL COMMENT 'Primera, Segunda, etc.',
    `fecha` DATE NOT NULL,
    `hora_inicio` TIME NULL,
    `hora_fin` TIME NULL,
    `lugar` VARCHAR(255) NULL,
    `descripcion` TEXT NULL,
    `estado` ENUM('programada', 'proxima', 'realizada', 'cancelada') DEFAULT 'programada',
    `imagen` VARCHAR(255) NULL,
    `enlace_inscripcion` VARCHAR(500) NULL,
    `enlace_programa` VARCHAR(500) NULL,
    `enlace_certificados` VARCHAR(500) NULL,
    `activo` TINYINT(1) DEFAULT 1,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: contactos (Mensajes del formulario)
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `contactos` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `nombre` VARCHAR(150) NOT NULL,
    `email` VARCHAR(150) NOT NULL,
    `telefono` VARCHAR(50) NULL,
    `asunto` VARCHAR(100) NULL,
    `mensaje` TEXT NOT NULL,
    `ip` VARCHAR(45) NULL,
    `leido` TINYINT(1) DEFAULT 0,
    `respondido` TINYINT(1) DEFAULT 0,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: noticias
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `noticias` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `titulo` VARCHAR(255) NOT NULL,
    `slug` VARCHAR(255) NOT NULL UNIQUE,
    `extracto` TEXT NULL,
    `contenido` LONGTEXT NULL,
    `imagen` VARCHAR(255) NULL,
    `autor_id` INT(11) NULL,
    `publicado` TINYINT(1) DEFAULT 0,
    `fecha_publicacion` DATETIME NULL,
    `vistas` INT(11) DEFAULT 0,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`autor_id`) REFERENCES `usuarios`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------
-- Tabla: configuracion (Ajustes del sitio)
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `configuracion` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `clave` VARCHAR(100) NOT NULL UNIQUE,
    `valor` TEXT NULL,
    `tipo` ENUM('text', 'textarea', 'email', 'url', 'number', 'boolean') DEFAULT 'text',
    `descripcion` VARCHAR(255) NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- =============================================
-- DATOS INICIALES
-- =============================================

-- Usuario administrador (password: admin123)
INSERT INTO `usuarios` (`nombre`, `email`, `password`, `rol`) VALUES
('Administrador', 'admin@ceinstitucional.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin');

-- Categorías de documentos
INSERT INTO `categorias_documentos` (`nombre`, `slug`, `descripcion`, `icono`, `orden`) VALUES
('Formularios', 'formularios', 'Formularios para trámites e investigación', 'fas fa-file-alt', 1),
('Flujogramas', 'flujogramas', 'Diagramas de procesos y procedimientos', 'fas fa-project-diagram', 2),
('Reglamentos', 'reglamentos', 'Normativas y reglamentaciones oficiales', 'fas fa-gavel', 3),
('Comité de Ética', 'comite-etica', 'Documentación del Comité de Ética', 'fas fa-users-cog', 4),
('Informes', 'informes', 'Informes mensuales y trimestrales', 'fas fa-chart-bar', 5),
('Jornadas Científicas', 'jornadas', 'Material de las Jornadas Científicas', 'fas fa-calendar-alt', 6),
('Cursos', 'cursos', 'Material de cursos y capacitación', 'fas fa-graduation-cap', 7);

-- Miembros del equipo
INSERT INTO `equipo` (`nombre`, `titulo`, `cargo`, `es_jefe`, `orden`, `activo`) VALUES
('Gustavo Melgarejo', 'Dr.', 'Jefe del Departamento de Educación Médica, Docencia e Investigación', 1, 1, 1),
('Juan Carlos Centurión', 'Dr.', 'Médico', 0, 2, 1),
('Enrique Cabrera', 'Dr.', 'Médico', 0, 3, 1),
('Marta Duarte', 'Dra.', 'Médica', 0, 4, 1),
('Diana Yuruhan', 'Dra.', 'Médica', 0, 5, 1),
('Andrés Swacko', 'Dr.', 'Médico', 0, 6, 1),
('Cecilia Palacios', 'Mg.', 'Magíster', 0, 7, 1),
('Raquel Arroyo', 'Lic.', 'Licenciada', 0, 8, 1),
('Marta Brizuela', 'Lic.', 'Licenciada', 0, 9, 1),
('Lucía Caracciola', 'Lic.', 'Licenciada', 0, 10, 1),
('Sandra García', 'Lic.', 'Licenciada', 0, 11, 1),
('Pablo Casco', 'Abog.', 'Abogado', 0, 12, 1),
('Hugo Vázquez', '', 'Colaborador', 0, 13, 1);

-- Jornadas Científicas
INSERT INTO `jornadas` (`titulo`, `numero`, `fecha`, `lugar`, `descripcion`, `estado`) VALUES
('Primera Jornada Científica de Residentes Investigadores', 1, '2023-12-01', 'Hospital Central IPS, Asunción', 'Primera edición de las jornadas científicas donde los residentes presentaron sus trabajos de investigación.', 'realizada'),
('Segunda Jornada Científica de Residentes', 2, '2025-01-27', 'Hospital Central IPS, Asunción', 'Segunda edición de las jornadas científicas. Inscripciones abiertas para presentación de trabajos.', 'proxima'),
('Tercera Jornada Científica de Residentes', 3, '2025-11-10', 'Hospital Central IPS, Asunción', 'Tercera edición de las jornadas científicas.', 'programada');

-- Configuración inicial del sitio
INSERT INTO `configuracion` (`clave`, `valor`, `tipo`, `descripcion`) VALUES
('sitio_nombre', 'Educación Médica IPS', 'text', 'Nombre del sitio'),
('sitio_descripcion', 'Departamento de Educación Médica, Docencia e Investigación del Instituto de Previsión Social', 'textarea', 'Descripción del sitio'),
('contacto_email', 'educacionmedica2021.ips@gmail.com', 'email', 'Email de contacto'),
('contacto_telefono', '290136, interno 72792', 'text', 'Teléfono de contacto'),
('contacto_direccion', 'Santísimo Sacramento, Asunción, Paraguay', 'text', 'Dirección'),
('horario_atencion', 'Lunes a Viernes: 7:00 - 15:00', 'text', 'Horario de atención'),
('facebook_url', '', 'url', 'URL de Facebook'),
('instagram_url', '', 'url', 'URL de Instagram'),
('linkedin_url', '', 'url', 'URL de LinkedIn'),
('google_classroom', 'https://classroom.google.com/c/NjE0NDY0NzYyOTc4', 'url', 'URL de Google Classroom'),
('cei_ultimo_numero', '0', 'number', 'Último número de solicitud CEI generado');

-- ---------------------------------------------
-- Tabla: solicitudes_cei (Solicitudes de Evaluación CEI)
-- ---------------------------------------------
CREATE TABLE IF NOT EXISTS `solicitudes_cei` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `numero_solicitud` VARCHAR(20) NOT NULL UNIQUE,

    -- Datos del proyecto
    `titulo_proyecto` VARCHAR(500) NOT NULL,
    `objetivo_proyecto` TEXT NOT NULL,

    -- Datos del investigador
    `investigador_nombre` VARCHAR(200) NOT NULL,
    `investigador_email` VARCHAR(150) NOT NULL,
    `investigador_telefono` VARCHAR(50) NULL,
    `especialidad` VARCHAR(200) NOT NULL,
    `institucion` VARCHAR(255) NOT NULL,
    `centro_departamento` VARCHAR(100) NOT NULL,

    -- Programa académico
    `programa_academico` ENUM('grado', 'postgrado_especializacion', 'maestria', 'doctorado', 'investigacion', 'otros') NOT NULL,
    `programa_academico_otro` VARCHAR(200) NULL,

    -- Tutor
    `tiene_tutor` TINYINT(1) DEFAULT 0,
    `tutor_nombre` VARCHAR(200) NULL,
    `tutor_email` VARCHAR(150) NULL,

    -- Financiación
    `tiene_financiacion` TINYINT(1) DEFAULT 0,
    `financiacion_detalle` TEXT NULL,

    -- Otros investigadores
    `tiene_otros_investigadores` TINYINT(1) DEFAULT 0,
    `otros_investigadores` TEXT NULL COMMENT 'Lista de investigadores',

    -- Tipo de proyecto
    `tipo_proyecto` ENUM('tfc', 'multicentrico', 'institucional', 'otro') DEFAULT 'institucional',

    -- Requisitos TFC (JSON array)
    `requisitos_tfc` TEXT NULL,

    -- Requisitos Multicéntricos (JSON array)
    `requisitos_multicentricos` TEXT NULL,

    -- Archivos adjuntos (JSON con rutas)
    `archivos_adjuntos` TEXT NULL,

    -- Estado de la solicitud
    `estado` ENUM('pendiente', 'en_revision', 'observaciones', 'aprobado', 'rechazado') DEFAULT 'pendiente',
    `observaciones` TEXT NULL,
    `fecha_revision` DATETIME NULL,
    `revisado_por` INT(11) NULL,

    -- Metadatos
    `ip_solicitante` VARCHAR(45) NULL,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    PRIMARY KEY (`id`),
    INDEX `idx_estado` (`estado`),
    INDEX `idx_fecha` (`created_at`),
    INDEX `idx_investigador` (`investigador_email`),
    FOREIGN KEY (`revisado_por`) REFERENCES `usuarios`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

SET FOREIGN_KEY_CHECKS = 1;
