-- Seleccionar base de datos
USE seg_nexapps;
GO

-- DROP PROCEDURE IF EXISTS dbo.delete_sistemas;
-- GO
-- CREATE PROCEDURE dbo.delete_sistemas
--     @varPk INT,
--     @varUsuario VARCHAR(100),
--     @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
-- AS
-- BEGIN
--     SET NOCOUNT ON;
--     DECLARE @result NVARCHAR(200), @save INT = 0;

--     IF @varOpc = 1 -- Lógico
--     BEGIN
--         UPDATE dbo.sistemas
--         SET estado = 3,
--             modificado_por = @varUsuario
--         WHERE id_sistema = @varPk;

--         SET @save = 1;
--         SET @result = 'Borrado lógico realizado correctamente';
--     END;
--     ELSE IF @varOpc = 2 -- Físico
--     BEGIN
--         DELETE FROM dbo.sistemas
--         WHERE id_sistema = @varPk;

--         SET @save = 1;
--         SET @result = 'Borrado físico realizado correctamente';
--     END;
--     ELSE
--     BEGIN
--         SET @result = 'Opción no válida';
--     END;

--     SELECT @save AS 'save', @result AS result;
-- END;
-- GO





-- DROP PROCEDURE IF EXISTS dbo.delete_sistemas_permisos;
-- GO
-- CREATE PROCEDURE dbo.delete_sistemas_permisos
--     @varPk INT,
--     @varUsuario VARCHAR(100),
--     @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
-- AS
-- BEGIN
--     SET NOCOUNT ON;
--     DECLARE @result NVARCHAR(200), @save INT = 0;

--     IF @varOpc = 1 -- Lógico
--     BEGIN
--         UPDATE dbo.sistemas_permisos
--         SET estado = 3,
--             modificado_por = @varUsuario
--         WHERE id_permiso = @varPk;

--         SET @save = 1;
--         SET @result = 'Borrado lógico realizado correctamente';
--     END;
--     ELSE IF @varOpc = 2 -- Físico
--     BEGIN
--         DELETE FROM dbo.sistemas_permisos
--         WHERE id_permiso = @varPk;

--         SET @save = 1;
--         SET @result = 'Borrado físico realizado correctamente';
--     END;
--     ELSE
--     BEGIN
--         SET @result = 'Opción no válida';
--     END;

--     SELECT @save AS 'save', @result AS result;
-- END;
-- GO





DROP PROCEDURE IF EXISTS dbo.delete_modulos;
GO
CREATE PROCEDURE dbo.delete_modulos
    @varPk INT,
    @varUsuario VARCHAR(100),
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE dbo.modulos
        SET estado = 3
            -- Aquí podría ir modificado_por si estuviera en modulos, pero la tabla no tiene el campo
        WHERE id_modulo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM dbo.modulos
        WHERE id_modulo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END;
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END;

    SELECT @save AS 'save', @result AS result;
END;
GO





DROP PROCEDURE IF EXISTS dbo.delete_modulos_permisos;
GO
CREATE PROCEDURE dbo.delete_modulos_permisos
    @varPk INT,
    @varUsuario VARCHAR(100),
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Lógico
    BEGIN
        UPDATE dbo.modulos_permisos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_permiso = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Físico
    BEGIN
        DELETE FROM dbo.modulos_permisos
        WHERE id_permiso = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END;
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END;

    SELECT @save AS 'save', @result AS result;
END;
GO





DROP PROCEDURE IF EXISTS dbo.delete_usuarios_permisos_asignaciones;
GO
CREATE PROCEDURE dbo.delete_usuarios_permisos_asignaciones
    @varPk INT,
    @varUsuario VARCHAR(100),
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE dbo.usuarios_permisos_asignaciones
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM dbo.usuarios_permisos_asignaciones
        WHERE id_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END;
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END;

    SELECT @save AS 'save', @result AS result;
END;
GO





DROP PROCEDURE IF EXISTS dbo.delete_usuarios_menus_asignaciones;
GO
CREATE PROCEDURE dbo.delete_usuarios_menus_asignaciones
    @varPk INT,
    @varUsuario VARCHAR(100),
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE dbo.usuarios_menus_asignaciones
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM dbo.usuarios_menus_asignaciones
        WHERE id_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END;
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END;

    SELECT @save AS 'save', @result AS result;
END;
GO





DROP PROCEDURE IF EXISTS dbo.delete_roles_permisos_asignaciones;
GO
CREATE PROCEDURE dbo.delete_roles_permisos_asignaciones
    @varPk INT,
    @varUsuario VARCHAR(100),
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @result NVARCHAR(200), @save INT = 0;

    IF @varOpc = 1 -- Borrado lógico
    BEGIN
        UPDATE dbo.roles_permisos_asignaciones
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM dbo.roles_permisos_asignaciones
        WHERE id_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado físico realizado correctamente';
    END;
    ELSE
    BEGIN
        SET @result = 'Opción no válida';
    END;

    SELECT @save AS 'save', @result AS result;
END;
GO

