public async Task ValidarTokenSms(string codigoConvite, string numeroCelular, string codigoToken) { var validarTokenSmsCommand = new ValidarTokenSmsCommand(codigoConvite, numeroCelular, codigoToken); await _bus.SendCommand(validarTokenSmsCommand); }
public async Task <bool> Handle(ValidarTokenSmsCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { NotifyValidationErrors(message); return(await Task.FromResult(false)); } try { var client = _httpAppService.CreateClient(_serviceManager.UrlVileve); var token = await _httpAppService.OnPost <Token, object>(client, message.RequestId, "v1/auth/login", new { usuario = _serviceManager.UserVileve, senha = _serviceManager.PasswordVileve }); if (token == null || string.IsNullOrWhiteSpace(token.AccessToken)) { await _bus.RaiseEvent(new DomainNotification(message.MessageType, "Usuário de integração não encontrado.", message)); return(await Task.FromResult(false)); } client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken); var validarToken = await _httpAppService.OnPost <ValidarToken, object>(client, message.RequestId, "v1/validacao-contato/validar-token", new { token = message.CodigoToken, numero_telefone = message.NumeroCelular }); if (validarToken.Valido.Equals(false)) { await _bus.RaiseEvent(new DomainNotification(message.MessageType, "Token inválido.", message)); return(await Task.FromResult(false)); } } catch (Exception e) { _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new { message.RequestId, e.Message })); await _bus.RaiseEvent(new DomainNotification(message.MessageType, "O sistema está momentaneamente indisponível, tente novamente mais tarde.", message)); return(await Task.FromResult(false)); } if (message.CodigoConvite.Equals("******")) { return(await Task.FromResult(true)); } var onboarding = _onboardingRepository.Find(o => o.CodigoConvite.Equals(message.CodigoConvite) && o.NumeroCelular.Equals(message.NumeroCelular)).FirstOrDefault(); if (onboarding != null) { if (onboarding.StatusOnboarding.Equals(StatusOnboarding.ValidacaoToken) || onboarding.StatusOnboarding.Equals(StatusOnboarding.ValidacaoEmail)) { return(await Task.FromResult(true)); } await _bus.RaiseEvent(new DomainNotification(message.MessageType, "Este código do convite e número de celular estão vinculados a outro usuário.", message)); return(await Task.FromResult(false)); } onboarding = new Onboarding(Guid.NewGuid()) { CodigoConvite = message.CodigoConvite, NumeroCelular = message.NumeroCelular, StatusOnboarding = StatusOnboarding.ValidacaoToken }; _onboardingRepository.Add(onboarding); if (Commit()) { } return(await Task.FromResult(true)); }