lknknm / REZ-menu-app

REZ is a simple Restaurant Menu Application for a fictional restaurant.
BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

Validar o input da criação de contas #35

Closed andavgc closed 1 year ago

andavgc commented 1 year ago

Os inputs do nome e CPF das novas contas criadas devem passar por uma validação previa antes de serem aceitas

lknknm commented 1 year ago

Conforme o commit 1842b72, adicionei validação de inputs de Nome e CPF para a criação dos usuários. O botão de adicionar conta ficará desativado até que o usuário preencha as informações de forma correta nos campos.

Para isso, implementei os seguintes métodos no AddAccountModal.xaml.cs:


        //----------------------------------------------------------------------------
        private void InputsValidation()
        {
            dialog.IsPrimaryButtonEnabled = false;
            if (IsNameInputValid == true && IsCPFInputValid == true)
                dialog.IsPrimaryButtonEnabled = true;
            else
                dialog.IsPrimaryButtonEnabled = false;
        }

        //----------------------------------------------------------------------------
        // This is a workaround but it's good for now.
        // At least we can have a small input validation and can improve upon this.
        // Maybe later we can add the INotifyPropertyChanged interface.
        private void InputName_TextChange(object sender, TextChangedEventArgs e)
        {
            Regex regex = new Regex("^[a-zA-Zа]{1,20}$");
            if (String.IsNullOrEmpty(Name.Text))
            {
                ErrorMessage_Name.Visibility = Visibility.Visible;
                ErrorMessage_Name.Text = Name.Text + "Por favor digite um nome.";
                IsNameInputValid = false;
            }
            else if (!regex.IsMatch(Name.Text))
            {
                ErrorMessage_Name.Visibility = Visibility.Visible;
                ErrorMessage_Name.Text = Name.Text + " não é um nome válido. Por favor insira outro nome.";
                IsNameInputValid = false;
            }
            else 
            { 
                ErrorMessage_Name.Visibility = Visibility.Collapsed;
                IsNameInputValid = true;
            }
            InputsValidation();
        }

        //----------------------------------------------------------------------------
        // This is a workaround but it's good for now.
        // At least we can have a small input validation and can improve upon this.
        // Maybe later we can add the INotifyPropertyChanged interface.
        private void CPFNumber_TextChange(object sender, TextChangedEventArgs e)
        {
            Regex regex = new Regex("^\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}$");
            if (String.IsNullOrEmpty(CPF.Text))
            {
                ErrorMessage_CPF.Visibility = Visibility.Visible;
                ErrorMessage_CPF.Text = CPF.Text + "Por favor digite um número de CPF.";
                IsCPFInputValid = false;
            }
            else if (!regex.IsMatch(CPF.Text))
            {
                ErrorMessage_CPF.Visibility = Visibility.Visible;
                ErrorMessage_CPF.Text = CPF.Text + " não é um CPF válido. Por favor insira um número de CPF.";
                IsCPFInputValid = false;
            }
            else 
            { 
                ErrorMessage_CPF.Visibility = Visibility.Collapsed;
                IsCPFInputValid = true;
            }
            InputsValidation();
        }

No momento isso é mais um workaround, podemos implementar validações mais robustas depois, mas pelo menos isso pode previnir erros (intencionais ou não) do usuário.