예제 #1
0
        private async Task <bool> HasEstoque(int prodId, int corId, int quantidade)
        {
            var carrinho = SessionHelper.GetObjectFromJson <List <CarrinhoViewModel> >(_httpContext.HttpContext.Session, "cart");

            if (carrinho == null)
            {
                return(await _produtoCorServices.VerificarEstoque(prodId, corId, quantidade, "AT"));
            }

            var kits = carrinho.FindAll(x => x.Kits != null);

            if (!kits.Any())
            {
                return(await _produtoCorServices.VerificarEstoque(prodId, corId, quantidade, "AT"));
            }

            foreach (var item in kits)
            {
                var(produtosDoKit, status) = await _produtoCorServices.GetListByKitAsync(item.Kits.Nome, "AT");

                quantidade += produtosDoKit.Where(prod => prod.ProdutoModelId == prodId && prod.CorModelId == corId).Sum(prod => item.QuantidadeIndividual);
            }

            return(await _produtoCorServices.VerificarEstoque(prodId, corId, quantidade, "AT"));
        }
예제 #2
0
        public async Task <KitsViewModel> GetKitsAsync(int id, string statusAtivacao)
        {
            var kitsViewModel = await GetByIdAsync(id).ConfigureAwait(false);

            var(listaCorModel, validacaoEstoque) = await _produtoCorServices.GetListByKitAsync(kitsViewModel.Nome, statusAtivacao);

            var(listKitProdutos, fotoPrincipal) = await BuildKitsProdutosViewModel(listaCorModel).ConfigureAwait(false);

            kitsViewModel.Produtos      = listKitProdutos;
            kitsViewModel.fotoPrincipal = fotoPrincipal;

            kitsViewModel.StatusVenda = validacaoEstoque ? "Indisponivel" : "Em Estoque";

            return(kitsViewModel);
        }
예제 #3
0
        private async Task <bool> VerificarEstoqueFinalizacao(IEnumerable <CarrinhoViewModel> carrinho)
        {
            var cart = carrinho.ToList();

            var kit = cart.FindAll(x => x.Kits != null);

            var lista = new List <ArmacoesViewModel>();

            foreach (var k in kit)
            {
                var(armacoesDoKit, status) = await _produtoCorServices.GetListByKitAsync(k.Kits.Nome, "AT");

                foreach (var armacao in armacoesDoKit)
                {
                    if (lista.Any())
                    {
                        var index = IsExist(armacao.ProdutoModelId, armacao.CorModelId, lista);

                        if (index != -1)
                        {
                            lista[index].Quantidade += k.QuantidadeIndividual;
                        }
                        else
                        {
                            lista.Add(new ArmacoesViewModel(armacao.ProdutoModelId, armacao.CorModelId, k.QuantidadeIndividual));
                        }
                    }
                    else
                    {
                        lista.Add(new ArmacoesViewModel(armacao.ProdutoModelId, armacao.CorModelId, k.QuantidadeIndividual));
                    }
                }
            }

            var produtos = cart.FindAll(x => x.Produto != null);

            foreach (var p in produtos)
            {
                if (lista.Any())
                {
                    var index = IsExist(p.Produto.Id, p.Cor.Id, lista);

                    if (index != -1)
                    {
                        lista[index].Quantidade += p.QuantidadeIndividual;
                    }
                    else
                    {
                        lista.Add(new ArmacoesViewModel(p.Produto.Id, p.Cor.Id, p.QuantidadeIndividual));
                    }
                }
                else
                {
                    lista.Add(new ArmacoesViewModel(p.Produto.Id, p.Cor.Id, p.QuantidadeIndividual));
                }
            }

            foreach (var item in lista)
            {
                if (!await _produtoCorServices.VerificarEstoque(item.Armacao, item.Cor, item.Quantidade, "AT"))
                {
                    return(false);
                }
            }

            return(true);
        }