BLL log in validation c#

136 views Asked by At

So my question is: Does my BLL validate my log-in, or do i put the validation on the form UI? Piece of code from my UI down below.

If so validated in the BLL layer, how do i do so?

private void ValidateForm(string username, string password)
        {
            var countdb = BLL.UsersBLL.VerifyDataBase();
            if (countdb >= 1)
            {
                var userdata = BLL.UsersBLL.VerifyUserData(username, password);

                if (userdata == 1)
                {
                    Entity.UsersEntity.UserSession.username = username;
                    var mainwindow = Application.Current.MainWindow as MainWindow;
                    main main = new main();
                    mainwindow.Close();
                    main.Show();
                    main.username.Content = Entity.UsersEntity.UserSession.username;
                }
                else if (userdata <= 0)
                {
                    ErrorHandle.Content = "Verifique o usuário ou a senha.";
                }
            }
            else
            {
                MessageBox.Show("O seu banco de dados está vazio! Por favor registrar um usuário.");
                register register = new register();
                register.ShowDialog();
            }
        } 
1

There are 1 answers

0
Fabio On

Move not UI related logic into dedicated business logic type

public class UserLogin
{
    public string Name { get; set; }
    public string Password { get; set; }
}

public class VerifyUserResult
{
    public static VerifyUserResult Success() => new VerifyUserResult();
    public static VerifyUserResult Fail(string message) => new VerifyUserResult(message);
    public string Message { get; }
    public bool Success => string.IsNullOrEmpty(Message);
  
    private VerifyUserResult(string message) => Message = message;
}

public class VerifyUser
{
    public VerifyUserResult Invoke(UserLogin user)
    {
        if (BLL.UsersBLL.VerifyDataBase() < 1)
        {
            return VerifyUserResult.Fail("Some message");
        }

        if (BLL.UsersBLL.VerifyUserData(username, password) != 1)
        {
            return VerifyUserResult.Fail("Another message");
        }

        return VerifyUserResult.Success();
    }
}

Then in UI code you just call it and make next decision based on the result