-- Tablas para Registros de Visitas (activas) e Historial (finalizadas)

CREATE TABLE IF NOT EXISTS visitas_registros (
  id_registro INT AUTO_INCREMENT PRIMARY KEY,
  id_dependencia INT NOT NULL,
  id_empresa INT NOT NULL,
  rut_visita VARCHAR(20) NOT NULL,
  nombre_visita VARCHAR(150) NOT NULL,
  recibe_nombre VARCHAR(150) DEFAULT NULL,
  id_piso INT DEFAULT NULL,
  id_departamento INT DEFAULT NULL,
  fecha_ingreso DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  KEY idx_reg_dependencia_fecha (id_dependencia, fecha_ingreso),
  CONSTRAINT fk_visreg_dep FOREIGN KEY (id_dependencia) REFERENCES dependencia(id_dependencia),
  CONSTRAINT fk_visreg_emp FOREIGN KEY (id_empresa) REFERENCES cliente_empresas(id_empresa),
  CONSTRAINT fk_visreg_piso FOREIGN KEY (id_piso) REFERENCES controles_pisos(id_piso),
  CONSTRAINT fk_visreg_depto FOREIGN KEY (id_departamento) REFERENCES controles_departamentos(id_departamento)
);

CREATE TABLE IF NOT EXISTS visitas_historial (
  id_historial INT AUTO_INCREMENT PRIMARY KEY,
  id_registro INT DEFAULT NULL,
  id_dependencia INT NOT NULL,
  id_empresa INT NOT NULL,
  rut_visita VARCHAR(20) NOT NULL,
  nombre_visita VARCHAR(150) NOT NULL,
  recibe_nombre VARCHAR(150) DEFAULT NULL,
  id_piso INT DEFAULT NULL,
  id_departamento INT DEFAULT NULL,
  fecha_ingreso DATETIME NOT NULL,
  fecha_salida DATETIME NOT NULL,
  comentario TEXT DEFAULT NULL,
  KEY idx_his_dependencia_salida (id_dependencia, fecha_salida),
  CONSTRAINT fk_vishis_dep FOREIGN KEY (id_dependencia) REFERENCES dependencia(id_dependencia),
  CONSTRAINT fk_vishis_emp FOREIGN KEY (id_empresa) REFERENCES cliente_empresas(id_empresa),
  CONSTRAINT fk_vishis_reg FOREIGN KEY (id_registro) REFERENCES visitas_registros(id_registro) ON DELETE SET NULL,
  CONSTRAINT fk_vishis_piso FOREIGN KEY (id_piso) REFERENCES controles_pisos(id_piso),
  CONSTRAINT fk_vishis_depto FOREIGN KEY (id_departamento) REFERENCES controles_departamentos(id_departamento)
);
