-- Seleccionar base de datos
USE seg_nexapps;
GO

-- Crear tabla modulos_permisos
DROP TABLE IF EXISTS dbo.modulos_permisos;
GO
CREATE TABLE dbo.modulos_permisos (
    id_permiso INT IDENTITY(1,1) PRIMARY KEY,
    codigo VARCHAR(50) NULL, -- código interno del permiso, ejemplo 'CREATE_USER'
    nombre VARCHAR(100) NULL, -- nombre visible, ejemplo 'Crear usuario'
    descripcion VARCHAR(255) NULL, -- descripción larga
    id_modulo INT NULL, -- módulo al que pertenece el permiso
    estado INT NULL DEFAULT (1),
    creado_por VARCHAR(100),
    fecha_hora_creado DATETIME NULL DEFAULT (GETDATE()),
    modificado_por VARCHAR(100),
    fecha_hora_modificado AS GETDATE()
);
GO


-- Tabla usuarios_roles_permisos_asignaciones
DROP TABLE IF EXISTS dbo.roles_permisos_asignaciones;
GO
CREATE TABLE dbo.roles_permisos_asignaciones (
    id_asignacion INT IDENTITY(1,1) PRIMARY KEY,
    id_rol INT NULL, -- rol que recibe el permiso
    id_permiso INT NULL, -- permiso que se asigna
    estado INT NULL DEFAULT (1),
    creado_por VARCHAR(100),
    fecha_hora_creado DATETIME NULL DEFAULT (GETDATE()),
    modificado_por VARCHAR(100),
    fecha_hora_modificado AS GETDATE()
);
GO


-- Tabla usuarios_permisos_asignaciones
DROP TABLE IF EXISTS dbo.usuarios_permisos_asignaciones;
GO
CREATE TABLE dbo.usuarios_permisos_asignaciones (
    id_asignacion INT IDENTITY(1,1) PRIMARY KEY,
    id_usuario INT NULL, -- usuario que recibe el permiso
    id_permiso INT NULL, -- permiso que se asigna
    estado INT NULL DEFAULT (1),
    creado_por VARCHAR(100),
    fecha_hora_creado DATETIME NULL DEFAULT (GETDATE()),
    modificado_por VARCHAR(100),
    fecha_hora_modificado AS GETDATE()
);
GO


-- Tabla usuarios_menus_asignaciones
DROP TABLE IF EXISTS dbo.usuarios_menus_asignaciones;
GO
CREATE TABLE dbo.usuarios_menus_asignaciones (
    id_asignacion INT IDENTITY(1,1) PRIMARY KEY,
    id_usuario INT NULL, -- usuario que recibe el permiso
    id_menu INT NULL, -- permiso que se asigna
    estado INT NULL DEFAULT (1),
    creado_por VARCHAR(100),
    fecha_hora_creado DATETIME NULL DEFAULT (GETDATE()),
    modificado_por VARCHAR(100),
    fecha_hora_modificado AS GETDATE()
);
GO