Browse Source

Split price filtering to filter by gems and coins

Tigran 4 years ago
parent
commit
d2c1cdc3b3

+ 1 - 1
CardCollector.sln.DotSettings.user

@@ -1,6 +1,6 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 	
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FCommand/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FCommand/@EntryIndexedValue">True</s:Boolean>
 	
 	
 	

+ 5 - 2
CardCollector/Commands/CallbackQuery/BackToFiltersMenu.cs

@@ -19,8 +19,11 @@ namespace CardCollector.Commands.CallbackQuery
                        $"{Messages.author} {(User.Filters[Command.author].Equals("") ? Messages.all : User.Filters[Command.author])}\n" +
                        $"{Messages.tier} {(User.Filters[Command.tier].Equals(-1) ? Messages.all : new string('⭐', (int) User.Filters[Command.tier]))}\n" +
                        $"{Messages.emoji} {(User.Filters[Command.emoji].Equals("") ? Messages.all : User.Filters[Command.emoji])}\n";
-            if (User.State != UserState.CollectionMenu) text += $"{Messages.price} {User.Filters[Command.price]} -" +
-                                                                $" {(User.Filters[Command.price_to] is int p && p != 0 ? p : "∞")}\n";
+            if (User.State != UserState.CollectionMenu) 
+                text += $"{Messages.price} 💰 {User.Filters[Command.price_coins_from]} -" +
+                        $" {(User.Filters[Command.price_coins_to] is int c && c != 0 ? c : "∞")}\n" +
+                        $"{Messages.price} 💎 {User.Filters[Command.price_gems_from]} -" +
+                        $" {(User.Filters[Command.price_gems_to] is int g && g != 0 ? g : "∞")}\n";
             text += $"{Messages.sorting} {User.Filters[Command.sort]}\n\n{Messages.select_filter}";
             /* Редактируем сообщение */
             await MessageController.EditMessage(User, CallbackMessageId, text, Keyboard.GetSortingMenu(User.State));

+ 5 - 0
CardCollector/Commands/CallbackQuery/SetFilterCallback.cs

@@ -17,6 +17,11 @@ namespace CardCollector.Commands.CallbackQuery
             var result = CallbackData.Split('=');
             /* Команду set мы получаем в виде set=<key>=<value>, соответственно аргументы 1 и 2 это ключ и значение словаря */
             User.Filters[result[1]] = Convert.ChangeType(result[2], User.Filters[result[1]].GetType());
+            /* Если левая граница стоимости алмазов или монет больше правой, то меняем правую на бесконечность */
+            if (User.Filters[Command.price_coins_to] is int c && c <= (int) User.Filters[Command.price_coins_from])
+                User.Filters[Command.price_coins_to] = 0;
+            if (User.Filters[Command.price_gems_to] is int g && g <= (int) User.Filters[Command.price_gems_from])
+                User.Filters[Command.price_gems_to] = 0;
             /* Возвращаемся в меню фильтров */
             await new BackToFiltersMenu(User, Update).Execute();
         }

+ 5 - 2
CardCollector/Commands/Message/EnterEmojiMessage.cs

@@ -36,8 +36,11 @@ namespace CardCollector.Commands.Message
                            $"{Messages.author} {(User.Filters[Command.author].Equals("") ? Messages.all : User.Filters[Command.author])}\n" +
                            $"{Messages.tier} {(User.Filters[Command.tier].Equals(-1) ? Messages.all : new string('⭐', (int) User.Filters[Command.tier]))}\n" +
                            $"{Messages.emoji} {(User.Filters[Command.emoji].Equals("") ? Messages.all : User.Filters[Command.emoji])}\n";
-                if (User.State != UserState.CollectionMenu) text += $"{Messages.price} {User.Filters[Command.price]} -" +
-                                                                    $" {(User.Filters[Command.price_to] is int p && p != 0 ? p : "∞")}\n";
+                if (User.State != UserState.CollectionMenu) 
+                    text += $"{Messages.price} 💰 {User.Filters[Command.price_coins_from]} -" +
+                            $" {(User.Filters[Command.price_coins_to] is int c && c != 0 ? c : "∞")}\n" +
+                            $"{Messages.price} 💎 {User.Filters[Command.price_gems_from]} -" +
+                            $" {(User.Filters[Command.price_gems_to] is int g && g != 0 ? g : "∞")}\n";
                 text += $"{Messages.sorting} {User.Filters[Command.sort]}\n\n{Messages.select_filter}";
                 /* Редактируем сообщение */
                 await MessageController.EditMessage(User, Queue[User.Id], text, Keyboard.GetSortingMenu(User.State));

+ 5 - 2
CardCollector/Commands/Message/ShowFiltersMenu.cs

