Exemplo n.º 1
0
        public IActionResult _UsarCodigoPartial(string cod)
        {
            CodigoPromocional codigo = _facade.Query <CodigoPromocional>(c => c.Codigo == cod && !c.Inativo,
                                                                         c => c).FirstOrDefault();

            CodigoPromocionalModel vm = null;

            if (codigo == null)
            {
                ViewData["Error"] = "O código não existe.";
            }
            else
            {
                if (codigo.UsosRestantes <= 0)
                {
                    ViewData["Error"] = "Esse código expirou. Tente outro código. \n";
                }
                else
                {
                    _vh = new CodigoPromocionalViewHelper
                    {
                        Entidades = new Dictionary <string, object>
                        {
                            [typeof(CodigoPromocional).Name] = codigo
                        }
                    };
                    vm = (CodigoPromocionalModel)_vh.ViewModel;
                }
            }

            return(PartialView("../CarrinhoCompra/PartialViews/_UsarCodigoPartial", vm));
        }
Exemplo n.º 2
0
        public IActionResult _EditarCodigoPromoPartial(string cod)
        {
            ViewBag.Operacao = "edit";

            CodigoPromocional codigoPromo = _facade.Query <CodigoPromocional>(c => c.Codigo == cod, c => c).FirstOrDefault();

            return(PartialView("../Admin/PartialViews/_ConfigCodigoPromoPartial", codigoPromo));
        }
Exemplo n.º 3
0
        protected override void ToViewModel()
        {
            CodigoPromocional cupom = (CodigoPromocional)Entidades[typeof(CodigoPromocional).Name];

            CodigoPromocionalModel vm = new CodigoPromocionalModel
            {
                Codigo = cupom.Codigo.ToString(),
                Valor  = cupom.Valor
            };

            _viewModel = vm;
        }
Exemplo n.º 4
0
        public IActionResult InativarReativarCodigoPromo(string cod)
        {
            CodigoPromocional codigoPromo = _facade.Query <CodigoPromocional>(c => c.Codigo == cod, c => c).FirstOrDefault();

            codigoPromo.Inativo = !codigoPromo.Inativo;

            string msg = _facade.Editar(codigoPromo);

            if (!String.IsNullOrEmpty(msg))
            {
                TempData["Alert"] = msg;
            }

            return(RedirectToAction(nameof(ConfigLoja)));
        }
Exemplo n.º 5
0
        public IActionResult UsarCodigo(string cod)
        {
            Cliente           clienteDb = GetClienteDb();
            Pedido            pedido    = GetPedidoNaoFinalizado(clienteDb);
            CodigoPromocional codigo    = _facade.Query <CodigoPromocional>(c => c.Codigo == cod && !c.Inativo,
                                                                            c => c).FirstOrDefault();
            string msg = "";

            if (codigo == null)
            {
                TempData["Alert"] = "Código inválido. \n";
            }
            else
            {
                if (codigo.UsosRestantes <= 0)
                {
                    TempData["Alert"] = "Esse código expirou. Tente outro código. \n";
                }
                else
                {
                    pedido.CodigoPromocional = codigo;

                    if (pedido.CartaoPedidos.Where(c => c.Valor > pedido.CodigoPromocional.Valor).Count() > 0)
                    {
                        pedido.CartaoPedidos.Where(c => c.Valor > pedido.CodigoPromocional.Valor).First().Valor -= pedido.CodigoPromocional.Valor;
                    }
                    else
                    {
                        pedido.CartaoPedidos = new List <CartaoPedido>
                        {
                            new CartaoPedido
                            {
                                Cartao = clienteDb.Cartoes.Where(c => c.EFavorito && !c.Inativo).FirstOrDefault(),
                                Valor  = pedido.ValorTotal
                            }
                        };
                    }
                    msg = _facade.Editar(pedido);
                }
            }

            if (msg != "")
            {
                TempData["Alert"] = msg;
            }

            return(RedirectToAction(nameof(FinalizarCompra)));
        }
Exemplo n.º 6
0
        public IActionResult EditarCodigoPromo(CodigoPromocional cod)
        {
            CodigoPromocional codDb = _facade.GetEntidade(cod);

            codDb.Valor         = codDb.Valor;
            codDb.UsosRestantes = cod.UsosRestantes;

            string msg = _facade.Editar(codDb);

            if (!String.IsNullOrEmpty(msg))
            {
                TempData["Alert"] = msg;
            }

            return(RedirectToAction(nameof(ConfigLoja)));
        }
Exemplo n.º 7
0
        public IActionResult AdicionarCodigoPromo(CodigoPromocional cod)
        {
            if (_facade.Query <CodigoPromocional>(c => c.Codigo == cod.Codigo, c => c).Count() > 0)
            {
                TempData["Alert"] = "Um código promocional com o código " + cod.Codigo + " já existe. Favor usar outro.";
                return(RedirectToAction(nameof(ConfigLoja)));
            }
            string msg = _facade.Cadastrar(cod);

            if (!String.IsNullOrEmpty(msg))
            {
                TempData["Alert"] = msg;
            }

            return(RedirectToAction(nameof(ConfigLoja)));
        }
