public ValorFreteDto GetValorFrete(CotarFreteDto cotacao) { var oD = _unitOfWork.OrigemDestinos.GetByOrigemDestino(cotacao.IdCidadeOrigem, cotacao.IdCidadeDestino); var vlBaseFrete = _unitOfWork.BaseFretes.GetByOrigemDestino(oD.IdOrigemDestino).VlBase; FreteCliente cliente = _unitOfWork.FreteClientes.GetByEmail(cotacao.Email); cotacao.Cubagem = cotacao.Altura * cotacao.Largura * cotacao.Comprimento; if (cliente != null) { _valorFinalFrete = FreteComDesconto(cotacao, cliente, vlBaseFrete); } else { _valorFinalFrete = FreteSemDesconto(cotacao, vlBaseFrete); } var retorno = new ValorFreteDto { IdCidadeDestino = cotacao.IdCidadeDestino, IdCidadeOrigem = cotacao.IdCidadeOrigem, DtCotacao = DateTime.Now, PzEstimadoEntrega = 8, VlFrete = _valorFinalFrete, Cubagem = cotacao.Cubagem, Peso = cotacao.Peso, Altura = cotacao.Altura, Comprimento = cotacao.Comprimento, Largura = cotacao.Largura }; return(retorno); }
private double FreteComDesconto(CotarFreteDto cotacao, FreteCliente cliente, decimal valorFrete) { if (cotacao.Cubagem * 300 < cotacao.Peso) { return(System.Convert.ToDouble(valorFrete * (decimal)cliente.VlDesconto * ((decimal)cotacao.Peso / 1000))); } else { return(System.Convert.ToDouble(valorFrete * (decimal)cliente.VlDesconto * (((decimal)cotacao.Cubagem * 300) / 1000))); } }