@@ -17,8 +17,11 @@ namespace CardCollector.Commands.Message
                        $"{Messages.author} {(User.Filters[Command.author].Equals("") ? Messages.all : User.Filters[Command.author])}\n" +
                        $"{Messages.tier} {(User.Filters[Command.tier].Equals(-1) ? Messages.all : new string('⭐', (int) User.Filters[Command.tier]))}\n" +
                        $"{Messages.emoji} {(User.Filters[Command.emoji].Equals("") ? Messages.all : User.Filters[Command.emoji])}\n";
-            if (User.State != UserState.CollectionMenu) text += $"{Messages.price} {User.Filters[Command.price]} -" +
-                                                                $" {(User.Filters[Command.price_to] is int p && p != 0 ? p : "∞")}\n";
+            if (User.State != UserState.CollectionMenu) 
+                text += $"{Messages.price} 💰 {User.Filters[Command.price_coins_from]} -" +
+                        $" {(User.Filters[Command.price_coins_to] is int c && c != 0 ? c : "∞")}\n" +
+                        $"{Messages.price} 💎 {User.Filters[Command.price_gems_from]} -" +
+                        $" {(User.Filters[Command.price_gems_to] is int g && g != 0 ? g : "∞")}\n";
             text += $"{Messages.sorting} {User.Filters[Command.sort]}\n\n{Messages.select_filter}";
             /* Отправляем сообщение */
             var message = await MessageController.SendMessage(User, text, Keyboard.GetSortingMenu(User.State));

+ 6 - 4
CardCollector/DataBase/Entity/StickerEntity.cs

@@ -1,5 +1,4 @@
-using System;
-using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 
 namespace CardCollector.DataBase.Entity
@@ -31,8 +30,11 @@ namespace CardCollector.DataBase.Entity
         /* Время, необходимое для получения дохода */
         [Column("income_time"), MaxLength(32)] public int IncomeTime { get; set; } = 0;
         
-        /* Стоимость стикера в магазине */
-        [Column("income_time"), MaxLength(32)] public int Price { get; set; } = 0;
+        /* Стоимость стикера в магазине (монеты) */
+        [Column("price_coins"), MaxLength(32)] public int PriceCoins { get; set; } = 0;
+        
+        /* Стоимость стикера в магазине (алмазы) */
+        [Column("price_gems"), MaxLength(32)] public int PriceGems { get; set; } = 0;
         
         /* Количество звезд стикера (редкость) */
         [Column("tier"), MaxLength(32)] public int Tier { get; set; } = 1;

+ 16 - 8
CardCollector/DataBase/Entity/UserEntity.cs

@@ -47,8 +47,10 @@ namespace CardCollector.DataBase.Entity
             {Command.author, ""},
             {Command.tier, -1},
             {Command.emoji, ""},
-            {Command.price, 0},
-            {Command.price_to, 0},
+            {Command.price_coins_from, 0},
+            {Command.price_coins_to, 0},
+            {Command.price_gems_from, 0},
+            {Command.price_gems_to, 0},
             {Command.sort, SortingTypes.None},
         };
 
@@ -87,12 +89,18 @@ namespace CardCollector.DataBase.Entity
             /* Фильтруем по эмоции */
             if (Filters[Command.emoji] is not "")
                 stickersList = stickersList.Where(item => item.Emoji.Contains((string) Filters[Command.emoji]));
-            /* Фильтруем по цене ОТ если пользователь не в меню коллекции */
-            if (Filters[Command.price] is not 0 && State is not UserState.CollectionMenu)
-                stickersList = stickersList.Where(item => item.Price >= (int)Filters[Command.price]);
-            /* Фильтруем по цене ДО если пользователь не в меню коллекции */
-            if (Filters[Command.price_to] is not 0 && State is not UserState.CollectionMenu)
-                stickersList = stickersList.Where(item => item.Price <= (int)Filters[Command.price_to]);
+            /* Фильтруем по цене монет ОТ если пользователь не в меню коллекции */
+            if (Filters[Command.price_coins_from] is not 0 && State is not UserState.CollectionMenu)
+                stickersList = stickersList.Where(item => item.PriceCoins >= (int)Filters[Command.price_coins_from]);
+            /* Фильтруем по цене монет ДО если пользователь не в меню коллекции */
+            if (Filters[Command.price_coins_to] is not 0 && State is not UserState.CollectionMenu)
+                stickersList = stickersList.Where(item => item.PriceCoins <= (int)Filters[Command.price_coins_to]);
+            /* Фильтруем по цене алмазов ОТ если пользователь не в меню коллекции */
+            if (Filters[Command.price_gems_from] is not 0 && State is not UserState.CollectionMenu)
+                stickersList = stickersList.Where(item => item.PriceGems >= (int)Filters[Command.price_gems_from]);
+            /* Фильтруем по цене адмазов ДО если пользователь не в меню коллекции */
+            if (Filters[Command.price_gems_to] is not 0 && State is not UserState.CollectionMenu)
+                stickersList = stickersList.Where(item => item.PriceGems <= (int)Filters[Command.price_gems_to]);
             /* Если не установлена сортировка, возвращаем результат */
             if ((string) Filters[Command.sort] == SortingTypes.None) return ToTelegramResults(stickersList, command);
             

