private async Task <bool> HasEstoque(int kitId, int quantidade, string statusAtivacao) { var kit = await _kitsServices.GetByIdAsync(kitId); var(armacoesDoKit, status) = await _produtoCorServices.GetListByKitAsync(kit.Nome, "AT"); var carrinho = SessionHelper.GetObjectFromJson <List <CarrinhoViewModel> >(_httpContext.HttpContext.Session, "cart"); foreach (var item in armacoesDoKit) { var quant = quantidade; if (carrinho != null) { foreach (var produtos in carrinho) { if (produtos.Produto != null) { if (produtos.Produto.Id == item.ProdutoModelId && produtos.Cor.Id == item.CorModelId) { quant += produtos.QuantidadeIndividual; } } else { if (produtos.Kits.Id == kit.Id) { continue; } var kits = await _kitsServices.GetByIdAsync(produtos.Kits.Id); var(armacoes, st) = await _produtoCorServices.GetListByKitAsync(kits.Nome, "AT"); quant += armacoes.Where(x => x.ProdutoModelId == item.ProdutoModelId && x.CorModelId == item.CorModelId).Sum(x => produtos.QuantidadeIndividual); } } } if (!await _produtoCorServices.VerificarEstoque(item.ProdutoModelId, item.CorModelId, quant, "AT")) { return(false); } } return(true); }
public async Task <KitsViewModel> GetByIdAsync(int id) { return(_mapper.Map <KitsViewModel>(await _kitsServices.GetByIdAsync(id))); }