public CardLibraryDeckAssignment(CardLibraryItem cardLibraryEntry) { Assert.NotNull(cardLibraryEntry, nameof(cardLibraryEntry)); this.CardLibraryEntry = cardLibraryEntry; this.ExecutedAssignments = 0; }
public void RemoveCardFromLibrary(CardLibraryItem card, NpgsqlTransaction transaction = null) { if (card.Quantity > 1) { DecrementQuantity(card.Card_ID, card.User_ID, transaction); --card.Quantity; } else { DeleteCard(card.Card_ID, card.User_ID, transaction); } }
public void AcceptTrade(Guid tradeID, Guid tradeOfferID, RequestContext requestContext) { using (NpgsqlConnection connection = database.CreateAndOpenConnection()) using (NpgsqlTransaction transaction = connection.BeginTransaction()) { UserSession session = CookieAuthenticationModule.GetUserSessionFromRequest(requestContext, transaction); Trade trade = tradeRepository.GetTrade(tradeID, transaction); TradeOffer offer = tradeRepository.GetTradeOffer(tradeOfferID, transaction); if (trade == null) { throw new NotFoundException($"Trade with ID:{trade} could not be found."); } if (offer == null) { throw new NotFoundException($"TradeOffer with ID:{tradeOfferID} could not be found."); } if (trade.User_ID != session.UserID) { throw new InvalidAcceptorException($"Cannot Accept Trade with ID: {trade.Trade_ID}. Invalid User."); } ValidateCardForTrade(trade.Card_ID, trade.User_ID, transaction); ValidateCardForTrade(offer.Card_ID, offer.User_ID, transaction); cardLibraryRepository.AddCardToLibrary(trade.Card_ID, offer.User_ID, transaction); CardLibraryItem tradeItem = cardLibraryRepository.GetCardLibraryItem(trade.Card_ID, trade.User_ID, transaction); cardLibraryRepository.RemoveCardFromLibrary(tradeItem, transaction); cardLibraryRepository.AddCardToLibrary(offer.Card_ID, trade.User_ID, transaction); CardLibraryItem offerItem = cardLibraryRepository.GetCardLibraryItem(offer.Card_ID, offer.User_ID, transaction); cardLibraryRepository.RemoveCardFromLibrary(offerItem, transaction); tradeRepository.DeleteTradeOffer(tradeOfferID, transaction); tradeRepository.DeleteTrade(tradeID, transaction); transaction.Commit(); } }