示例#1
0
        public PartialViewResult CalcularFrete(int id)
        {
            Carrinho        carrinho;
            List <Endereco> enderecos;
            Endereco        endereco = new Endereco()
            {
                Id = id
            };

            resultado = new Facade().Consultar(endereco);//Busca enderecos
            if (!string.IsNullOrEmpty(resultado.Msg))
            {
                TempData["MsgErro"] = resultado.Msg;
                return(PartialView(null));
            }
            else
            {
                enderecos = new List <Endereco>();
                foreach (var item in resultado.Entidades)
                {
                    enderecos.Add((Endereco)item);
                }
                carrinho = SessionHelper.Get <Carrinho>(HttpContext.Session, "carrinho");

                carrinho.Cep        = enderecos.FirstOrDefault().Cep;
                carrinho.EnderecoId = enderecos.FirstOrDefault().Id;
                carrinho.ValorFrete = CalculoFrete.Calcular(carrinho.Cep, carrinho.QtdeTotalItens);
                SessionHelper.Set <Carrinho>(HttpContext.Session, "carrinho", carrinho);
                return(PartialView("_resumo", carrinho));
            }
        }
示例#2
0
        public async Task Create(CalculoFrete calculoFrete)
        {
            _calculoFreteContext.Entry(calculoFrete).State = EntityState.Added;

            _calculoFreteContext.CalculosFretes.Add(calculoFrete);
            await _calculoFreteContext.SaveChangesAsync();
        }
示例#3
0
        public IActionResult Index()
        {
            Carrinho               carrinho;
            Cupom                  cupom    = new Cupom();
            Endereco               endereco = new Endereco();
            CartaoDeCredito        cartao   = new CartaoDeCredito();
            List <Cupom>           cupons;
            List <Endereco>        enderecos;
            List <CartaoDeCredito> cartoes;

            if (HttpContext.Session.Get <int>("idUsuario") > 0)
            {
                ViewBag.NomeUsuario = HttpContext.Session.GetString("nomeUsuario");

                cupom.UsuarioId = HttpContext.Session.Get <int>("idUsuario");
                cupom.Tipo      = 'T';
                cupom.Usado     = 0;

                resultado = new Facade().Consultar(cupom);//Busca cupons
                if (!string.IsNullOrEmpty(resultado.Msg))
                {
                    ViewBag.Mensagem = resultado.Msg;
                }
                else
                {
                    cupons = new List <Cupom>();
                    foreach (var item in resultado.Entidades)
                    {
                        cupons.Add((Cupom)item);
                    }
                    ViewBag.CuponsTroca = cupons;
                }

                endereco.UsuarioId    = HttpContext.Session.Get <int>("idUsuario");
                endereco.TipoEndereco = 1;
                endereco.Ativo        = 1;
                resultado             = new Facade().Consultar(endereco);//Busca enderecos
                if (!string.IsNullOrEmpty(resultado.Msg))
                {
                    ViewBag.Mensagem = resultado.Msg;
                }
                else
                {
                    enderecos = new List <Endereco>();
                    foreach (var item in resultado.Entidades)
                    {
                        enderecos.Add((Endereco)item);
                    }
                    ViewBag.Enderecos = enderecos;
                }

                cartao.UsuarioId = HttpContext.Session.Get <int>("idUsuario");

                resultado = new Facade().Consultar(cartao);//Busca cartoes
                if (!string.IsNullOrEmpty(resultado.Msg))
                {
                    ViewBag.Mensagem = resultado.Msg;
                }
                else
                {
                    cartoes = new List <CartaoDeCredito>();
                    foreach (var item in resultado.Entidades)
                    {
                        cartoes.Add((CartaoDeCredito)item);
                    }
                    ViewBag.Cartoes = cartoes;
                }
            }

            carrinho = SessionHelper.Get <Carrinho>(HttpContext.Session, "carrinho");
            if (carrinho == null)
            {
                carrinho = new Carrinho();
            }
            else
            {
                char statusPedido = HttpContext.Session.Get <char>("statusPedido");
                if (statusPedido != '\0' && statusPedido == 'A')
                {
                    carrinho = new Carrinho();
                    HttpContext.Session.Remove("statusPedido");
                }
            }

            carrinho.QtdeTotalItens = 0;
            foreach (var item in carrinho.ItensPedido)
            {
                carrinho.QtdeTotalItens += item.Qtde;
            }
            if (!string.IsNullOrEmpty(carrinho.Cep) && !string.IsNullOrWhiteSpace(carrinho.Cep))
            {
                carrinho.ValorFrete = CalculoFrete.Calcular(carrinho.Cep, carrinho.ItensPedido.Count());
            }
            if (string.IsNullOrEmpty(carrinho.Cep))
            {
                carrinho.Cep = "";
            }

            SessionHelper.Set <Carrinho>(HttpContext.Session, "carrinho", carrinho);
            string msg = HttpContext.Session.GetString("mensagemCarrinho");

            if (!string.IsNullOrEmpty(msg) && !string.IsNullOrWhiteSpace(msg))
            {
                ViewBag.Mensagem = msg;
                HttpContext.Session.Remove("mensagemCarrinho");
            }
            return(View(carrinho));
        }
