-- Seleccionar base de datos
USE testing_votaciones;
GO

DROP PROCEDURE IF EXISTS TJT.delete_tarjetas_propietarios_tipos;
GO
CREATE PROCEDURE TJT.delete_tarjetas_propietarios_tipos
    @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 TJT.tarjetas_propietarios_tipos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_propietario_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_propietarios_tipos
        WHERE id_tarjeta_propietario_tipo = @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 TJT.delete_tarjetas_propietarios;
GO
CREATE PROCEDURE TJT.delete_tarjetas_propietarios
    @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 TJT.tarjetas_propietarios
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_propietario = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_propietarios
        WHERE id_tarjeta_propietario = @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 TJT.delete_tarjetas_tipos;
GO
CREATE PROCEDURE TJT.delete_tarjetas_tipos
    @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 TJT.tarjetas_tipos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_tipos
        WHERE id_tarjeta_tipo = @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 TJT.delete_bancos;
GO
CREATE PROCEDURE TJT.delete_bancos
    @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 TJT.bancos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_banco = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.bancos
        WHERE id_banco = @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 TJT.delete_tarjetas;
GO
CREATE PROCEDURE TJT.delete_tarjetas
    @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 TJT.tarjetas
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas
        WHERE id_tarjeta = @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 TJT.delete_empresas_empleados;
GO
CREATE PROCEDURE TJT.delete_empresas_empleados
    @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 TJT.empresas_empleados
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_empresa_empleado = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.empresas_empleados
        WHERE id_empresa_empleado = @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 TJT.delete_empresas_departamentos;
GO
CREATE PROCEDURE TJT.delete_empresas_departamentos
    @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 TJT.empresas_departamentos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_empresa_departamento = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.empresas_departamentos
        WHERE id_empresa_departamento = @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 TJT.delete_tarjetas_beneficios;
GO
CREATE PROCEDURE TJT.delete_tarjetas_beneficios
    @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 TJT.tarjetas_beneficios
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_beneficio = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_beneficios
        WHERE id_tarjeta_beneficio = @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 TJT.delete_tarjetas_beneficios_asignaciones;
-- GO
-- CREATE PROCEDURE TJT.delete_tarjetas_beneficios_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 TJT.tarjetas_beneficios_asignaciones
--         SET estado = 3,
--             modificado_por = @varUsuario
--         WHERE id_tarjeta_beneficio_asignacion = @varPk;

--         SET @save = 1;
--         SET @result = 'Borrado lógico realizado correctamente';
--     END;
--     ELSE IF @varOpc = 2 -- Borrado físico
--     BEGIN
--         DELETE FROM TJT.tarjetas_beneficios_asignaciones
--         WHERE id_tarjeta_beneficio_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 TJT.delete_tarjetas_intereses;
GO
CREATE PROCEDURE TJT.delete_tarjetas_intereses
    @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 TJT.tarjetas_intereses
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_interes = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_intereses
        WHERE id_tarjeta_interes = @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 TJT.delete_tarjetas_intereses_asignaciones;
-- GO
-- CREATE PROCEDURE TJT.delete_tarjetas_intereses_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 TJT.tarjetas_intereses_asignaciones
--         SET estado = 3,
--             modificado_por = @varUsuario
--         WHERE id_tarjeta_interes_asignacion = @varPk;

--         SET @save = 1;
--         SET @result = 'Borrado lógico realizado correctamente';
--     END;
--     ELSE IF @varOpc = 2 -- Borrado físico
--     BEGIN
--         DELETE FROM TJT.tarjetas_intereses_asignaciones
--         WHERE id_tarjeta_interes_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 TJT.delete_cuentas;
GO
CREATE PROCEDURE TJT.delete_cuentas
    @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 TJT.cuentas
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_cuenta = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.cuentas
        WHERE id_cuenta = @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 TJT.delete_tarjetas_gastos_categorias;
GO
CREATE PROCEDURE TJT.delete_tarjetas_gastos_categorias
    @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 TJT.tarjetas_gastos_categorias
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_gasto_categoria = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_gastos_categorias
        WHERE id_tarjeta_gasto_categoria = @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 TJT.delete_tarjetas_gastos;
GO
CREATE PROCEDURE TJT.delete_tarjetas_gastos
    @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 TJT.tarjetas_gastos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_gasto = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_gastos
        WHERE id_tarjeta_gasto = @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 TJT.delete_cuentas_gastos_asignaciones;
GO
CREATE PROCEDURE TJT.delete_cuentas_gastos_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 TJT.cuentas_gastos_asignaciones
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_cuenta_gasto_asignacion = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.cuentas_gastos_asignaciones
        WHERE id_cuenta_gasto_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 TJT.delete_tarjetas_pagos;
GO
CREATE PROCEDURE TJT.delete_tarjetas_pagos
    @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 TJT.tarjetas_pagos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_tarjeta_pago = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.tarjetas_pagos
        WHERE id_tarjeta_pago = @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 TJT.delete_presupuestos_recipientes_tipos;
GO
CREATE PROCEDURE TJT.delete_presupuestos_recipientes_tipos
    @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 TJT.presupuestos_recipientes_tipos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_presupuesto_recipiente_tipo = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.presupuestos_recipientes_tipos
        WHERE id_presupuesto_recipiente_tipo = @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 TJT.delete_presupuestos;
GO
CREATE PROCEDURE TJT.delete_presupuestos
    @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 TJT.presupuestos
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_presupuesto = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.presupuestos
        WHERE id_presupuesto = @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 TJT.delete_backups_tipos;
-- GO
-- CREATE PROCEDURE TJT.delete_backups_tipos
--     @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 = 2 -- Solo borrado físico (esta tabla no tiene estado)
--     BEGIN
--         DELETE FROM TJT.backups_tipos
--         WHERE id_backup_tipo = @varPk;

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

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





DROP PROCEDURE IF EXISTS TJT.delete_backups;
GO
CREATE PROCEDURE TJT.delete_backups
    @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 TJT.backups
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_backup = @varPk;

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

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





DROP PROCEDURE IF EXISTS TJT.delete_aichat_mensajes;
GO
CREATE PROCEDURE TJT.delete_aichat_mensajes
    @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 TJT.aichat_mensajes
        SET estado = 3,
            modificado_por = @varUsuario
        WHERE id_mensaje = @varPk;

        SET @save = 1;
        SET @result = 'Borrado lógico realizado correctamente';
    END;
    ELSE IF @varOpc = 2 -- Borrado físico
    BEGIN
        DELETE FROM TJT.aichat_mensajes
        WHERE id_mensaje = @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
