-- =========================================================
-- Sistema de Registro de Postulantes Call Center
-- =========================================================
CREATE DATABASE IF NOT EXISTS registro_callcenter
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE registro_callcenter;

-- ---------------------------------------------------------
-- LOTES: cada vez que se comparte el enlace se crea un lote
-- con su propia fecha de entrevista. Todo el que se registre
-- usando el link de ese lote hereda esa fecha, sin importar
-- cuándo se registre.
-- ---------------------------------------------------------
CREATE TABLE lotes (
  id               INT AUTO_INCREMENT PRIMARY KEY,
  etiqueta         VARCHAR(100)  NOT NULL,
  fecha_entrevista DATE          NOT NULL,
  token            VARCHAR(20)   NOT NULL UNIQUE,
  activo           TINYINT(1)    NOT NULL DEFAULT 1,
  fecha_creacion   DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ---------------------------------------------------------
-- POSTULANTES
-- ---------------------------------------------------------
CREATE TABLE postulantes (
  id                    INT AUTO_INCREMENT PRIMARY KEY,
  lote_id               INT NOT NULL,
  nombres               VARCHAR(100) NOT NULL,
  apellidos             VARCHAR(100) NOT NULL,
  dni                   VARCHAR(15)  NOT NULL UNIQUE,
  celular               VARCHAR(20)  NOT NULL,
  area                  VARCHAR(100) NULL,
  tiene_experiencia     ENUM('SI','NO') NOT NULL DEFAULT 'NO',
  tiempo_experiencia    VARCHAR(100) NULL,
  tiene_hijos           ENUM('SI','NO') NOT NULL DEFAULT 'NO',
  genero                ENUM('M','F') NOT NULL,
  gestacion             ENUM('SI','NO','N/A') NOT NULL DEFAULT 'N/A',
  tiene_pc              ENUM('SI','NO') NOT NULL DEFAULT 'NO',
  tiene_internet        ENUM('SI','NO') NOT NULL DEFAULT 'NO',
  acepta_capacitacion   ENUM('SI','NO') NOT NULL DEFAULT 'NO',
  fecha_confirmacion    DATETIME NULL,
  aprobado              ENUM('PENDIENTE','SI','NO') NOT NULL DEFAULT 'PENDIENTE',
  fecha_registro        DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_postulante_lote FOREIGN KEY (lote_id) REFERENCES lotes(id)
) ENGINE=InnoDB;

-- ---------------------------------------------------------
-- ASISTENCIAS: 5 sesiones de capacitación + 2 días de OJT
-- Se generan automáticamente al registrar al postulante.
-- ---------------------------------------------------------
CREATE TABLE asistencias (
  id             INT AUTO_INCREMENT PRIMARY KEY,
  postulante_id  INT NOT NULL,
  tipo           ENUM('CAPACITACION','OJT') NOT NULL,
  sesion         TINYINT NOT NULL,
  asistio        TINYINT(1) NOT NULL DEFAULT 0,
  fecha_marcado  DATETIME NULL,
  CONSTRAINT fk_asistencia_postulante FOREIGN KEY (postulante_id) REFERENCES postulantes(id) ON DELETE CASCADE,
  UNIQUE KEY uniq_asistencia (postulante_id, tipo, sesion)
) ENGINE=InnoDB;

CREATE INDEX idx_postulante_dni ON postulantes(dni);
CREATE INDEX idx_postulante_lote ON postulantes(lote_id);
