public async Task <IActionResult> OnPostAsync()
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var validDoc = true;

                    // Validar CPF
                    if (!_validacoes.IsValidCPF(Input.CPF))
                    {
                        ModelState.AddModelError("CPF", "Este CPF está incorreto.");
                        _logger.LogWarning("Este CPF está incorreto.");
                        validDoc = false;
                    }
                    if (_context.Users.Any(c => c.CPF == Input.CPF))
                    {
                        ModelState.AddModelError("CPF", "Este CPF já está sendo utilizado.");
                        _logger.LogWarning("Este CPF já está sendo utilizado.");
                        validDoc = false;
                    }

                    // Validar RG
                    if (!_validacoes.isValidRG(Input.RG))
                    {
                        ModelState.AddModelError("RG", "Este RG está incorreto.");
                        _logger.LogWarning("Este RG está incorreto.");
                        validDoc = false;
                    }
                    if (_context.Users.Any(c => c.RG == Input.RG))
                    {
                        ModelState.AddModelError("RG", "Este RG já está sendo utilizado.");
                        _logger.LogWarning("Este RG já está sendo utilizado.");
                        validDoc = false;
                    }
                    // Se algum dos documentos se encontrar em situação irregular irá abortar o processo
                    if (!validDoc)
                    {
                        return(Page());
                    }

                    var MyCultureInfo = new CultureInfo("pt-BR");

                    // Seeds an admin user.
                    var user = new ApplicationUser
                    {
                        Nome               = Input.Nome,
                        Sobrenome          = Input.Sobrenome,
                        AccessFailedCount  = 0,
                        Email              = Input.Email,
                        EmailConfirmed     = true,
                        LockoutEnabled     = true,
                        NormalizedEmail    = Input.Email.ToUpperInvariant(),
                        NormalizedUserName = Input.Email.ToUpperInvariant(),
                        TwoFactorEnabled   = false,
                        UserName           = Input.Email,
                        Situacao           = "Ativo",
                        HorarioEntrada     = Input.HorarioEntrada,
                        HorarioSaida       = Input.HorarioSaida,
                        CPF            = Input.CPF,
                        RG             = Input.RG,
                        DataNascimento = DateTime.Parse(Input.DataNascimento, MyCultureInfo)
                    };

                    var password = HelperExtensions.GeneratePassword(3, 2, 2, 1);

                    var result = await _userManager.CreateAsync(user, password);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                        await _emailSender.SendEmailConfirmationAsync(Input.Email, password, callbackUrl);

                        var adminUser = await _userManager.FindByNameAsync(user.UserName);

                        // Assigns the administrator role.
                        await _userManager.AddToRoleAsync(adminUser, "user");

                        // Assigns claims.
                        var claims = new List <Claim> {
                            new Claim(type: JwtClaimTypes.GivenName, value: user.Nome),
                            new Claim(type: JwtClaimTypes.FamilyName, value: user.Sobrenome),
                            new Claim(type: JwtClaimTypes.BirthDate, value: user.DataNascimento.ToString("dd/MM/yyyy"))
                        };
                        await _userManager.AddClaimsAsync(adminUser, claims);

                        return(RedirectToPage("../Usuarios"));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, ex.Message);
                return(Page());
            }
            return(Page());
        }