AuctionController.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Threading.Tasks;
  2. using CardCollector.DataBase.Entity;
  3. using CardCollector.Resources;
  4. namespace CardCollector.Auction
  5. {
  6. /* Контроллер аукциона, управляет всеми транзакциями
  7. между пользователями */
  8. public static class AuctionController
  9. {
  10. /*Метод используется для продажи стикеров на аукционе
  11. user - пользователь, продающий стикер
  12. stickerShortHashCode - MD5 хеш представляющий собой сумму id стикера и id пользователя, используется в словаре как ключ
  13. price - цена за штуку
  14. count - количество продаваемых стикеров*/
  15. private static async Task<ResultCode> SellCard(UserEntity user, string stickerShortHashCode, int price, int count = 1)
  16. {
  17. if (count > user.Stickers[stickerShortHashCode].Count)
  18. return ResultCode.NotEnoughStickers;
  19. //подтверждаем действие
  20. user.Stickers[stickerShortHashCode].Count -= count;
  21. user.Cash.Coins += price * count;
  22. return ResultCode.Ok;
  23. }
  24. private static async Task<ResultCode> BuyCard(UserEntity user, string stickerShortHashCode, int price, int count = 1)
  25. {
  26. if (user.Cash.Coins < count * price)
  27. return ResultCode.NotEnoughCash;
  28. //подтверждаем действие
  29. user.Stickers[stickerShortHashCode].Count += count;
  30. user.Cash.Coins += price * count;
  31. return ResultCode.Ok;
  32. }
  33. }
  34. }