AuctionController.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. public static async Task<int> GetStickerCount(string stickerId)
  34. {
  35. //TODO вернуть количество стикера на аукционе по его id
  36. return 0;
  37. }
  38. }
  39. }