public RaiseResult Raise(EnfileirarEvent domainEvent) { RaiseResult result = new RaiseResult(); var pedido = domainEvent.Pedido; try { Task.Run(async() => { var sku = pedido.Skus.FirstOrDefault(); var inserirCompraParceiroRequest = new Messages.InserirCompraParceiroRequest() { CompraParceiro = new Dtos.CompraParceiroDto() { IdCompra = pedido.IdCompra, IdCompraEntregaSku = sku.IdCompraEntregaSku, IdProdutoParceiro = sku.IdProdutoParceiro, EmailEnvioAceito = pedido.Cliente.EmailEnvioAceito, EmailEnvioAtivacao = pedido.Cliente.EmailEnvioAtivacao, DataEnvioAceite = DateTime.Now, DataStatusAceite = DateTime.Now, StatusAceite = Convert.ToInt32(true).ToString(), DataInclusao = DateTime.Now } }; var inserirCompraParceiroResponse = await this._lojaHttpRepository.InserirCompraParceiro(inserirCompraParceiroRequest); result.IsValid = inserirCompraParceiroResponse.Valido; if (!result.IsValid) { result.Mensagem = new EventMessage { Content = "Não foi possível enfileirar pedido.", Type = MessageType.BusinessError }; } }).GetAwaiter().GetResult(); } catch (Exception ex) { result.IsValid = false; result.Mensagem = new EventMessage { Content = ex.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }
public RaiseResult Raise(AlterarStatusAceiteEvent domainEvent) { RaiseResult result = new RaiseResult(); try { Task.Run(async() => { var alterar = await _compraParceiroRepository.AlterarStatusAceiteAsync(domainEvent.Compra.Map()); }).GetAwaiter().GetResult(); result.IsValid = true; } catch (Exception ex) { result.IsValid = false; result.Mensagem = new EventMessage { Content = ex.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }
public RaiseResult Raise(ObterUltimaEvent domainEvent) { RaiseResult result = new RaiseResult(); try { Task.Run(async() => { domainEvent.Compra = await _compraParceiroRepository.ObterUltimaRecente(); }).GetAwaiter().GetResult(); result.IsValid = true; } catch (Exception ex) { result.IsValid = false; result.Mensagem = new EventMessage { Content = ex.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }
public RaiseResult Raise(EnviarCodigoClienteEvent domainEvent) { RaiseResult result = new RaiseResult(); var pedido = domainEvent.Pedido; try { Task.Run(async() => { var enviarEmailsResult = new List <bool>(); var emailTipoCodigoAtivacao = await ObterDadosConfiguracao("EmailTipoCodigoAtivacaoBHN"); var skusAgrupados = pedido.Skus.GroupBy(x => x.IdSku); foreach (var sku in skusAgrupados) { var compraEntregaSkus = pedido.Skus.Where(x => x.IdSku == sku.Key); var enviarEmailRequest = pedido.Map(compraEntregaSkus); enviarEmailRequest.Email.IdEmailTipo = int.Parse(emailTipoCodigoAtivacao); var enviarEmailResponse = await _utilitarioHttpRepository.EnviarEmailOffline(enviarEmailRequest); if (enviarEmailResponse.Valido) { foreach (var item in compraEntregaSkus) { var alterarStatusAtivacaoRequest = new Messages.AlterarStatusAtivacaoRequest() { CompraAtivacao = new Dtos.AlterarStatusAtivacaoDto() { IdCompra = pedido.IdCompra, IdCompraEntregaSku = item.IdCompraEntregaSku, DataEnvioAtivacao = DateTime.Now } }; var alterarStatusAtivacaoResponse = await this._lojaHttpRepository.AlterarStatusAtivacao(alterarStatusAtivacaoRequest); } } enviarEmailsResult.Add(enviarEmailResponse.Valido); } result.IsValid = enviarEmailsResult.All(e => e == true); if (!result.IsValid) { result.Mensagem = new EventMessage { Content = "Não foi possível enviar código pedido p/cliente.", Type = MessageType.BusinessError }; } }).GetAwaiter().GetResult(); } catch (Exception ex) { result.IsValid = false; result.Mensagem = new EventMessage { Content = ex.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }
public RaiseResult Raise(IntegrarERPEvent domainEvent) { RaiseResult result = new RaiseResult(); var pedido = domainEvent.Pedido; try { Task.Run(async() => { var codigoUnidadeNegocio = await ObterDadosConfiguracao("CodUnidadeNegocio"); var sku = pedido.Skus.FirstOrDefault(); var enviarItemVirtualRequest = new Erp.Messages.EnviarItemVirtualRequest() { ItemVirtual = new Erp.Dtos.ItemEntradaVirtualDto() { GerencialId = sku.GerencialId, IdUnidadeNegocio = Convert.ToInt32(codigoUnidadeNegocio), Sequencial = sku.Sequencial, Usuario = "servicos-integracaoparceiro" } }; var enviarItemVirtualResponse = await this._erpHttpRepository.EnviarItemVirtual(enviarItemVirtualRequest); var alterarStatusERPRequest = new Messages.AlterarStatusERPRequest() { CompraERP = new Dtos.CompraERPDto() { TentativasIntegracaoERP = !enviarItemVirtualResponse.Valido ? sku.TentativasIntegracaoERP + 1 : sku.TentativasIntegracaoERP, IdCompra = pedido.IdCompra, IdCompraEntregaSku = sku.IdCompraEntregaSku, SequencialId = sku.Sequencial, StatusIntegracaoERP = (Convert.ToInt16(enviarItemVirtualResponse.Valido)).ToString(), LogRetornoERP = !enviarItemVirtualResponse.Valido ? String.Join(" | ", enviarItemVirtualResponse.Mensagens.Select(x => x.Conteudo)) : string.Empty, DataIntegracaoERP = DateTime.Now, GerencialId = sku.GerencialId } }; var alterarStatusERPResponse = await this._lojaHttpRepository.AlterarStatusERP(alterarStatusERPRequest); result.IsValid = enviarItemVirtualResponse.Valido && alterarStatusERPResponse.Valido; if (!result.IsValid) { result.Mensagem = new EventMessage { Content = "Não foi possível integrar ERP.", Type = MessageType.BusinessError }; } }).GetAwaiter().GetResult(); } catch (Exception ex) { result.IsValid = false; result.Mensagem = new EventMessage { Content = ex.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }
public RaiseResult Raise(IntegrarParceiroEvent domainEvent) { RaiseResult result = new RaiseResult(); var pedido = domainEvent.Pedido; try { Task.Run(async() => { var sku = pedido.Skus.FirstOrDefault(); var gerarCodigoRequest = new Parceiro.Messages.GerarCodigoRequest() { GerarEGift = new Parceiro.Dtos.GerarEGiftDto() { ClienteId = sku.ClienteId, Hash = sku.Hash, NumeroPedido = pedido.IdCompra.ToString().PadLeft(12, '0'), RequisicaoId = sku.RequisicaoId, SKUParceiro = sku.SkuParceiro, TentativasAnteriores = sku.TentativasIntegracao, GerarCodigoAtivacao = (sku.Tipo == Convert.ToInt32(true)), Preco = sku.Preco } }; var gerarCodigoResponse = await this._parceiroHttpRepository.GerarCodigo(gerarCodigoRequest); var alterarStatusParceiroRequest = new Messages.AlterarStatusParceiroRequest() { CompraParceiro = new Dtos.AlterarStatusParceiroDto() { Hash = gerarCodigoResponse.Hash, TentativasIntegracao = !gerarCodigoResponse.Valido ? sku.TentativasIntegracao + 1 : sku.TentativasIntegracao, Ativacao = gerarCodigoResponse.Ativacao, ClienteId = gerarCodigoResponse.ClienteId, IdCompra = pedido.IdCompra, IdCompraEntregaSku = sku.IdCompraEntregaSku, StatusIntegracaoParceiro = (Convert.ToInt16(gerarCodigoResponse.Valido)).ToString(), LogRetornoParceiro = !gerarCodigoResponse.Valido ? String.Join(" | ", gerarCodigoResponse.Mensagens.Select(x => x.Conteudo)) : string.Empty, RequisicaoId = gerarCodigoResponse.RequisicaoId, DataIntegracaoParceiro = DateTime.Now, } }; var alterarStatusParceiroResponse = await this._lojaHttpRepository.AlterarStatusParceiro(alterarStatusParceiroRequest); result.IsValid = gerarCodigoResponse.Valido && alterarStatusParceiroResponse.Valido; if (!result.IsValid) { result.Mensagem = new EventMessage { Content = "Não foi possível integrar pedido.", Type = MessageType.BusinessError }; } }).GetAwaiter().GetResult(); } catch (Exception ex) { result.IsValid = false; result.Mensagem = new EventMessage { Content = ex.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }
public RaiseResult Raise(GerarEGiftEvent domainEvent) { RaiseResult result = new RaiseResult() { Mensagem = new EventMessage() }; try { Task.Run(async() => { try { var gerarEGift = domainEvent.EGift; if (string.IsNullOrEmpty(gerarEGift.Hash)) { var gerarHashResponse = await this._httpService.GerarHashEGift(new GenerateEGiftHashRequest() { ClienteId = gerarEGift.ClienteId, NumeroPedido = gerarEGift.NumeroPedido, Preco = gerarEGift.Preco, ProductConfigutationId = gerarEGift.SKUParceiro, RequisicaoId = gerarEGift.RequisicaoId, TentativasAnteriores = gerarEGift.TentativasAnteriores }); gerarEGift.ClienteId = gerarHashResponse.AccountId; gerarEGift.Hash = gerarHashResponse.EntityId; if (gerarEGift.GerarCodigoAtivacao) { var gerarKeyResponse = await this._httpService.GerarKeyEGift(new GenerateEGiftKeyRequest() { Hash = gerarEGift.Hash, IdCliente = gerarEGift.ClienteId }); gerarEGift.Ativacao = gerarKeyResponse.ActivationAccountNumber; foreach (var mensagem in gerarKeyResponse.Mensagens) { result.Mensagem.Content = result.Mensagem.Content.ConcatenarErros(mensagem.Conteudo); } } else { gerarEGift.Ativacao = gerarHashResponse.ActivationUrl; } result.IsValid = true; } else if (gerarEGift.GerarCodigoAtivacao) { var gerarKeyResponse = await this._httpService.GerarKeyEGift(new GenerateEGiftKeyRequest() { Hash = gerarEGift.Hash, IdCliente = gerarEGift.ClienteId }); foreach (var mensagem in gerarKeyResponse.Mensagens) { result.Mensagem.Content = result.Mensagem.Content.ConcatenarErros(mensagem.Conteudo); } gerarEGift.Ativacao = gerarKeyResponse.ActivationAccountNumber; result.IsValid = true; } } catch (BHNResponseException bhnEx) { result.IsValid = false; result.Mensagem.Content = result.Mensagem.Content.ConcatenarErros(bhnEx.ToString()); var erros = await _acaoEGiftRepository.ObterPorNumero((int)bhnEx.StatusCode); if (erros.Any()) { var acao = erros.Count() > 1 ? (erros.FirstOrDefault(q => q.CodigoRetorno.ToLower() == bhnEx.ErrorCode.ToLower()) ?? new AcaoEGift() { Desfazer = false }) : erros.FirstOrDefault() ; domainEvent.EGift.DesfazimentoNecessario = acao.Desfazer; if (!string.IsNullOrEmpty(acao.Descricao) && !string.IsNullOrEmpty(acao.Acao)) { result.Mensagem.Content = result.Mensagem.Content.ConcatenarErros(acao.ToString()); } if (acao.Desfazer) { var desfazimentoResponse = await _httpService.DesfazimentoEGift(new DesfazimentoEGiftRequest() { RequisicaoId = domainEvent.EGift.RequisicaoId }); domainEvent.EGift.DesfazimentoExecutado = desfazimentoResponse.Valido; if (desfazimentoResponse.Valido) { result.Mensagem.Content = result.Mensagem.Content.ConcatenarErros("Desfazimento realizado com sucesso."); } } } } catch (Exception) { throw; } }) .GetAwaiter() .GetResult() ; } catch (Exception e) { result.IsValid = false; result.Mensagem = new EventMessage { Content = e.InnerException.ToString(), Type = MessageType.ApplicationError }; } return(result); }