USE notas_ballivian;

-- 1) Usuario para el login (usuario o CI) y control de cambio de clave
ALTER TABLE usuarios
  ADD COLUMN usuario VARCHAR(60) NULL AFTER ci,
  ADD COLUMN debe_cambiar_clave TINYINT(1) NOT NULL DEFAULT 0 AFTER password_hash,
  ADD COLUMN clave_cambiada_en DATETIME NULL AFTER debe_cambiar_clave,
  ADD UNIQUE KEY uq_usuarios_usuario (usuario);

UPDATE usuarios SET usuario = 'shuanca'       WHERE ci = '1000001';
UPDATE usuarios SET usuario = 'avillca'       WHERE ci = '1000002';
UPDATE usuarios SET usuario = 'mrodriguez'    WHERE ci = '1000003';
UPDATE usuarios SET usuario = 'rchoque'       WHERE ci = '1000004';
UPDATE usuarios SET usuario = 'maria.8123406' WHERE ci = '8123406';

-- 2) Auditoría con valor anterior y nuevo, y dispositivo
ALTER TABLE auditoria
  ADD COLUMN entidad        VARCHAR(40)  NULL AFTER detalle,
  ADD COLUMN entidad_id     INT UNSIGNED NULL AFTER entidad,
  ADD COLUMN valor_anterior TEXT         NULL AFTER entidad_id,
  ADD COLUMN valor_nuevo    TEXT         NULL AFTER valor_anterior,
  ADD COLUMN dispositivo    VARCHAR(255) NULL AFTER ip;

-- 3) Avisos del panel (cambio de clave, citaciones, notas, comunicados)
CREATE TABLE IF NOT EXISTS avisos (
  id         INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  usuario_id INT UNSIGNED NOT NULL,
  tipo       VARCHAR(30)  NOT NULL,
  titulo     VARCHAR(120) NOT NULL,
  mensaje    VARCHAR(255) NULL,
  enlace     VARCHAR(120) NULL,
  leido      TINYINT(1)   NOT NULL DEFAULT 0,
  creado_en  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX (usuario_id, leido),
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE
) ENGINE=InnoDB;