public async Task ValidarSelfie(string codigoConvite, string numeroCelular, string fotoBase64) { var validarSelfieCommand = new ValidarSelfieCommand(codigoConvite, numeroCelular, fotoBase64); await _bus.SendCommand(validarSelfieCommand); }
public async Task <bool> Handle(ValidarSelfieCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { NotifyValidationErrors(message); return(await Task.FromResult(false)); } var onboarding = _onboardingRepository.Find(o => o.CodigoConvite.Equals(message.CodigoConvite) && o.NumeroCelular.Equals(message.NumeroCelular)).FirstOrDefault(); if (onboarding == null) { await _bus.RaiseEvent(new DomainNotification(message.MessageType, "Código do convite ou número de celular inválidos.", 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); string apelido; string nomeSocial; if (onboarding.Consultor.Representante.NomeCompleto.IndexOf(" ", StringComparison.Ordinal).Equals(-1)) { apelido = onboarding.Consultor.Representante.NomeCompleto; nomeSocial = onboarding.Consultor.Representante.NomeCompleto; } else { apelido = onboarding.Consultor.Representante.NomeCompleto.Substring(0, onboarding.Consultor.Representante.NomeCompleto.IndexOf(" ", StringComparison.Ordinal)); nomeSocial = onboarding.Consultor.Representante.NomeCompleto.Substring(0, onboarding.Consultor.Representante.NomeCompleto.IndexOf(" ", StringComparison.Ordinal)); } var pessoaJuridica = await _httpAppService.OnPost <PessoaJuridica, object>(client, message.RequestId, $"v1/consultor/cadastrar/pessoajuridica/{message.CodigoConvite}", new { razao_social = onboarding.Consultor.RazaoSocial, nome_fantasia = onboarding.Consultor.NomeFantasia, data_fundacao = "2015-01-18", codigo_nacionalidade = "1", cnpj = onboarding.Consultor.Cnpj, codigo_ramo_atividade = 1, inscricao_municipal = onboarding.Consultor.InscricaoMunicipal, inscricao_estadual = onboarding.Consultor.InscricaoEstadual, pessoa = new { nome_completo = onboarding.Consultor.Representante.NomeCompleto, apelido, nome_social = nomeSocial, codigo_sexo = onboarding.Consultor.Representante.Sexo, codigo_estado_civil = onboarding.Consultor.Representante.EstadoCivil, data_nascimento = "1962-01-13", codigo_nacionalidade = onboarding.Consultor.Representante.Nacionalidade, cpf = onboarding.Consultor.Representante.Cpf, autenticacao = new { usuario = onboarding.Email, senha = onboarding.Senha, codigo_perfil = 17 }, emails = onboarding.Consultor.Representante.Emails.Select(item => new { tipo_email = item.TipoEmail, email = item.Email, principal = 1 }), telefones = onboarding.Consultor.Representante.Telefones.Select(item => new { tipo_telefone = item.TipoTelefone, ddd = item.Numero.Replace("+55", "").Substring(0, 2), telefone = item.Numero.Replace("+55", "").Substring(2), principal = 1 }), enderecos = onboarding.Consultor.Enderecos.Select(item => new { tipo_endereco = item.TipoEndereco, rua = item.Logradouro, numero = item.Numero, complemento = item.Complemento, bairro = item.Bairro, cidade = item.Cidade, sigla_estado = item.Estado, cep = item.Cep.Replace("-", ""), principal = item.Principal }), dados_bancarios = new List <object> { new { codigo_banco = onboarding.Consultor.DadosBancarios.CodigoBanco, agencia = onboarding.Consultor.DadosBancarios.Agencia, conta = $"{onboarding.Consultor.DadosBancarios.ContaSemDigito}{onboarding.Consultor.DadosBancarios.Digito}", codigo_operacao = 1, cpf_favorecido = onboarding.Consultor.Representante.Cpf, favorecido_fisica_juridica = "J", principal = 1 } } } }); if (pessoaJuridica.Sucesso) { try { if (!string.IsNullOrWhiteSpace(message.FotoBase64)) { var selfie = await _httpAppService.OnPost <object, object>(client, message.RequestId, "v1/pessoa/envio/selfie", new { codigo_pessoa = pessoaJuridica.CodigoPessoa, arquivo_base64 = message.FotoBase64 }); } } catch (Exception e) { _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new { message.RequestId, e.Message })); } try { if (!string.IsNullOrWhiteSpace(onboarding.Consultor.Representante.DocumentoFrenteBase64) && !string.IsNullOrWhiteSpace(onboarding.Consultor.Representante.DocumentoVersoBase64)) { var documentoIdentificacao = await _httpAppService.OnPost <object, object>(client, message.RequestId, "v1/pessoa/envio/documento-identificacao", new { codigo_pessoa = pessoaJuridica.CodigoPessoa, frente = new { arquivo_base64 = onboarding.Consultor.Representante.DocumentoFrenteBase64 }, verso = new { arquivo_base64 = onboarding.Consultor.Representante.DocumentoVersoBase64 } }); } } catch (Exception e) { _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new { message.RequestId, e.Message })); } // try // { // foreach (var item in onboarding.Consultor.Enderecos) // { // await _httpAppService.OnPost<object, object>(client, message.RequestId, "v1/pessoa/envio/comprovante-endereco", new // { // codigo_pessoa = 0, // arquivo_base64 = item.ComprovanteBase64 // }); // } // } // catch (Exception e) // { // _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new // { // message.RequestId, // e.Message // })); // } try { if (!string.IsNullOrWhiteSpace(onboarding.Consultor.ContratoSocialBase64)) { var contratoSocial = await _httpAppService.OnPost <object, object>(client, message.RequestId, "v1/pessoa/envio/contrato-social", new { codigo_pessoa = pessoaJuridica.CodigoPessoa, tipo_contrato = "contrato", arquivo_base64 = onboarding.Consultor.ContratoSocialBase64 }); } } catch (Exception e) { _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new { message.RequestId, e.Message })); } try { if (!string.IsNullOrWhiteSpace(onboarding.Consultor.UltimaAlteracaoBase64)) { var alteracaoContratoSocial = await _httpAppService.OnPost <object, object>(client, message.RequestId, "v1/pessoa/envio/contrato-social", new { codigo_pessoa = pessoaJuridica.CodigoPessoa, tipo_contrato = "alteracao", arquivo_base64 = onboarding.Consultor.UltimaAlteracaoBase64 }); } } catch (Exception e) { _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new { message.RequestId, e.Message })); } } } catch (Exception e) { _logger.Log(LogLevel.Error, e, JsonSerializer.Serialize(new { message.RequestId, e.Message })); var errors = new List <string>(); try { var responseError = JsonConvert.DeserializeObject <ResponseError>(e.Message); errors.AddRange(responseError.Erros); } catch (Exception) { // ignored } if (errors.Any()) { foreach (var error in errors) { await _bus.RaiseEvent(new DomainNotification(message.MessageType, error, message)); } } else { await _bus.RaiseEvent(new DomainNotification(message.MessageType, "O sistema está momentaneamente indisponível, tente novamente mais tarde.", message)); } return(await Task.FromResult(false)); } onboarding.StatusOnboarding = StatusOnboarding.Finalizado; _onboardingRepository.Update(onboarding); if (Commit()) { } return(await Task.FromResult(true)); }