-- =============================================================
--  Módulo Calendario de Avisos y Eventos · UGV
--  Esquema con BASE DE DATOS PROPIA e independiente
--
--  El módulo NO usa la base del control escolar: tiene su propia
--  base, su propia tabla de administradores y su propio acceso.
--
--  Ejecutar en phpMyAdmin (pestaña SQL) o en consola:
--     mysql -u root -p < schema_calendario.sql
-- =============================================================

-- ---------- 1. Base de datos propia del calendario ----------
CREATE DATABASE IF NOT EXISTS calendario_ugv
  DEFAULT CHARACTER SET utf8mb4
  DEFAULT COLLATE utf8mb4_spanish_ci;

USE calendario_ugv;

-- ---------- 2. Administradores del calendario ----------
CREATE TABLE IF NOT EXISTS cal_administradores (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  usuario     VARCHAR(50)  NOT NULL,
  nombre      VARCHAR(100) NOT NULL DEFAULT '',
  correo      VARCHAR(120) NULL DEFAULT NULL,
  contrasena  VARCHAR(255) NOT NULL,          -- hash bcrypt, nunca texto plano
  activo      TINYINT(1)   NOT NULL DEFAULT 1,
  ultimo_acceso DATETIME   NULL DEFAULT NULL,
  creado_en   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY uq_usuario (usuario)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_spanish_ci;

-- ---------- 3. Avisos y eventos ----------
CREATE TABLE IF NOT EXISTS cal_eventos (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  fecha       DATE         NOT NULL,
  titulo      VARCHAR(120) NOT NULL,
  tipo        ENUM('aviso','evento','academico','festivo') NOT NULL DEFAULT 'aviso',
  hora        TIME         NULL DEFAULT NULL,
  descripcion TEXT         NULL,
  creado_por  VARCHAR(50)  NOT NULL DEFAULT '',
  creado_en   TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  editado_en  TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY idx_fecha (fecha)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_spanish_ci;

-- =============================================================
--  4. ADMINISTRADOR INICIAL
--
--  Usuario:     admin
--  Contraseña:  Admin2026$UGV
--
--  ⚠ Esta contraseña es pública (está en este archivo).
--    Entra al calendario y cámbiala de inmediato, o crea tu
--    propio administrador con crear_admin.php y desactiva este.
-- =============================================================
INSERT INTO cal_administradores (usuario, nombre, correo, contrasena)
VALUES (
  'admin',
  'Administrador del sistema',
  NULL,
  '$2y$10$ceGZ2kxDI2fp4ZM.pzsUy.nZupm12SvhYh.QRtcZkSIGsdjEvzh42'
)
ON DUPLICATE KEY UPDATE usuario = usuario;   -- no duplica si ya existe

-- =============================================================
--  5. USUARIO DE BASE DE DATOS (opcional pero recomendado)
--
--  Crea un usuario MySQL exclusivo del calendario, con permisos
--  solo sobre esta base. Descomenta y cambia la contraseña.
-- =============================================================
-- CREATE USER 'cal_usuario'@'localhost' IDENTIFIED BY 'ContrasenaSegura123';
-- GRANT SELECT, INSERT, UPDATE, DELETE ON calendario_ugv.* TO 'cal_usuario'@'localhost';
-- FLUSH PRIVILEGES;

-- =============================================================
--  6. EVENTOS DE EJEMPLO (opcional, para ver el calendario con
--     contenido desde el primer momento). Bórralos cuando quieras:
--        DELETE FROM cal_eventos WHERE creado_por = 'ejemplo';
-- =============================================================
-- INSERT INTO cal_eventos (fecha, titulo, tipo, hora, descripcion, creado_por) VALUES
--   ('2026-08-03', 'Inicio de inscripciones', 'academico', '08:00', 'Ventanilla de Servicios Escolares.', 'ejemplo'),
--   ('2026-08-17', 'Inicio de clases', 'academico', '07:00', 'Ciclo escolar 2026-2027.', 'ejemplo'),
--   ('2026-09-16', 'Suspensión de labores', 'festivo', NULL, 'Día de la Independencia.', 'ejemplo');

-- ---------- Comprobación ----------
-- SELECT usuario, nombre, activo FROM cal_administradores;
