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);
            }
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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());
        }