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); }
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); } }