Exemplo n.º 8
0
        public IActionResult Comprar()
        {
            Cliente  clienteDb = GetClienteDb();
            Pedido   p         = GetPedidoNaoFinalizado(clienteDb);
            Carrinho c         = GetCarrinho();

            if (p == null)
            {
                TempData["Alert"] = "Ocorreu um erro. Tente novamente\n.";
                return(RedirectToAction(nameof(FinalizarCompra)));
            }

            IEnumerable <Livro> livros = p.LivrosPedidos.Select(l => l.Livro).Distinct();

            p.ValorTotal = p.CalcularValorTotal();

            if (p.Cupom != null || p.CodigoPromocional != null)
            {
                Cupom cupom = p.Cupom ?? new Cupom {
                    Valor = 0
                };
                CodigoPromocional codigo = p.CodigoPromocional ?? new CodigoPromocional {
                    Valor = 0
                };

                if (cupom.Valor + codigo.Valor >= p.ValorTotal)
                {
                    foreach (var cupomCliente in clienteDb.Cupons)
                    {
                        if (cupomCliente.Valor + codigo.Valor < p.ValorTotal)
                        {
                            TempData["Alert"] = "Você possui um cupom de troca que não ultrapassa o valor máximo. Use ele ao invés do atual!\n.";
                            return(RedirectToAction(nameof(FinalizarCompra)));
                        }
                    }
                    var diferenca = cupom.Valor + codigo.Valor - p.ValorTotal;
                    if (diferenca > 0)
                    {
                        addCupom(clienteDb, diferenca);
                    }
                }
            }

            //Cupom
            if (p.Cupom != null)
            {
                p.Cupom.Inativo = true;
            }

            //Codigo
            if (p.CodigoPromocional != null)
            {
                p.CodigoPromocional.UsosRestantes -= 1;
                if (p.CodigoPromocional.UsosRestantes == 0)
                {
                    p.CodigoPromocional.Inativo = true;
                }
            }

            //Atualização estoque
            foreach (var livro in livros)
            {
                var quantiaPedido = p.LivrosPedidos.Where(l => l.LivroId == livro.Id).Count();
                livro.EstoqueBloqueado -= quantiaPedido;
                livro.Estoque          -= quantiaPedido;

                //Inativação Automática de Livros fora de estoque
                if (livro.Estoque <= 0)
                {
                    livro.Inativo = true;
                    livro.Inativacoes.Add(new Inativacao {
                        CategoriaId = 1, LivroId = livro.Id
                    });
                }
            }

            p.Status = StatusPedidos.Processamento;
            string msg = _facade.Editar(p);

            //Limpar Carrinho (feito decrescente pois estou removendo da lista)
            msg += _facade.Deletar(c);

            if (msg != "")
            {
                TempData["Alert"] = msg;
            }
            return(RedirectToAction("Loja", "Livros"));
        }
        protected override void ToViewModel()
        {
            PaginaFinalizarCompraModel vm = new PaginaFinalizarCompraModel();

            Endereco endereco = (Endereco)Entidades[typeof(Endereco).Name];
            IDictionary <CartaoCredito, double> cartoes = (IDictionary <CartaoCredito, double>)Entidades[typeof(IDictionary <CartaoCredito, double>).Name];
            Cupom             cupom       = null;
            CodigoPromocional codigoPromo = null;

            if (Entidades.ContainsKey(typeof(Cupom).Name))
            {
                cupom = (Cupom)Entidades[typeof(Cupom).Name];
            }
            if (Entidades.ContainsKey(typeof(CodigoPromocional).Name))
            {
                codigoPromo = (CodigoPromocional)Entidades[typeof(CodigoPromocional).Name];
            }
            Carrinho carrinho = (Carrinho)Entidades[typeof(Carrinho).Name];

            CarrinhoViewHelper carrinhoVh = new CarrinhoViewHelper
            {
                Entidades = new Dictionary <string, object>
                {
                    [typeof(Carrinho).Name] = carrinho
                }
            };

            vm.Pedido = (CarrinhoModel)carrinhoVh.ViewModel;

            DetalhesEnderecoViewHelper enderecoVh = new DetalhesEnderecoViewHelper
            {
                Entidades = new Dictionary <string, object>
                {
                    [typeof(Endereco).Name] = endereco
                }
            };

            vm.Endereco = (DetalhesEnderecoModel)enderecoVh.ViewModel;

            DetalhesCartaoViewHelper cartaoVh = new DetalhesCartaoViewHelper();

            foreach (var entry in cartoes)
            {
                cartaoVh.Entidades = new Dictionary <string, object>
                {
                    [typeof(CartaoCredito).Name] = entry.Key
                };
                vm.Cartoes[(DetalhesCartaoModel)cartaoVh.ViewModel] = entry.Value;
            }

            if (cupom != null)
            {
                CupomViewHelper cupomVh = new CupomViewHelper
                {
                    Entidades = new Dictionary <string, object>
                    {
                        [typeof(Cupom).Name] = cupom
                    }
                };
                vm.Cupom              = (CupomModel)cupomVh.ViewModel;
                vm.Pedido.PrecoTotal -= vm.Cupom.Valor;
            }

            if (codigoPromo != null)
            {
                CodigoPromocionalViewHelper codigoVh = new CodigoPromocionalViewHelper
                {
                    Entidades = new Dictionary <string, object>
                    {
                        [typeof(CodigoPromocional).Name] = codigoPromo
                    }
                };
                vm.CodigoPromo        = (CodigoPromocionalModel)codigoVh.ViewModel;
                vm.Pedido.PrecoTotal -= vm.CodigoPromo.Valor;
            }

            vm.Frete = (double)Entidades[nameof(Pedido.Frete)];

            _viewModel = vm;
        }
Exemplo n.º 10
0
        public IActionResult _InativarReativarCodigoPromoPartial(string cod)
        {
            CodigoPromocional codigoPromo = _facade.Query <CodigoPromocional>(c => c.Codigo == cod, c => c).FirstOrDefault();

            return(PartialView("../Admin/PartialViews/_InativarReativarCodigoPartial", codigoPromo));
        }