public void OnActionExecuting(ActionExecutingContext context) { GerenciadorCookie _cookie = (GerenciadorCookie)context.HttpContext.RequestServices.GetService(typeof(GerenciadorCookie)); CookieValorPrazoFrete _cookieFrete = (CookieValorPrazoFrete)context.HttpContext.RequestServices.GetService(typeof(CookieValorPrazoFrete)); CarrinhoCompra.CarrinhoCompra _cookieCarrinho = (CarrinhoCompra.CarrinhoCompra)context.HttpContext.RequestServices.GetService(typeof(CarrinhoCompra.CarrinhoCompra)); Controller controller = (Controller)context.Controller; string CookieCarrinho = _cookie.Consultar("Carrinho.Compras"); string CEP = _cookie.Consultar("Carrinho.CEP", false); string TipoFrete = _cookie.Consultar("Carrinho.TipoFrete", false); if (CookieCarrinho == null) { controller.TempData["MSG_E"] = "Não há itens no carrinho! Adicione produtos para prosseguir"; context.Result = new RedirectToActionResult("Index", "CarrinhoCompra", null); } if (CEP == null || TipoFrete == null) { controller.TempData["MSG_E"] = "Calcule o frete para prosseguir com o pagamento!"; context.Result = new RedirectToActionResult("Index", "CarrinhoCompra", null); } List <Models.Correios.Frete> CookieFrete = _cookieFrete.Consultar(); string CarrinhoId = HashGenerator.CreateMD5(JsonConvert.SerializeObject(_cookieCarrinho.Consultar())); Models.Correios.Frete frete = CookieFrete.Where(a => a.CarrinhoId == CarrinhoId && a.CEP == CEP).FirstOrDefault(); if (frete == null) { _cookie.Excluir("Carrinho.CEP"); _cookie.Excluir("Carrinho.TipoFrete"); _cookieFrete.RemoverTodos(); controller.TempData["MSG_E"] = "Alteração no carrinho detectada! Calculeo frete novamente para prosseguir"; context.Result = new RedirectToActionResult("Index", "CarrinhoCompra", null); } }
public async Task <IActionResult> CalcularFrete(string cepDestino) { try { Frete frete = _cookieValorPrazoFrete.Consultar().Where(a => a.CEP == cepDestino && a.CarrinhoId == HashGenerator.CreateMD5(JsonConvert.SerializeObject(_carrinhoCompra.Consultar()))).FirstOrDefault(); var options = new CookieOptions() { Expires = DateTime.Now.AddDays(7), IsEssential = true }; HttpContext.Response.Cookies.Append("Carrinho.CEP", cepDestino, options); if (frete != null) { return(Ok(frete)); } else { List <ProdutoItem> produtos = CarregarProdutoDB(); List <Pacote> pacotes = _pacote.CalcularPacote(produtos); ValorPrazoFrete valorPAC = await _frete.CalcularFrete(cepDestino, TipoFreteConstant.PAC, pacotes); ValorPrazoFrete valorSEDEX = await _frete.CalcularFrete(cepDestino, TipoFreteConstant.Sedex, pacotes); ValorPrazoFrete valorSEDEX10 = await _frete.CalcularFrete(cepDestino, TipoFreteConstant.Sedex10, pacotes); List <ValorPrazoFrete> lista = new List <ValorPrazoFrete>(); if (valorPAC != null) { lista.Add(valorPAC); } if (valorSEDEX != null) { lista.Add(valorSEDEX); } if (valorSEDEX10 != null) { lista.Add(valorSEDEX10); } if (lista.Count() == 0) { return(BadRequest(new { erro = "Este CEP não possui acesso ao servico dos CORREIOS" }));; } frete = new Frete() { CEP = cepDestino, CarrinhoId = HashGenerator.CreateMD5(JsonConvert.SerializeObject(_carrinhoCompra.Consultar())), Valores = lista }; _cookieValorPrazoFrete.Cadastrar(frete); return(Ok(frete)); } } catch (Exception e) { return(BadRequest(e)); } }
private ValorPrazoFrete ObterFrete() { string CEP = _cookie.Consultar("Carrinho.CEP", false); string TipoFrete = _cookie.Consultar("Carrinho.TipoFrete", false); if (TipoFrete == "SEDEX") { TipoFrete = TipoFreteConstant.Sedex; } else if (TipoFrete == "PAC") { TipoFrete = TipoFreteConstant.PAC; } else if (TipoFrete == "SEDEX10") { TipoFrete = TipoFreteConstant.Sedex10; } Frete frete = _cookieValorPrazoFrete.Consultar().Where(a => a.CEP == CEP && a.CarrinhoId == HashGenerator.CreateMD5(JsonConvert.SerializeObject(_carrinhoCompra.Consultar()))).FirstOrDefault(); return(frete.Valores.Where(a => a.TipoFrete == TipoFrete).FirstOrDefault()); }