public async Task <IActionResult> AddCard(DeckDetailsViewModel model) { int cardId; int deckId; if (int.TryParse(model.CardIdToAdd, out cardId) && int.TryParse(model.DeckId, out deckId)) { var mapping = await _DataAccess.DeckDataAccess.GetDeckCardMappingAsync(deckId, cardId); if (mapping != null) { mapping.Count++; await _DataAccess.DeckDataAccess.UpsertDeckCardMappingAsync(mapping); } else { mapping = new DeckCardMapping(); mapping.CardId = cardId; mapping.DeckId = deckId; mapping.Count = 1; await _DataAccess.DeckDataAccess.UpsertDeckCardMappingAsync(mapping); } } return(RedirectToAction("Edit", model)); }
public async Task <IActionResult> IncreaseCardCount(string dId, string cId) { int cardId; int deckId; if (int.TryParse(cId, out cardId) && int.TryParse(dId, out deckId)) { var mapping = await _DataAccess.DeckDataAccess.GetDeckCardMappingAsync(deckId, cardId); if (mapping != null) { mapping.Count++; await _DataAccess.DeckDataAccess.UpsertDeckCardMappingAsync(mapping); } else { mapping = new DeckCardMapping(); mapping.CardId = cardId; mapping.DeckId = deckId; mapping.Count = 1; await _DataAccess.DeckDataAccess.UpsertDeckCardMappingAsync(mapping); } } var model = new DeckDetailsViewModel(); model.DeckId = dId; return(RedirectToAction("Edit", model)); }
public async Task <IActionResult> AddToDeck(SearchDetailsViewModel model) { int deckId; if (int.TryParse(model.DeckId, out deckId)) { var card = await _DataAccess.CardDataAccess.GetCardByNameAsync(model.Name); if (card == null) { var apiCard = await _YGOProDeckAccess.GetCardByNameAsync(model.Name); if (apiCard.CardImages != null && apiCard.CardImages.Count > 0) { apiCard.ImageBytes = _YGOProDeckAccess.GetCardImage(apiCard.CardImages.First()); } card = await _DataAccess.CardDataAccess.Upsert(apiCard); } var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); // will give the user's userId if (string.IsNullOrWhiteSpace(userId)) { return(RedirectToAction("Details", model)); } var userInventory = await _DataAccess.UserInventoryDataAccess.GetUserInventoryByUserAsync(userId); var userCardMapping = _DataAccess.CardDataAccess.GetSpecificCardMappingForUserAsync(userInventory.Id, card.Id); if (userCardMapping == null) { var cardmapping = new InventoryCardMapping(); cardmapping.CardId = card.Id; cardmapping.UserInventoryId = userInventory.Id; cardmapping.Count = 1; await _DataAccess.CardDataAccess.UpsertCardMappingAsync(cardmapping); } var mapping = await _DataAccess.DeckDataAccess.GetDeckCardMappingAsync(deckId, card.Id); if (mapping != null) { mapping.Count++; await _DataAccess.DeckDataAccess.UpsertDeckCardMappingAsync(mapping); } else { mapping = new DeckCardMapping(); mapping.CardId = card.Id; mapping.DeckId = deckId; mapping.Count = 1; await _DataAccess.DeckDataAccess.UpsertDeckCardMappingAsync(mapping); } } return(RedirectToAction("Details", model)); }
public async Task <DeckCardMapping> UpsertDeckCardMappingAsync(DeckCardMapping deckCardMapping) { var mapping = _context.DeckCardMappings.FirstOrDefault(x => x.DeckId == deckCardMapping.DeckId && x.CardId == deckCardMapping.CardId); if (mapping != null) { mapping.Count = deckCardMapping.Count; } else { mapping = new DeckCardMapping(); mapping.Count = 1; mapping.CardId = deckCardMapping.CardId; mapping.DeckId = deckCardMapping.DeckId; _context.DeckCardMappings.Add(mapping); } await _context.SaveChangesAsync(); return(mapping); }