USE votaciones
GO

-- Procedimiento para eliminar en catalogo_regiones
DROP PROCEDURE IF EXISTS CAT_delete_regiones;
GO
CREATE PROCEDURE CAT_delete_regiones
    @varPk INT,
    @varUsuario INT,
    @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 catalogo_regiones
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_region = @varPk;

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

-- Procedimiento para eliminar en catalogo_regiones_tipo
DROP PROCEDURE IF EXISTS CAT_delete_regiones_tipo;
GO
CREATE PROCEDURE CAT_delete_regiones_tipo
    @varPk INT,
    @varUsuario INT,
    @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 catalogo_regiones_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

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

-- Procedimiento para eliminar en partidos
DROP PROCEDURE IF EXISTS VOT_delete_partidos;
GO
CREATE PROCEDURE VOT_delete_partidos
    @varPk INT,
    @varUsuario INT,
    @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 partidos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_partido = @varPk;

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

-- Procedimiento para eliminar en movimientos
DROP PROCEDURE IF EXISTS VOT_delete_movimientos;
GO
CREATE PROCEDURE VOT_delete_movimientos
    @varPk INT,
    @varUsuario INT,
    @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 movimientos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_movimiento = @varPk;

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

-- Procedimiento para eliminar en candidatos
DROP PROCEDURE IF EXISTS VOT_delete_candidatos;
GO
CREATE PROCEDURE VOT_delete_candidatos
    @varPk INT,
    @varUsuario INT,
    @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 candidatos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_candidato = @varPk;

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

-- Procedimiento para eliminar en candidatos_tipo
DROP PROCEDURE IF EXISTS VOT_delete_candidatos_tipo;
GO
CREATE PROCEDURE VOT_delete_candidatos_tipo
    @varPk INT,
    @varUsuario INT,
    @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 candidatos_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

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

-- Procedimiento para eliminar en elecciones
DROP PROCEDURE IF EXISTS VOT_delete_elecciones;
GO
CREATE PROCEDURE VOT_delete_elecciones
    @varPk INT,
    @varUsuario INT,
    @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 elecciones
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_eleccion = @varPk;

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

-- Procedimiento para eliminar en elecciones_tipo
DROP PROCEDURE IF EXISTS VOT_delete_elecciones_tipo;
GO
CREATE PROCEDURE VOT_delete_elecciones_tipo
    @varPk INT,
    @varUsuario INT,
    @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 elecciones_tipo
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_tipo = @varPk;

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

-- Procedimiento para eliminar en elecciones_candidatos_x_region
DROP PROCEDURE IF EXISTS VOT_delete_elecciones_candidatos_x_region;
GO
CREATE PROCEDURE VOT_delete_elecciones_candidatos_x_region
    @varPk INT,
    @varUsuario INT,
    @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 elecciones_candidatos_x_region
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_configuracion = @varPk;

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

-- Procedimiento para eliminar en elecciones_proceso
DROP PROCEDURE IF EXISTS VOT_delete_elecciones_proceso;
GO
CREATE PROCEDURE VOT_delete_elecciones_proceso
    @varPk INT,
    @varUsuario INT,
    @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 elecciones_proceso
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_proceso = @varPk;

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

-- Procedimiento para eliminar en elecciones_proceso_acta
DROP PROCEDURE IF EXISTS VOT_delete_elecciones_proceso_acta;
GO
CREATE PROCEDURE VOT_delete_elecciones_proceso_acta
    @varPk INT,
    @varUsuario INT,
    @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 elecciones_proceso_acta
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_acta = @varPk;

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

-- Procedimiento para eliminar en catalogo_sexos
DROP PROCEDURE IF EXISTS CAT_delete_sexos;
GO
CREATE PROCEDURE CAT_delete_sexos
    @varPk INT,
    @varUsuario INT,
    @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 catalogo_sexos
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_sexo = @varPk;

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

-- Procedimiento para eliminar en catalogo_nacionalidades
DROP PROCEDURE IF EXISTS CAT_delete_nacionalidades;
GO
CREATE PROCEDURE CAT_delete_nacionalidades
    @varPk INT,
    @varUsuario INT,
    @varOpc INT -- 1 Borrado lógico, 2 Borrado físico -- 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 catalogo_nacionalidades
        SET estado = 3,
            modificado_por = @varUsuario,
            fecha_hora_modificado = GETDATE()
        WHERE pk_nacionalidad = @varPk;

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