浏览代码

Add auction and shop commands

Tigran 4 年之前
父节点
当前提交
544330ec00

+ 1 - 1
CardCollector.sln.DotSettings.user

@@ -2,7 +2,7 @@
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FCallbackQueryCommands/@EntryIndexedValue">True</s:Boolean>
 	
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FMessageCommands/@EntryIndexedValue">False</s:Boolean>
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FMessages/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FMessages/@EntryIndexedValue">True</s:Boolean>
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FSortingTypes/@EntryIndexedValue">False</s:Boolean>
 	
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>

+ 36 - 0
CardCollector/Commands/Message/AuctionMessage.cs

@@ -0,0 +1,36 @@
+using System.Threading.Tasks;
+using CardCollector.Controllers;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+
+namespace CardCollector.Commands.Message
+{
+    /* Реалищует команду "Аукцион" */
+    public class AuctionMessage : Message
+    {
+        protected override string Command => MessageCommands.shop;
+        public override async Task Execute()
+        {
+            /* Очищаем чат с пользователем */
+            await User.ClearChat();
+            /* Переводим состояние пользователя в меню аукциона */
+            User.State = UserState.AuctionMenu;
+            /* Формируем сообщение с имеющимися фильтрами у пользователя */
+            var text = $"{Messages.current_filters}\n" +
+                       $"{Messages.author} {(User.Filters["author"].Equals("") ? Messages.all : User.Filters["author"])}\n" +
+                       $"{Messages.tier} {(User.Filters["tier"].Equals(-1) ? Messages.all : new string('⭐', (int)User.Filters["tier"]))}\n" +
+                       $"{Messages.emoji} {(User.Filters["emoji"].Equals("") ? Messages.all : User.Filters["emoji"])}\n" +
+                       $"{Messages.price} {User.Filters["price"]}-∞\n" +
+                       $"{Messages.sorting} {User.Filters["sorting"]}\n" +
+                       $"\n{Messages.select_filter}";
+            /* Отправляем сообщение */
+            var message = await MessageController.SendMessage(User, text, Keyboard.SortingOptions);
+            /* Добавляем это сообщение в список для удаления */
+            User.Messages.Add(message.MessageId);
+        }
+        
+        public AuctionMessage() { }
+        public AuctionMessage(UserEntity user, Update update) : base(user, update) { }
+    }
+}

+ 1 - 1
CardCollector/Commands/Message/Message.cs

@@ -33,7 +33,7 @@ namespace CardCollector.Commands.Message
             new CollectionMessage(),
             
             // Команда "Показать пример"
-            new ShowSample()
+            new ShowSampleMessage()
         };
 
         /* Метод, создающий объекты команд исходя из полученного обновления */

+ 36 - 0
CardCollector/Commands/Message/ShopMessage.cs

@@ -0,0 +1,36 @@
+using System.Threading.Tasks;
+using CardCollector.Controllers;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+
+namespace CardCollector.Commands.Message
+{
+    /* Реализует команду "Магазин" */
+    public class ShopMessage : Message
+    {
+        protected override string Command => MessageCommands.shop;
+        public override async Task Execute()
+        {
+            /* Очищаем чат с пользователем */
+            await User.ClearChat();
+            /* Переводим состояние пользователя в меню магазина */
+            User.State = UserState.ShopMenu;
+            /* Формируем сообщение с имеющимися фильтрами у пользователя */
+            var text = $"{Messages.current_filters}\n" +
+                       $"{Messages.author} {(User.Filters["author"].Equals("") ? Messages.all : User.Filters["author"])}\n" +
+                       $"{Messages.tier} {(User.Filters["tier"].Equals(-1) ? Messages.all : new string('⭐', (int)User.Filters["tier"]))}\n" +
+                       $"{Messages.emoji} {(User.Filters["emoji"].Equals("") ? Messages.all : User.Filters["emoji"])}\n" +
+                       $"{Messages.price} {User.Filters["price"]}-∞\n" +
+                       $"{Messages.sorting} {User.Filters["sorting"]}\n" +
+                       $"\n{Messages.select_filter}";
+            /* Отправляем сообщение */
+            var message = await MessageController.SendMessage(User, text, Keyboard.SortingOptions);
+            /* Добавляем это сообщение в список для удаления */
+            User.Messages.Add(message.MessageId);
+        }
+        
+        public ShopMessage() { }
+        public ShopMessage(UserEntity user, Update update) : base(user, update) { }
+    }
+}

+ 3 - 3
CardCollector/Commands/Message/ShowSample.cs → CardCollector/Commands/Message/ShowSampleMessage.cs

@@ -10,7 +10,7 @@ namespace CardCollector.Commands.Message
     /* Этот класс можно использовать для тестирования или наброски эскизов
      Команда "Показать пример" доступна только пользователям с уровнем доступа "Разработчик" и выше
      PrivilegeLevel = 5 */
-    public class ShowSample : Message
+    public class ShowSampleMessage : Message
     {
         protected override string Command => MessageCommands.show_sample;
         public override async Task Execute()
@@ -59,7 +59,7 @@ namespace CardCollector.Commands.Message
             return base.IsMatches(command) && User is not {PrivilegeLevel: < Constants.PROGRAMMER_PRIVILEGE_LEVEL};
         }
         
-        public ShowSample(UserEntity user, Update update) : base(user, update) { }
-        public ShowSample() { }
+        public ShowSampleMessage(UserEntity user, Update update) : base(user, update) { }
+        public ShowSampleMessage() { }
     }
 }

+ 3 - 3
CardCollector/Resources/Messages.Designer.cs

@@ -97,11 +97,11 @@ namespace CardCollector.Resources {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to (нет).
+        ///   Looks up a localized string similar to Стоимость:.
         /// </summary>
-        internal static string no {
+        internal static string price {
             get {
-                return ResourceManager.GetString("no", resourceCulture);
+                return ResourceManager.GetString("price", resourceCulture);
             }
         }
         

+ 2 - 2
CardCollector/Resources/Messages.resx

@@ -42,7 +42,7 @@
     <data name="all" xml:space="preserve">
         <value>(все)</value>
     </data>
-    <data name="no" xml:space="preserve">
-        <value>(нет)</value>
+    <data name="price" xml:space="preserve">
+        <value>Стоимость:</value>
     </data>
 </root>