Modificacion del SP del R1 e inicio del R2(Error Surgido)

 Hoy le envié al profe el SP realizado del Log in, él me sugirió algunas recomendaciones de cambiar, por ejemplo, la estructura y líneas de código adicionales que no hacían falta. Esto me conllevó a crear otro SP que me ayudase a identificar el tipo de error que generaba al ingresar erróneamente los datos. Un error que surgió fue que Python por su lenguaje, tiene dificultades para leer los OUTPUTS, es por eso que se utilizó esta instrucción:



Esta ayuda a la lectura del OUTPUT, el unico inconveniente fue de que necesitaba codigo incrustado, por lo que se tuvo que utilizar con autorizacion del profesor




Por otro lado también se trabajó en el front-end del R2 que consiste principalmente en la ventana Home del usuario. Las horas trabajadas el día de fueron aproximadamente 3 horas y 47 min, iniciando a las 9 p.m y finalizando a las 11:47 p.m

Acá se muestra el SP agregado y el SP modificado nuevamente:

SP integrado

CREATE PROCEDURE dbo.procErroresLogin
   @inCodigo INT
   ,@outResultCode INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON
    SET @outResultCode = 0

    SELECT e.Descripcion
    FROM dbo.Error AS e
    WHERE (e.Codigo = @inCodigo)
END

SP modificado

CREATE PROCEDURE dbo.procLogin
    @inUsername VARCHAR(64)  --Username del usuario
    ,@inPassword VARCHAR(64)  --Password del usuario
    ,@inPostInIP VARCHAR(64)  --IP de origen del login
    ,@outResultCode   INT OUTPUT
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @IdUsuario INT
    DECLARE @PassUsuario VARCHAR(64)
    DECLARE @CountIntentos INT
    DECLARE @IdTipoEvento INT
    DECLARE @DescripcionEvento VARCHAR(256)
    SET @outResultCode = 0

    BEGIN TRY

        SELECT @IdUsuario = u.Id
        FROM dbo.Usuario AS u
        WHERE (u.Username = @inUsername)

        IF (@IdUsuario IS NULL) --Comprueba que el usuario exista
        BEGIN
            SET @outResultCode = 50001
            RETURN
        END

        SELECT @CountIntentos = COUNT(b.Id)
        FROM dbo.BitacoraEvento AS b
        WHERE (b.IdTipoEvento = 2)
            AND (b.IdPostByUser = @IdUsuario)
            AND (b.PostTime >= DATEADD(MINUTE, -20, GETDATE()))

        IF (@CountIntentos > 5) --Comprueba que no haya pasado los 5 intentos
        BEGIN
            SET @outResultCode = 50003
            SET @IdTipoEvento = 3
            SET @DescripcionEvento = ''
        END
        ELSE
        BEGIN
            SELECT @PassUsuario = u.Password
            FROM dbo.Usuario AS u
            WHERE (u.Id = @IdUsuario)
                AND (u.Password = @inPassword)

            IF (@PassUsuario IS NULL) --Comprueba los intentos de sesion de fallo contraseña
            BEGIN
                SET @outResultCode = 50002
                SET @IdTipoEvento = 2
                SET @DescripcionEvento = 'Intento: ' + CAST((@CountIntentos + 1) AS VARCHAR) + ' Error: 50002'
            END
            ELSE
            BEGIN
                SET @outResultCode = 0
                SET @IdTipoEvento = 1
                SET @DescripcionEvento = 'Exitoso'
            END
        END

        BEGIN TRANSACTION

            INSERT INTO dbo.BitacoraEvento (
                IdTipoEvento
                ,Descripcion
                ,IdPostByUser
                ,PostInIP
                ,PostTime
            )
            VALUES (
                @IdTipoEvento
                ,@DescripcionEvento
                ,@IdUsuario
                ,@inPostInIP
                ,GETDATE()
            )

        COMMIT TRANSACTION

    END TRY
    BEGIN CATCH
        INSERT INTO dbo.DBError (
            UserName
            ,Number
            ,State
            ,Severity
            ,Line
            ,[Procedure]
            ,Message
            ,DateTime
        )
        VALUES (
            @inUsername
            ,ERROR_NUMBER()
            ,ERROR_STATE()
            ,ERROR_SEVERITY()
            ,ERROR_LINE()
            ,ERROR_PROCEDURE()
            ,ERROR_MESSAGE()
            ,GETDATE()
        )

        SET @outResultCode = 50008
    END CATCH
END

Comments

Popular posts from this blog

Modificacion del ingreso de datos y finaiizacion de documentacion

Avance en el R3 Insertar empleado

SP insertar empleado terminado