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); }
public void Valor1kTests() { _unitOfWork.BaseFretes.RemoveRange(_unitOfWork.BaseFretes.GetAll()); _unitOfWork.OrigemDestinos.RemoveRange(_unitOfWork.OrigemDestinos.GetAll()); _unitOfWork.Cidades.RemoveRange(_unitOfWork.Cidades.GetAll()); _unitOfWork.Commit(); var cidades = new CidadeBuilder().Cidades(); var od = new OrigemDestinoBuilder().ODGoianiaAparecida(); var baseFrete = new BaseFreteBuilder().BaseFreteGoianiaAparecida(od.IdOrigemDestino); _unitOfWork.Cidades.AddRange(cidades); _unitOfWork.OrigemDestinos.Add(od); _unitOfWork.BaseFretes.Add(baseFrete); _unitOfWork.Commit(); var cotacao = new CotarFreteDto { IdCidadeOrigem = od.IdCidadeOrigem, IdCidadeDestino = od.IdCidadeDestino, Email = "", Peso = 1000 }; var frete = _cotarFreteService.GetValorFrete(cotacao); Assert.IsTrue(frete.VlFrete == 1150); }
private double FreteSemDesconto(CotarFreteDto cotacao, decimal valorFrete) { if (cotacao.Cubagem * 300 < cotacao.Peso) { return(System.Convert.ToDouble(valorFrete * ((decimal)cotacao.Peso / 1000))); } else { return(System.Convert.ToDouble(valorFrete * (((decimal)cotacao.Cubagem * 300) / 1000))); } }
public JsonResult CotarFrete([FromBody] CotarFreteDto cotacao) { return(Json(_cotarFreteService.GetValorFrete(cotacao))); }