コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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)));
     }
 }
コード例 #4
0
 public JsonResult CotarFrete([FromBody] CotarFreteDto cotacao)
 {
     return(Json(_cotarFreteService.GetValorFrete(cotacao)));
 }