+ 30 - 3
CardCollector/Resources/Command.Designer.cs

@@ -115,11 +115,38 @@ namespace CardCollector.Resources {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to price_to.
+        ///   Looks up a localized string similar to price_coins_from.
         /// </summary>
-        internal static string price_to {
+        internal static string price_coins_from {
             get {
-                return ResourceManager.GetString("price_to", resourceCulture);
+                return ResourceManager.GetString("price_coins_from", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to price_coins_to.
+        /// </summary>
+        internal static string price_coins_to {
+            get {
+                return ResourceManager.GetString("price_coins_to", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to price_gems_from.
+        /// </summary>
+        internal static string price_gems_from {
+            get {
+                return ResourceManager.GetString("price_gems_from", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to price_gems_to.
+        /// </summary>
+        internal static string price_gems_to {
+            get {
+                return ResourceManager.GetString("price_gems_to", resourceCulture);
             }
         }
         

+ 12 - 3
CardCollector/Resources/Command.resx

@@ -51,10 +51,19 @@
     <data name="select_sticker" xml:space="preserve">
         <value>select</value>
     </data>
+    <data name="price_coins_from" xml:space="preserve">
+        <value>price_coins_from</value>
+    </data>
+    <data name="price_coins_to" xml:space="preserve">
+        <value>price_coins_to</value>
+    </data>
+    <data name="price_gems_from" xml:space="preserve">
+        <value>price_gems_from</value>
+    </data>
+    <data name="price_gems_to" xml:space="preserve">
+        <value>price_gems_to</value>
+    </data>
     <data name="price" xml:space="preserve">
         <value>price</value>
     </data>
-    <data name="price_to" xml:space="preserve">
-        <value>price_to</value>
-    </data>
 </root>

+ 24 - 8
CardCollector/Resources/Keyboard.cs

@@ -69,20 +69,36 @@ namespace CardCollector.Resources
         public static readonly InlineKeyboardMarkup PriceOptions = new (new[]
         {
             new[] {
-                InlineKeyboardButton.WithCallbackData($"{Text.from} 0", $"{Command.set}={Command.price}=0"),
-                InlineKeyboardButton.WithCallbackData($"{Text.to} 100", $"{Command.set}={Command.price_to}=100"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.from} 0", $"{Command.set}={Command.price_coins_from}=0"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.to} 100", $"{Command.set}={Command.price_coins_to}=100"),
             },
             new[] {
-                InlineKeyboardButton.WithCallbackData($"{Text.from} 100", $"{Command.set}={Command.price}=100"),
-                InlineKeyboardButton.WithCallbackData($"{Text.to} 500", $"{Command.set}={Command.price_to}=500"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.from} 100", $"{Command.set}={Command.price_coins_from}=100"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.to} 500", $"{Command.set}={Command.price_coins_to}=500"),
             },
             new[] {
-                InlineKeyboardButton.WithCallbackData($"{Text.from} 500", $"{Command.set}={Command.price}=500"),
-                InlineKeyboardButton.WithCallbackData($"{Text.to} 1000", $"{Command.set}={Command.price_to}=1000"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.from} 500", $"{Command.set}={Command.price_coins_from}=500"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.to} 1000", $"{Command.set}={Command.price_coins_to}=1000"),
             },
             new[] {
-                InlineKeyboardButton.WithCallbackData($"{Text.from} 1000", $"{Command.set}={Command.price}=1000"),
-                InlineKeyboardButton.WithCallbackData($"{Text.to} ∞", $"{Command.set}={Command.price_to}=0"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.from} 1000", $"{Command.set}={Command.price_coins_from}=1000"),
+                InlineKeyboardButton.WithCallbackData($"💰 {Text.to} ∞", $"{Command.set}={Command.price_coins_to}=0"),
+            },
+            new[] {
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.from} 0", $"{Command.set}={Command.price_gems_from}=0"),
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.to} 10", $"{Command.set}={Command.price_gems_to}=10"),
+            },
+            new[] {
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.from} 10", $"{Command.set}={Command.price_gems_from}=10"),
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.to} 50", $"{Command.set}={Command.price_gems_to}=50"),
+            },
+            new[] {
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.from} 50", $"{Command.set}={Command.price_gems_from}=50"),
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.to} 100", $"{Command.set}={Command.price_gems_to}=100"),
+            },
+            new[] {
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.from} 100", $"{Command.set}={Command.price_gems_from}=100"),
+                InlineKeyboardButton.WithCallbackData($"💎 {Text.to} ∞", $"{Command.set}={Command.price_gems_to}=0"),
             },
             new[] {InlineKeyboardButton.WithCallbackData(Text.cancel, Command.back)},
         });