Exemplo n.º 1
0
        public List <PacoteFrete> CalcularPacotesdeProdutos(List <ShoppingCartItem> produtos)
        {
            List <PacoteFrete> PacoteFrete = new List <PacoteFrete>();
            PacoteFrete        pacoteFrete = new PacoteFrete();

            foreach (var item in produtos)
            {
                for (int i = 0; i < item.Quantidade; i++)
                {
                    var peso        = pacoteFrete.Peso + item.Peso;
                    var comprimento = (pacoteFrete.Comprimento > item.comprimento) ? pacoteFrete.Comprimento : item.comprimento;
                    var largura     = (pacoteFrete.Largura > item.largura) ? pacoteFrete.Largura : item.largura;
                    var altura      = pacoteFrete.Altura + item.altura;

                    var dimensao = comprimento + largura + altura;


                    //TODO -> Cria novo pacote caso ultrapasse 30kg e 200 cm
                    if (peso > 30 || dimensao > 200)
                    {
                        pacoteFrete.Peso = peso - 30;
                        if (dimensao > 200)
                        {
                            int novaDimensao         = dimensao - 200;
                            int distribuicaoDimensao = novaDimensao / 3;
                            pacoteFrete.Comprimento = distribuicaoDimensao;
                            pacoteFrete.Largura     = distribuicaoDimensao;
                            pacoteFrete.Altura      = distribuicaoDimensao;
                        }

                        PacoteFrete.Add(pacoteFrete);
                        pacoteFrete = new PacoteFrete();
                    }

                    pacoteFrete.Peso        = pacoteFrete.Peso + item.Peso;
                    pacoteFrete.Comprimento = pacoteFrete.Comprimento + item.comprimento;
                    pacoteFrete.Largura     = pacoteFrete.Largura + item.largura;
                    pacoteFrete.Altura      = pacoteFrete.Altura + item.altura;
                }
            }

            PacoteFrete.Add(pacoteFrete);
            return(PacoteFrete);
        }
Exemplo n.º 2
0
        private async Task <ValorPrazoFrete> CalcularValorPrazoFrete(String cepDestino, String tipoFrete, PacoteFrete pacoteFrete)
        {
            var cepOrigem        = _configuration.GetValue <string>("Frete:cepOrigem");
            var maoPropria       = _configuration.GetValue <string>("Frete:maoPropria");
            var avisoRecebimento = _configuration.GetValue <string>("Frete:avisoRecebimento");
            var diametro         = Math.Max(Math.Max(pacoteFrete.Comprimento, pacoteFrete.Largura), pacoteFrete.Altura);

            cResultado resultado = await _servico.CalcPrecoPrazoAsync("", "", tipoFrete, cepOrigem, cepDestino, pacoteFrete.Peso.ToString(), 1, pacoteFrete.Comprimento,
                                                                      pacoteFrete.Altura, pacoteFrete.Largura, diametro, maoPropria, 0, avisoRecebimento);

            if (resultado.Servicos[0].Erro == "0")
            {
                return(new ValorPrazoFrete()
                {
                    TipoFrete = int.Parse(tipoFrete),
                    Prazo = int.Parse(resultado.Servicos[0].PrazoEntrega),
                    Valor = double.Parse(resultado.Servicos[0].Valor.Replace(".", "").Replace(",", ".")),
                });
            }
            else
            {
                return(new ValorPrazoFrete()
                {
                });
                //("Erro: " + resultado.Servicos[0].MsgErro);
            }
        }