-- ============================================================
--  ESENCIAS DE MI TIERRA — Base de Datos
--  Academia Folclórica
-- ============================================================

CREATE DATABASE IF NOT EXISTS academia_folclorica
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

USE academia_folclorica;

-- ------------------------------------------------------------
-- Grupos / Clases
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS grupos (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  nombre      VARCHAR(100) NOT NULL,
  descripcion TEXT,
  horario     VARCHAR(100),
  profesor    VARCHAR(100),
  activo      TINYINT(1) DEFAULT 1,
  creado_en   TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO grupos (nombre, descripcion, horario, profesor) VALUES
('Infantil A',   'Niños 4-7 años',    'Lunes y Miércoles 16:00',  'Profesora Ana'),
('Infantil B',   'Niños 8-12 años',   'Martes y Jueves 17:00',    'Profesora Ana'),
('Juvenil',      'Jóvenes 13-17 años','Viernes 18:00',             'Profesor Carlos'),
('Adulto',       'Adultos 18+',       'Sábado 10:00',              'Profesor Carlos');

-- ------------------------------------------------------------
-- Alumnos
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS alumnos (
  id              INT AUTO_INCREMENT PRIMARY KEY,
  rut             VARCHAR(12) NOT NULL UNIQUE,
  nombre          VARCHAR(100) NOT NULL,
  apellido        VARCHAR(100) NOT NULL,
  fecha_nacimiento DATE,
  email           VARCHAR(100),
  telefono        VARCHAR(20),
  apoderado       VARCHAR(100),
  telefono_apoderado VARCHAR(20),
  grupo_id        INT,
  fecha_ingreso   DATE DEFAULT (CURRENT_DATE),
  activo          TINYINT(1) DEFAULT 1,
  notas           TEXT,
  creado_en       TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (grupo_id) REFERENCES grupos(id) ON DELETE SET NULL
);

-- ------------------------------------------------------------
-- Mensualidades / Pagos
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS mensualidades (
  id              INT AUTO_INCREMENT PRIMARY KEY,
  alumno_id       INT NOT NULL,
  mes             TINYINT NOT NULL,   -- 1-12
  anio            YEAR NOT NULL,
  monto           DECIMAL(10,0) NOT NULL DEFAULT 15000,
  fecha_pago      DATE,
  metodo_pago     ENUM('efectivo','transferencia','otro') DEFAULT 'efectivo',
  estado          ENUM('pendiente','pagado','atrasado') DEFAULT 'pendiente',
  comprobante     VARCHAR(255),
  notas           TEXT,
  registrado_por  INT,
  creado_en       TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (alumno_id) REFERENCES alumnos(id) ON DELETE CASCADE,
  UNIQUE KEY unique_mensualidad (alumno_id, mes, anio)
);

-- ------------------------------------------------------------
-- Asistencia
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS asistencia (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  alumno_id   INT NOT NULL,
  grupo_id    INT,
  fecha       DATE NOT NULL,
  presente    TINYINT(1) DEFAULT 0,
  justificado TINYINT(1) DEFAULT 0,
  nota        VARCHAR(255),
  creado_en   TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (alumno_id) REFERENCES alumnos(id) ON DELETE CASCADE,
  FOREIGN KEY (grupo_id)  REFERENCES grupos(id)  ON DELETE SET NULL,
  UNIQUE KEY unique_asistencia (alumno_id, fecha)
);
