EnterGemsExchange.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using CardCollector.Controllers;
  4. using CardCollector.DataBase.Entity;
  5. using CardCollector.Resources;
  6. using CardCollector.Session.Modules;
  7. using Telegram.Bot.Types;
  8. using Telegram.Bot.Types.Enums;
  9. namespace CardCollector.Commands.Message
  10. {
  11. public class EnterGemsExchange : MessageCommand
  12. {
  13. protected override string CommandText => "";
  14. protected override bool ClearMenu => false;
  15. protected override bool AddToStack => false;
  16. private static readonly List<long> Queue = new ();
  17. public override async Task Execute()
  18. {
  19. var module = User.Session.GetModule<ShopModule>();
  20. if (!int.TryParse(Update.Message!.Text, out var sum) || sum < 0)
  21. await MessageController.EditMessage(User,
  22. $"{Messages.exchange_mesage}" +
  23. $"\n{Messages.gems_exchange_count} {module.EnteredExchangeSum}{Text.gem}" +
  24. $"\n{Messages.coins_exchange_count} {module.EnteredExchangeSum * 150}{Text.coin}" +
  25. $"\n\n{Messages.please_enter_integer}",
  26. Keyboard.BuyCoinsKeyboard);
  27. else
  28. {
  29. module.EnteredExchangeSum = sum;
  30. await MessageController.EditMessage(User,
  31. $"{Messages.exchange_mesage}" +
  32. $"\n{Messages.gems_exchange_count} {module.EnteredExchangeSum}{Text.gem}" +
  33. $"\n{Messages.coins_exchange_count} {module.EnteredExchangeSum * 150}{Text.coin}" +
  34. $"\n\n{Messages.confirm_exchange}",
  35. Keyboard.BuyCoinsKeyboard);
  36. Queue.Remove(User.Id);
  37. }
  38. }
  39. /* Добавляем пользователя в очередь */
  40. public static void AddToQueue(long userId)
  41. {
  42. if (!Queue.Contains(userId)) Queue.Add(userId);
  43. }
  44. /* Удаляем пользователя из очереди */
  45. public static void RemoveFromQueue(long userId)
  46. {
  47. Queue.Remove(userId);
  48. }
  49. protected internal override bool IsMatches(UserEntity user, Update update)
  50. {
  51. return Queue.Contains(user.Id) && update.Message!.Type == MessageType.Text;
  52. }
  53. public EnterGemsExchange() { }
  54. public EnterGemsExchange(UserEntity user, Update update) : base(user, update) { }
  55. }
  56. }