示例#1
0
        // 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);
        }
示例#2
0
        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");
            }
        }