-- Categorías de permisos para roles
CREATE TABLE IF NOT EXISTS rol_categorias (
    id_categoria INT AUTO_INCREMENT PRIMARY KEY,
    id_dependencia INT NULL,
    nombre_categoria VARCHAR(120) NOT NULL,
    perm_crear_usuario TINYINT(1) NOT NULL DEFAULT 0,
    perm_controlar_controles TINYINT(1) NOT NULL DEFAULT 0,
    perm_crear_empresa TINYINT(1) NOT NULL DEFAULT 0,
    perm_crear_visita TINYINT(1) NOT NULL DEFAULT 0,
    perm_registros_visitas TINYINT(1) NOT NULL DEFAULT 0,
    perm_historial_visitas TINYINT(1) NOT NULL DEFAULT 0,
    creado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    CONSTRAINT fk_categoria_dependencia FOREIGN KEY (id_dependencia)
        REFERENCES dependencia(id_dependencia)
        ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Columnas nuevas para permisos de visitas
ALTER TABLE rol_categorias
    ADD COLUMN IF NOT EXISTS perm_registros_visitas TINYINT(1) NOT NULL DEFAULT 0,
    ADD COLUMN IF NOT EXISTS perm_historial_visitas TINYINT(1) NOT NULL DEFAULT 0;

-- Relación entre roles y categorías (en caso de que no exista la columna)
ALTER TABLE roles_cat
    ADD COLUMN IF NOT EXISTS id_categoria INT NULL,
    ADD CONSTRAINT fk_roles_cat_categoria FOREIGN KEY (id_categoria)
        REFERENCES rol_categorias(id_categoria)
        ON DELETE SET NULL;

-- Pisos por dependencia
CREATE TABLE IF NOT EXISTS controles_pisos (
    id_piso INT AUTO_INCREMENT PRIMARY KEY,
    id_dependencia INT NOT NULL,
    numero_piso VARCHAR(10) NOT NULL,
    area VARCHAR(120) NOT NULL,
    creado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uq_piso_dependencia (id_dependencia, numero_piso),
    CONSTRAINT fk_pisos_dependencia FOREIGN KEY (id_dependencia)
        REFERENCES dependencia(id_dependencia)
        ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Departamentos por dependencia
CREATE TABLE IF NOT EXISTS controles_departamentos (
    id_departamento INT AUTO_INCREMENT PRIMARY KEY,
    id_dependencia INT NOT NULL,
    nombre_departamento VARCHAR(120) NOT NULL,
    creado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    actualizado_en TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uq_departamento_dependencia (id_dependencia, nombre_departamento),
    CONSTRAINT fk_departamentos_dependencia FOREIGN KEY (id_dependencia)
        REFERENCES dependencia(id_dependencia)
        ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
