sábado, 20 de abril de 2024

Entrada 8 - 20/04/24

Hora Inicio: 8 p.m

Hora Fin: 10 p.m

Horas Trabajadas: 2 horas

Modalidad: Virtual


Nos reunimos para terminar los últimos detalles del proyecto y poder terminar el documento escrito.

Teníamos una duda sobre que Id guardar en la bitácora cuando se hacía una inserción no exitosa por lo que decidimos preguntar en el grupo:


Una vez hecha la consulta se realizaron las modificaciones y el codigo quedo de la sigiente manera:
@inUserName VARCHAR(64) 
    , @inPassword VARCHAR(64)
, @inIP VARCHAR(64)
, @OutResulTCode INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRY
-- ejemplo de ejecucion del SP

ALTER PROCEDURE [dbo].[VerificarUsuario]

-- se hacen declaraciones
DECLARE @IdPostByUser INT;
-- se hacen inicializacion
    SET @OutResulTCode = 0;
SET @IdPostByUser = 0;
-- Buscamos si el usuario existe en la base de datos
    IF NOT EXISTS (
            SELECT 1
            FROM dbo.Usuario AS U
            WHERE U.Username = @inUserName COLLATE SQL_Latin1_General_CP1_CS_AS
        )
    BEGIN
SET @IdPostByUser = 1;
        SET @OutResulTCode = 50001; -- Código de error para usuario no encontrado
INSERT INTO dbo.BitacoraEvento(
                [IdTipoEvento]
, [Descripcion]
                , [IdPostByUser]
                , [PostInIP]
                , [PostTime]
            )
            VALUES (
                2
, ' Numero de intento:'
+' Codigo de error:' + CAST(@OutResulTCode AS VARCHAR)
, @IdPostByUser
, @inIP
                , GETDATE()
            );
RETURN;
    END;
    
ELSE IF NOT EXISTS (
        SELECT 1
        FROM dbo.Usuario AS U
        WHERE U.[Password] = @inPassword COLLATE SQL_Latin1_General_CP1_CS_AS
    )
BEGIN
SET @IdPostByUser = 1;
SET @OutResulTCode = 50002; -- Código de error para contraseña incorrecta
INSERT INTO dbo.BitacoraEvento(
                [IdTipoEvento]
, [Descripcion]
                , [IdPostByUser]
                , [PostInIP]
                , [PostTime]
            )
            VALUES (
                2
, ' Numero de intento:'
+' Codigo de error:' + CAST(@OutResulTCode AS VARCHAR)
, @IdPostByUser
, @inIP
                , GETDATE()
            );
RETURN;
END;
ELSE IF EXISTS (
SELECT 1
        FROM dbo.Usuario AS U
        WHERE U.Username = @inUserName COLLATE SQL_Latin1_General_CP1_CS_AS
AND U.[Password] = @inPassword COLLATE SQL_Latin1_General_CP1_CS_AS)
BEGIN
SELECT @IdPostByUser = U.id
FROM dbo.Usuario AS U 
WHERE U.[Username] = @inUserName 
-- Login exitoso: Registro en la bitácora
INSERT INTO dbo.BitacoraEvento(
[IdTipoEvento]
, [Descripcion]
, [IdPostByUser]
, [PostInIP]
, [PostTime]
)
VALUES (
1
,''
, @IdPostByUser
, @inIP
, GETDATE()
);
RETURN;
    END;
    END TRY
    BEGIN CATCH
        INSERT INTO dbo.DBError VALUES (
USER_NAME()
, ERROR_NUMBER()
, ERROR_STATE()
, ERROR_SEVERITY()
, ERROR_LINE()
, ERROR_PROCEDURE()
, ERROR_MESSAGE()
,GETDATE()
);
        -- Retorna un mensaje de error para el usuario
        SET @OutResulTCode=50008;  -- Codigo de error standar del profe para informar de un error capturado en el catch
    END CATCH
SET NOCOUNT OFF;
END


Finalmente, se eliminaron los datos del XML ya que teniamos cargados unos datos viejos y empezamos a realizar pruebas para asegurarnos que todo el codigo funcionara correctamente.

No hay comentarios.:

Publicar un comentario

Entrada 8 - 20/04/24

Hora Inicio: 8 p.m Hora Fin: 10 p.m Horas Trabajadas: 2 horas Modalidad: Virtual Nos reunimos para terminar los últimos detalles del proyect...