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)); } }
public async Task Create(CalculoFrete calculoFrete) { _calculoFreteContext.Entry(calculoFrete).State = EntityState.Added; _calculoFreteContext.CalculosFretes.Add(calculoFrete); await _calculoFreteContext.SaveChangesAsync(); }
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)); }
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; } }