示例#4
0
        public async Task <CalculoFrete> ObterCalculoFretePorEmbarque(long codigoEmbarque)
        {
            try
            {
                Embarque embarque = new Embarque();
                embarque = await _embarqueContext.Embarques
                           .Where(e => e.Codigo == codigoEmbarque)
                           .Include(e => e.Embarcadora)
                           .AsNoTracking()
                           .FirstOrDefaultAsync();

                if (embarque == null)
                {
                    throw new Exception("Nao foi possivel localizar o embarque.");
                }

goTo_BuscarCalculoFreteResultado:
                CalculoFrete calculoFreteResultado = new CalculoFrete();
                calculoFreteResultado = await _calculoFreteContext.CalculosFretes
                                        .Where(c => c.Embarque.Id.Equals(embarque.Id))
                                        .Include(c => c.Embarcadora)
                                        .Include(c => c.Transportadora)
                                        .Include(c => c.Embarque)
                                        .Include(c => c.MelhorNegociacaoFrete)
                                        .AsNoTracking()
                                        .FirstOrDefaultAsync();

                if (calculoFreteResultado == null)
                {
                    NegociacaoFrete negociacaoFrete = new NegociacaoFrete();
                    negociacaoFrete = await _negociacaoFreteContext.NegociacoesFretes
                                      .Where(n => n.Embarcadora.Codigo == embarque.Embarcadora.Codigo &&
                                             (n.FaixaPesoEmToneladasInicio <= embarque.PesoEmToneladas && n.FaixaPesoEmToneladasFim >= embarque.PesoEmToneladas) &&
                                             n.CategoriaVeiculo == embarque.CategoriaVeiculo)
                                      .OrderBy(n => n.PrecoQuilometro)
                                      .ThenBy(n => n.PrazoEntregaDias)
                                      .Include(n => n.Embarcadora)
                                      .Include(n => n.Transportadora)
                                      .AsNoTracking()
                                      .FirstOrDefaultAsync();

                    if (negociacaoFrete == null)
                    {
                        throw new Exception("Nao foi possivel localizar uma negociacao de frete.");
                    }

                    calculoFreteResultado = new CalculoFrete(negociacaoFrete.Embarcadora, negociacaoFrete.Transportadora, embarque,
                                                             negociacaoFrete, embarque.Quilometragem * negociacaoFrete.PrecoQuilometro,
                                                             embarque.DataColeta.AddDays(negociacaoFrete.PrazoEntregaDias));

                    #region Validar estado das entidades

                    EntityState validarEstadoEntidade = _calculoFreteContext.Embarcadoras
                                                        .FirstOrDefault(e => e.Id.Equals(calculoFreteResultado.Embarcadora.Id)) == null?
                                                        _calculoFreteContext.Entry(calculoFreteResultado.Embarcadora).State = EntityState.Added:
                                                                                                                              _calculoFreteContext.Entry(calculoFreteResultado.Embarcadora).State = EntityState.Detached;

                    validarEstadoEntidade = _calculoFreteContext.Transportadoras
                                            .FirstOrDefault(e => e.Id.Equals(calculoFreteResultado.Transportadora.Id)) == null?
                                            _calculoFreteContext.Entry(calculoFreteResultado.Transportadora).State = EntityState.Added:
                                                                                                                     _calculoFreteContext.Entry(calculoFreteResultado.Transportadora).State = EntityState.Detached;

                    validarEstadoEntidade = _calculoFreteContext.Embarques
                                            .FirstOrDefault(e => e.Id.Equals(calculoFreteResultado.Embarque.Id)) == null?
                                            _calculoFreteContext.Entry(calculoFreteResultado.Embarque).State = EntityState.Added:
                                                                                                               _calculoFreteContext.Entry(calculoFreteResultado.Embarque).State = EntityState.Detached;

                    validarEstadoEntidade = _calculoFreteContext.NegociacoesFretes
                                            .FirstOrDefault(e => e.Id.Equals(calculoFreteResultado.MelhorNegociacaoFrete.Id)) == null?
                                            _calculoFreteContext.Entry(calculoFreteResultado.MelhorNegociacaoFrete).State = EntityState.Added:
                                                                                                                            _calculoFreteContext.Entry(calculoFreteResultado.MelhorNegociacaoFrete).State = EntityState.Detached;

                    #endregion

                    await this.Create(calculoFreteResultado);

                    goto goTo_BuscarCalculoFreteResultado;
                }

                return(calculoFreteResultado);
            }
            catch (Exception e)
            {
                throw e;
            }
        }