USE notas_ballivian;

-- 1) Estudiantes: dirección, teléfono, observaciones; RUDE opcional pero sin repetidos
ALTER TABLE estudiantes
  ADD COLUMN direccion     VARCHAR(150) NULL AFTER fecha_nac,
  ADD COLUMN telefono      VARCHAR(20)  NULL AFTER direccion,
  ADD COLUMN observaciones VARCHAR(250) NULL AFTER salud;

UPDATE estudiantes SET rude = NULL WHERE rude = '';
ALTER TABLE estudiantes ADD UNIQUE KEY uq_estudiantes_rude (rude);

-- 2) Tutores: un contacto principal y uno secundario
CREATE TABLE contactos_tutor (
  id            INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  estudiante_id INT UNSIGNED NOT NULL,
  principal     TINYINT(1)   NOT NULL DEFAULT 0,
  nombre        VARCHAR(100) NOT NULL,
  parentesco    VARCHAR(40)  NULL,
  telefono      VARCHAR(20)  NULL,
  UNIQUE KEY uq_contacto (estudiante_id, principal),
  FOREIGN KEY (estudiante_id) REFERENCES estudiantes(id) ON DELETE CASCADE
) ENGINE=InnoDB;

INSERT INTO contactos_tutor (estudiante_id, principal, nombre, telefono)
SELECT id, 1, tutor_nombre, tutor_telefono FROM estudiantes
 WHERE tutor_nombre IS NOT NULL AND tutor_nombre <> '';

ALTER TABLE estudiantes DROP COLUMN tutor_nombre, DROP COLUMN tutor_telefono;

-- 3) Inscripciones: fecha y N° de lista único por curso
ALTER TABLE inscripciones ADD COLUMN fecha_inscripcion DATE NULL AFTER estado;
UPDATE inscripciones SET fecha_inscripcion = CURDATE() WHERE fecha_inscripcion IS NULL;
ALTER TABLE inscripciones ADD UNIQUE KEY uq_inscripcion_nro (curso_id, nro_lista);

-- 4) Movimientos: de qué curso a cuál
ALTER TABLE movimientos
  ADD COLUMN curso_anterior_id INT UNSIGNED NULL AFTER fecha,
  ADD COLUMN curso_nuevo_id    INT UNSIGNED NULL AFTER curso_anterior_id;

-- 5) Cerrar sesiones desde administración (retiros, desactivaciones, restablecimientos)
ALTER TABLE usuarios ADD COLUMN sesiones_desde DATETIME NULL AFTER clave_cambiada_en;