Combine.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Threading.Tasks;
  2. using CardCollector.Controllers;
  3. using CardCollector.DataBase.Entity;
  4. using CardCollector.Resources;
  5. using CardCollector.Session.Modules;
  6. using Telegram.Bot.Types;
  7. namespace CardCollector.Commands.CallbackQuery
  8. {
  9. public class Combine : CallbackQueryCommand
  10. {
  11. protected override string CommandText => Command.combine;
  12. public override async Task Execute()
  13. {
  14. User.Session.State = UserState.CombineMenu;
  15. var combineModule = User.Session.GetModule<CombineModule>();
  16. if (combineModule.SelectedSticker == null)
  17. {
  18. var collectionModule = User.Session.GetModule<CollectionModule>();
  19. combineModule.SelectedSticker = collectionModule.SelectedSticker;
  20. combineModule.Count = collectionModule.Count;
  21. }
  22. var selectedSticker = combineModule.SelectedSticker;
  23. var combineCount = combineModule.GetCombineCount();
  24. if (combineCount == Constants.COMBINE_COUNT)
  25. await MessageController.AnswerCallbackQuery(User, CallbackQueryId, Messages.cant_combine, true);
  26. else
  27. {
  28. if (combineCount + combineModule.Count > Constants.COMBINE_COUNT)
  29. {
  30. combineModule.Count = Constants.COMBINE_COUNT - combineCount;
  31. await MessageController.AnswerCallbackQuery(User, CallbackQueryId, $"{Messages.combine_added_only} " +
  32. $"{combineModule.Count}{Text.items}", true);
  33. }
  34. if (combineModule.CombineList.ContainsKey(selectedSticker))
  35. {
  36. var maxCount = User.Stickers[selectedSticker.Md5Hash].Count;
  37. if (maxCount < combineModule.CombineList[selectedSticker] + combineModule.Count)
  38. combineModule.CombineList[selectedSticker] = combineModule.Count;
  39. else
  40. combineModule.CombineList[selectedSticker] += combineModule.Count;
  41. }
  42. else combineModule.CombineList.Add(selectedSticker, combineModule.Count);
  43. }
  44. await new BackToCombine(User, Update).Execute();
  45. }
  46. public Combine() { }
  47. public Combine(UserEntity user, Update update) : base(user, update) { }
  48. }
  49. }