CREATE TABLE IF NOT EXISTS regiones (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS provincias (
  id INT AUTO_INCREMENT PRIMARY KEY,
  region_id INT NOT NULL,
  nombre VARCHAR(100) NOT NULL,
  ubigeo CHAR(4) NOT NULL,
  FOREIGN KEY (region_id) REFERENCES regiones(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS distritos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  provincia_id INT NOT NULL,
  nombre VARCHAR(100) NOT NULL,
  ubigeo CHAR(6) NOT NULL,
  FOREIGN KEY (provincia_id) REFERENCES provincias(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS configuracion_cargos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tipo_eleccion ENUM('municipal_provincial', 'municipal_distrital', 'regional') NOT NULL,
  region_id INT NULL,
  provincia_id INT NULL,
  distrito_id INT NULL,
  num_regidores INT DEFAULT 5, -- Default minimum
  num_consejeros INT DEFAULT 0,
  fecha_actualizacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  nota TEXT NULL,
  UNIQUE KEY `uniq_config` (tipo_eleccion, region_id, provincia_id, distrito_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS validaciones (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tipo_eleccion VARCHAR(50) NOT NULL,
  region_id INT NULL,
  provincia_id INT NULL,
  distrito_id INT NULL,
  fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  estado ENUM('APTO', 'OBSERVACIONES', 'NO_APTO') NOT NULL,
  resumen TEXT NULL,
  errores_json JSON NULL,
  observaciones_json JSON NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS candidatos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  validacion_id INT NOT NULL,
  nombres VARCHAR(255) NOT NULL,
  dni CHAR(8) NOT NULL,
  sexo ENUM('M', 'F') NOT NULL,
  fecha_nacimiento DATE NOT NULL,
  cargo VARCHAR(50) NOT NULL, -- ALCALDE, REGIDOR, GOBERNADOR, VICE, CONSEJERO
  orden_lista INT NOT NULL,
  FOREIGN KEY (validacion_id) REFERENCES validaciones(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS documentos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  validacion_id INT NOT NULL,
  candidato_id INT NULL,
  tipo VARCHAR(50) NOT NULL, -- DJHV, ACTA, TASA, OTRO
  filename VARCHAR(255) NOT NULL,
  filepath VARCHAR(255) NOT NULL,
  fecha_subida TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (validacion_id) REFERENCES validaciones(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Tabla de configuración general
CREATE TABLE IF NOT EXISTS settings (
  key_name VARCHAR(50) PRIMARY KEY,
  value_text TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO settings (key_name, value_text) VALUES 
('fecha_cierre_inscripcion', '2026-06-14'), -- Fecha estimada
('admin_password', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'); -- password: password (hash placeholder)
