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")); }
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); }
public async Task <bool> VerificarEstoque(int prodId, int idCor, int quantidade) { return(await _domainService.VerificarEstoque(prodId, idCor, quantidade, "AT")); }