public async Task <ObterDetalhesProdutoResponse> DetalhesProduto(ObterDetalhesProdutoRequest request) { var response = new ObterDetalhesProdutoResponse() { Configuracoes = new List <ConfiguracaoProdutoResponse>() }; using (var httpClient = HelperBHNHttpService.ObterHttpClientBhn(_dadosBhn)) { var endpoint = HelperBHNHttpService.ObterEndPoint(this._dadosBhn.DetalhesProdutoRota, request.IdProduto); var bhnResponse = await httpClient.GetAsync(endpoint); var responseString = bhnResponse.ConvertToString(); if (bhnResponse.Valido()) { JObject bhnObjectResponse = JObject.Parse(responseString); response.IdProduto = bhnObjectResponse["entityId"].ToString().ObterEntityId(); response.Nome = bhnObjectResponse["summary"]["productName"].ToString(); response.Preco = Convert.ToDecimal(bhnObjectResponse["details"]["activationCharacteristics"]["baseValueAmount"].ToString()); response.PrecoMaximo = Convert.ToDecimal(bhnObjectResponse["details"]["activationCharacteristics"]["maxValueAmount"].ToString()); response.ConfiguracaoPadrao = bhnObjectResponse["details"]["defaultProductConfigurationId"].ToString(); var configurations = bhnObjectResponse["details"]["productConfigurations"].Children().ToList(); foreach (JToken config in configurations) { response.Configuracoes.Add(new ConfiguracaoProdutoResponse() { Id = config["configurationId"].ToString(), Nome = config["configurationName"].ToString() }); } } else { var erro = JsonConvert.DeserializeObject <BHNErrorResponse>(responseString.TratarErrorResponse()); throw new BHNResponseException(bhnResponse.StatusCode, erro.ErrorCode, erro.Message); } } return(response); }
public async Task <ObterDetalhesProdutoResponse> DetalhesProduto(ObterDetalhesProdutoRequest request) { var response = new ObterDetalhesProdutoResponse(); try { var validationResult = request.Validate(); if (!validationResult.IsValid) { response.Valido = false; foreach (var failure in validationResult.Errors) { response.AdicionarMensagemErro(TipoMensagem.Validacao, failure.ErrorMessage); } } else { var produtoRequest = await this._httpService.DetalhesProduto(request); return(produtoRequest); } } catch (BHNResponseException bhnEx) { response.Valido = false; response.AdicionarMensagemErro(TipoMensagem.Aplicacao, bhnEx.ToString()); } catch (ApplicationException appEx) { response.Valido = false; response.AdicionarMensagemErro(TipoMensagem.ErroNegocio, appEx.Message); } catch (Exception ex) { response.Valido = false; response.AdicionarMensagemErro(TipoMensagem.ErroAplicacao, ex.StackTrace); } return(response); }