// GET api/values/?email={email} //e.g.: api/values/[email protected] public IHttpActionResult GetCustomerByEmail(String email) { CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(email); return Ok(customer); }
public IHttpActionResult GetFrete(int id) { Order order = db.Orders.Find(id); Customer customer = null; cResultado result = null; Trace.TraceInformation("Nome do usuário: " + User.Identity.Name); if (order == null) { Trace.TraceInformation("Pedido não encontrado."); return BadRequest("Pedido não encontrado."); } if (IsAuthorized(order)) { if (order.OrderItems.Count == 0) { return BadRequest("Erro - Pedido sem itens."); } if (!order.Status.Equals(Novo)) { return BadRequest("Pedido com status diferente de “novo”."); } try { CRMRestClient crmClient = new CRMRestClient(); customer = crmClient.GetCustomerByEmail(order.userName); } catch (Exception e) { Trace.TraceError(e.StackTrace); return BadRequest("Não foi possível acessar o serviço de CRM. Por favor tente novamente mais tarde."); } if (customer == null) { Trace.TraceInformation("Erro - Não foi possível localizar cadastro do usuário."); return BadRequest("Erro - Não foi possível localizar cadastro do usuário."); } decimal maiorLargura = 0; decimal maiorComprimento = 0; decimal alturaTotal = 0; decimal diametroTotal = 0; decimal pesoTotal = 0; decimal precoTotal = 0; foreach (OrderItem orderItem in order.OrderItems) { alturaTotal += (orderItem.Product.altura * orderItem.Quantidade); pesoTotal += (orderItem.Product.peso * orderItem.Quantidade); precoTotal += (orderItem.Product.preco * orderItem.Quantidade); diametroTotal += (orderItem.Product.diametro * orderItem.Quantidade); if (orderItem.Product.largura > maiorLargura) maiorLargura = orderItem.Product.largura; if (orderItem.Product.comprimento > maiorComprimento) maiorComprimento = orderItem.Product.comprimento; } try { result = getFreteAndDate(customer.zip, precoTotal, pesoTotal.ToString(), maiorComprimento, alturaTotal, maiorLargura, diametroTotal); } catch (Exception e) { Trace.TraceError(e.StackTrace); return BadRequest("Não foi possível acessar o serviço dos Correios. Por favor tente novamente mais tarde."); } if (!result.Servicos[0].Erro.Equals("0")) { return BadRequest("Erro ao calcular o frete: " + result.Servicos[0].MsgErro); } // Gets a NumberFormatInfo associated with the en-US culture. NumberFormatInfo nfi = new CultureInfo("pt-BR", false).NumberFormat; decimal precoFrete = decimal.Parse(result.Servicos[0].Valor, nfi); int prazoEnt = int.Parse(result.Servicos[0].PrazoEntrega); DateTime dataEntrega = DateTime.Now; dataEntrega = dataEntrega.AddDays(prazoEnt); Trace.TraceInformation("Preco dos produtos: " + precoTotal); Trace.TraceInformation("Preco do frete: " + precoFrete); precoTotal += precoFrete; Trace.TraceInformation("Preco total: " + precoTotal); // UPDATE THE ORDER order.PrecoFrete = precoFrete; order.DataEntrega = dataEntrega; order.PesoTotal = pesoTotal; order.PrecoTotal = precoTotal; return UpdatedOrder(id, order); //Return the order updated } else { Trace.TraceInformation("Usuário não autorizado"); return BadRequest("Usuário não autorizado"); } }