Kaynağa Gözat

refactor code

Tigran 4 yıl önce
ebeveyn
işleme
7a3fd93a6b

+ 3 - 5
CardCollector/Commands/ChosenInlineResult/SendStickerResult.cs

@@ -1,6 +1,5 @@
 using System.Threading.Tasks;
 using CardCollector.DataBase.Entity;
-using CardCollector.DataBase.EntityDao;
 using Telegram.Bot.Types;
 
 namespace CardCollector.Commands.ChosenInlineResult
@@ -8,12 +7,11 @@ namespace CardCollector.Commands.ChosenInlineResult
     public class SendStickerResult : ChosenInlineResult
     {
         protected override string Command => "send_sticker";
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override Task Execute()
         {
             var shortHash = InlineResult.Split('=')[1];
-            var stickerRelation = await UserStickerRelationDao.GetByShortHash(shortHash);
-            stickerRelation.Count--;
-            return new Telegram.Bot.Types.Message();
+            User.Stickers[shortHash].Count--;
+            return Task.CompletedTask;
         }
         
         public SendStickerResult(UserEntity user, Update update, string inlineResult)

+ 2 - 2
CardCollector/Commands/CommandNotFound.cs

@@ -10,9 +10,9 @@ namespace CardCollector.Commands
         protected override string Command => "";
         private readonly string _command;
 
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override async Task Execute()
         {
-            return await MessageController.SendMessage(User, "Команда не найдена " + _command);
+            await MessageController.SendMessage(User, "Команда не найдена " + _command);
         }
 
         public CommandNotFound(UserEntity user, Update update, string command) : base(user, update)

+ 1 - 2
CardCollector/Commands/IgnoreUpdate.cs

@@ -9,11 +9,10 @@ namespace CardCollector.Commands
     public class IgnoreUpdate : UpdateModel
     {
         protected override string Command => "";
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override async Task Execute()
         {
             if (Update.Message?.Chat.Type is ChatType.Private)
                 await MessageController.DeleteMessage(User, Update.Message.MessageId);
-            return new Telegram.Bot.Types.Message();
         }
         
         public IgnoreUpdate(UserEntity user, Update update) : base(user, update) { }

+ 2 - 4
CardCollector/Commands/InlineQuery/ShowStickersInGroup.cs

@@ -1,5 +1,4 @@
-using System.Linq;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
 using CardCollector.Controllers;
 using CardCollector.DataBase.Entity;
 using Telegram.Bot.Types;
@@ -10,12 +9,11 @@ namespace CardCollector.Commands.InlineQuery
     {
         protected override string Command => "";
         
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override async Task Execute()
         {
             var filter = Update.InlineQuery!.Query;
             var stickersList = await User.GetStickersList("send_sticker",filter);
             await MessageController.AnswerInlineQuery(InlineQueryId, stickersList, "название");
-            return new Telegram.Bot.Types.Message();
         }
 
         protected override bool IsMatches(string command)

+ 3 - 2
CardCollector/Commands/Message/ProfileMessage.cs

@@ -9,14 +9,15 @@ namespace CardCollector.Commands.Message
     public class ProfileMessage : Message
     {
         protected override string Command => "Профиль";
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override async Task Execute()
         {
             var keyboard = new InlineKeyboardMarkup(new[]
                 {
                     InlineKeyboardButton.WithCallbackData("Собрать прибыль")
                 }
             );
-            return await MessageController.SendMessage(User, 
+            await MessageController.SendMessage(
+                User, 
                 $"{User.Username}\n" +
                        $"Монеты: {User.Cash.Coins}\n" +
                        $"Алмазы: {User.Cash.Gems}",

+ 2 - 3
CardCollector/Commands/Message/StartMessage.cs

@@ -1,7 +1,6 @@
 using System.Threading.Tasks;
 using CardCollector.Controllers;
 using CardCollector.DataBase.Entity;
-using Microsoft.EntityFrameworkCore.Metadata.Internal;
 using Telegram.Bot.Types;
 using Telegram.Bot.Types.ReplyMarkups;
 
@@ -11,14 +10,14 @@ namespace CardCollector.Commands.Message
     {
         protected override string Command => "/start";
         
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override async Task Execute()
         {
             var keyboard = new ReplyKeyboardMarkup(new []
             {
                 new KeyboardButton[] {"Профиль", "Коллекция"},
                 new KeyboardButton[] {"Магазин", "Аукцион"},
             }) { ResizeKeyboard = true };
-            return await MessageController.SendMessage(User,"Привет!", keyboard);
+            await MessageController.SendMessage(User,"Привет!", keyboard);
         }
         
         public StartMessage(UserEntity user, Update update) : base(user, update) { }

+ 3 - 4
CardCollector/Commands/MyChatMember/MyChatMember.cs

@@ -10,7 +10,7 @@ namespace CardCollector.Commands.MyChatMember
     {
         protected override string Command => "";
         private readonly ChatMemberStatus _status;
-        public override async Task<Telegram.Bot.Types.Message> Execute()
+        public override async Task Execute()
         {
             switch (_status)
             {
@@ -29,10 +29,9 @@ namespace CardCollector.Commands.MyChatMember
                 case ChatMemberStatus.Restricted or ChatMemberStatus.Left:
                     break;
                 default:
-                    return await new CommandNotFound(User, Update, _status.ToString()).Execute();
+                    await new CommandNotFound(User, Update, _status.ToString()).Execute();
+                    break;
             }
-
-            return new Telegram.Bot.Types.Message();
         }
         public static async Task<UpdateModel> Factory(Update update)
         {

+ 1 - 1
CardCollector/Commands/UpdateModel.cs

@@ -10,7 +10,7 @@ namespace CardCollector.Commands
         protected UserEntity User;
         protected Update Update;
 
-        public abstract Task<Telegram.Bot.Types.Message> Execute();
+        public abstract Task Execute();
 
         protected virtual bool IsMatches(string command)
         {

+ 0 - 1
CardCollector/Controllers/MessageController.cs

@@ -39,7 +39,6 @@ namespace CardCollector.Controllers
                     UpdateType.ChosenInlineResult => await ChosenInlineResult.Factory(update),
                     _ => throw new ArgumentOutOfRangeException()
                 };
-                // var message =
                 await executor.Execute();
             }
             catch (Exception e)

+ 3 - 2
CardCollector/DataBase/Entity/UserEntity.cs

@@ -1,6 +1,7 @@
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
 using System.Threading.Tasks;
 using CardCollector.DataBase.EntityDao;
 using Telegram.Bot.Types.InlineQueryResults;
@@ -17,12 +18,12 @@ namespace CardCollector.DataBase.Entity
         [Column("is_blocked"), MaxLength(11)] public bool IsBlocked { get; set; }
         
         [NotMapped] public CashEntity Cash { get; set; }
+        [NotMapped] public Dictionary<string, UserStickerRelationEntity> Stickers { get; set; }
         
         public async Task<IEnumerable<InlineQueryResult>> GetStickersList(string command, string filter)
         {
             var result = new List<InlineQueryResult>();
-            var stickers = await UserStickerRelationDao.GetListById(Id);
-            foreach (var sticker in stickers.Values)
+            foreach (var sticker in Stickers.Values.Where(i => i.Count > 0))
             {
                 if (filter != "")
                 {

+ 1 - 0
CardCollector/DataBase/EntityDao/UserDao.cs

@@ -24,6 +24,7 @@ namespace CardCollector.DataBase.EntityDao
                 
                 // Build user object
                 result.Cash = await CashDao.GetById(user.Id);
+                result.Stickers = await UserStickerRelationDao.GetListById(user.Id);
                 
                 // Add to avoid database fetching
                 ActiveUsers.Add(user.Id, result);

+ 2 - 2
CardCollector/DataBase/EntityDao/UserStickerRelationDao.cs

@@ -13,8 +13,8 @@ namespace CardCollector.DataBase.EntityDao
         public static async Task<Dictionary<string, UserStickerRelationEntity>> GetListById(long userId)
         {
             var result = await Table
-                .Where(i => i.UserId == userId && i.Count > 0)
-                .ToDictionaryAsync(p=> p.StickerId, p=> p);
+                .Where(i => i.UserId == userId)
+                .ToDictionaryAsync(p=> p.ShortHash, p=> p);
             return result;
         }