Browse Source

Control panel and logs menu

Tigran 3 years ago
parent
commit
4a9b85ad58

+ 29 - 0
CardCollector/Commands/CallbackQuery/ControlPanel.cs

@@ -0,0 +1,29 @@
+using System.Threading.Tasks;
+using CardCollector.Controllers;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+using Telegram.Bot.Types.Enums;
+
+namespace CardCollector.Commands.CallbackQuery
+{
+    public class ControlPanel : CallbackQueryCommand
+    {
+        protected override string CommandText => Command.control_panel;
+        protected override bool AddToStack => true;
+
+        public override async Task Execute()
+        {
+            await MessageController.EditMessage(User, Messages.control_panel, 
+                Keyboard.ControlPanel(User.PrivilegeLevel), ParseMode.Html);
+        }
+
+        protected internal override bool IsMatches(UserEntity user, Update update)
+        {
+            return base.IsMatches(user, update) && user.PrivilegeLevel > PrivilegeLevel.Vip;
+        }
+
+        public ControlPanel() { }
+        public ControlPanel(UserEntity user, Update update) : base(user, update) { }
+    }
+}

+ 26 - 0
CardCollector/Commands/CallbackQuery/LogsMenu.cs

@@ -0,0 +1,26 @@
+using System;
+using System.Threading.Tasks;
+using CardCollector.Controllers;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+using Telegram.Bot.Types.Enums;
+
+namespace CardCollector.Commands.CallbackQuery
+{
+    public class LogsMenu : CallbackQueryCommand
+    {
+        protected override string CommandText => Command.logs_menu;
+        
+        public override async Task Execute()
+        {
+            var date = Convert.ToDateTime(CallbackData.Split('=')[1]);
+            var message = string.Format(Messages.logs_on_date, date.ToString("dd.MM.yyyy"));
+            //TODO add logs rows
+            await MessageController.EditMessage(User, message, Keyboard.LogsMenu(date), ParseMode.Html);
+        }
+
+        public LogsMenu() { }
+        public LogsMenu(UserEntity user, Update update) : base(user, update) { }
+    }
+}

+ 2 - 0
CardCollector/Commands/CallbackQueryCommand.cs

@@ -65,6 +65,8 @@ namespace CardCollector.Commands
             new SetExchangeSum(),
             new SetGemsSum(),
             new ReturnFromAuction(),
+            new ControlPanel(),
+            new LogsMenu(),
         };
 
         /* Метод, создающий объекты команд исходя из полученного обновления */

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

@@ -19,7 +19,7 @@ namespace CardCollector.Commands.Message
 
         protected internal override bool IsMatches(UserEntity user, Update update)
         {
-            return base.IsMatches(user, update) && user.PrivilegeLevel >= Constants.ARTIST_PRIVILEGE_LEVEL;
+            return base.IsMatches(user, update) && user.PrivilegeLevel >= PrivilegeLevel.Artist;
         }
 
         public DownloadStickerPack() { }

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

@@ -30,7 +30,7 @@ namespace CardCollector.Commands.Message
         /* Нужно помимо совпадения текста проверить пользователя на уровень привилегий */
         protected internal override bool IsMatches(UserEntity user, Update update)
         {
-            return base.IsMatches(user, update) && user.PrivilegeLevel >= Constants.PROGRAMMER_PRIVILEGE_LEVEL;
+            return base.IsMatches(user, update) && user.PrivilegeLevel >= PrivilegeLevel.Programmer;
         }
         
         public ShowSample(UserEntity user, Update update) : base(user, update) { }

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

@@ -17,7 +17,7 @@ namespace CardCollector.Commands.Message
 
         protected internal override bool IsMatches(UserEntity user, Update update)
         {
-            return base.IsMatches(user, update) && user.PrivilegeLevel >= Constants.PROGRAMMER_PRIVILEGE_LEVEL;
+            return base.IsMatches(user, update) && user.PrivilegeLevel >= PrivilegeLevel.Programmer;
         }
 
         public StopBot() { }

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

@@ -29,8 +29,14 @@ namespace CardCollector.DataBase.Entity
         [Column("is_blocked"), MaxLength(11)] public bool IsBlocked { get; set; } = false;
 
         /* Уровень привилегий пользователя */
-        [Column("privilege_level"), MaxLength(32)] public int PrivilegeLevel { get; set; } = 0;
-        
+        [Column("privilege_level"), MaxLength(32)] public int _privilegeLevel { get; set; } = 0;
+
+        [NotMapped] public PrivilegeLevel PrivilegeLevel
+        {
+            get => (PrivilegeLevel) _privilegeLevel;
+            set => _privilegeLevel = (int) value;
+        }
+
         /* Счет пользователя */
         [NotMapped] public CashEntity Cash { get; set; }
         /*Уровень пользователя*/

+ 9 - 0
CardCollector/Resources/Command.Designer.cs

@@ -267,6 +267,15 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to ACB.
+        /// </summary>
+        internal static string logs_menu {
+            get {
+                return ResourceManager.GetString("logs_menu", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to AAS.
         /// </summary>

+ 3 - 0
CardCollector/Resources/Command.resx

@@ -162,4 +162,7 @@
     <data name="return_from_auction" xml:space="preserve">
         <value>ACA</value>
     </data>
+    <data name="logs_menu" xml:space="preserve">
+        <value>ACB</value>
+    </data>
 </root>

+ 1 - 23
CardCollector/Resources/Constants.cs

@@ -15,30 +15,8 @@ namespace CardCollector.Resources
         public static readonly bool UNLIMITED_ALL_STICKERS = false;
         /* Время простоя удаления пользователей */
         public const int SESSION_ACTIVE_PERIOD = DEBUG ? 1 : 60;
-        
-        /* Уровни привилегий пользователей системы */
-        public const int OWNER_PRIVILEGE_LEVEL = 10;
-        public const int ADMIN_PRIVILEGE_LEVEL = 9;
-        public const int PROGRAMMER_PRIVILEGE_LEVEL = 7;
-        public const int ARTIST_PRIVILEGE_LEVEL = 4;
-        
+
         /* Количество стикеров для создания комбинации */
         public const int COMBINE_COUNT = 5;
-
-
-        public const int AuctionDao = 1;
-        public const int CashDao = 2;
-        public const int DailyTaskDao = 3;
-        public const int LevelDao = 4;
-        public const int PacksDao = 5;
-        public const int SessionTokenDao = 6;
-        public const int SettingsDao = 7;
-        public const int ShopDao = 8;
-        public const int SpecialOfferUsersDao = 9;
-        public const int StickerDao = 10;
-        public const int UserDao = 11;
-        public const int UserLevelDao = 12;
-        public const int UserPacksDao = 13;
-        public const int UserStickerRelationDao = 14;
     }
 }

+ 26 - 3
CardCollector/Resources/Keyboard.cs

@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Threading.Tasks;
 using CardCollector.DataBase.Entity;
 using CardCollector.DataBase.EntityDao;
@@ -411,7 +412,7 @@ namespace CardCollector.Resources
         }
 
         /* Клавиатура, отображаемая вместе с сообщением профиля */
-        public static InlineKeyboardMarkup GetProfileKeyboard(int privilegeLevel, int packsCount, int income = 0)
+        public static InlineKeyboardMarkup GetProfileKeyboard(PrivilegeLevel level, int packsCount, int income = 0)
         {
             var keyboard = new List<InlineKeyboardButton[]>();
             if (income > 0)
@@ -426,7 +427,7 @@ namespace CardCollector.Resources
                         Command.my_packs)
                 }
             });
-            if (privilegeLevel > 2) keyboard.Add(
+            if (level > PrivilegeLevel.Vip) keyboard.Add(
                 new[] {InlineKeyboardButton.WithCallbackData(Text.control_panel, Command.control_panel)});
             return new InlineKeyboardMarkup(keyboard);
         }
@@ -512,5 +513,27 @@ namespace CardCollector.Resources
                 new []{InlineKeyboardButton.WithCallbackData(Text.back, Command.back)},
             });
         }
+
+        public static InlineKeyboardMarkup ControlPanel(PrivilegeLevel level)
+        {
+            var keyboard = new List<InlineKeyboardButton[]>();
+            if (level >= PrivilegeLevel.Programmer)
+                keyboard.AddRange(new []
+                {
+                    new []{InlineKeyboardButton.WithCallbackData(Text.logs_menu, $"{Command.logs_menu}={DateTime.Today}")}
+                });
+            keyboard.Add(new []{InlineKeyboardButton.WithCallbackData(Text.back, Command.back)});
+            return new InlineKeyboardMarkup(keyboard);
+        }
+
+        public static InlineKeyboardMarkup LogsMenu(DateTime date)
+        {
+            return new InlineKeyboardMarkup(new []
+            {
+                InlineKeyboardButton.WithCallbackData(Text.arrow_left, $"{Command.logs_menu}={date.AddDays(1)}"), 
+                InlineKeyboardButton.WithCallbackData(Text.back, Command.back), 
+                InlineKeyboardButton.WithCallbackData(Text.arrow_right, $"{Command.logs_menu}={date.AddDays(-1)}"), 
+            });
+        }
     }
 }

+ 18 - 0
CardCollector/Resources/Messages.Designer.cs

@@ -314,6 +314,15 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to 👑&lt;b&gt;Панель управления&lt;/b&gt;👑.
+        /// </summary>
+        internal static string control_panel {
+            get {
+                return ResourceManager.GetString("control_panel", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Количество отправлений за этот день в беседу.
         /// </summary>
@@ -522,6 +531,15 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Логи на &lt;b&gt;{0}&lt;/b&gt;:.
+        /// </summary>
+        internal static string logs_on_date {
+            get {
+                return ResourceManager.GetString("logs_on_date", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Наименьшая цена:.
         /// </summary>

+ 6 - 0
CardCollector/Resources/Messages.resx

@@ -342,4 +342,10 @@ https://telegra.ph/help-11-04-4</value>
     <data name="successfully_returned" xml:space="preserve">
         <value>Вы успешно вернули {0} стикеров {1} с аукциона!</value>
     </data>
+    <data name="control_panel" xml:space="preserve">
+        <value>👑&lt;b&gt;Панель управления&lt;/b&gt;👑</value>
+    </data>
+    <data name="logs_on_date" xml:space="preserve">
+        <value>Логи на &lt;b&gt;{0}&lt;/b&gt;:</value>
+    </data>
 </root>

+ 12 - 0
CardCollector/Resources/PrivilegeLevel.cs

@@ -0,0 +1,12 @@
+namespace CardCollector.Resources
+{
+    public enum PrivilegeLevel
+    {
+        /* Уровни привилегий пользователей системы */
+        Vip = 2,
+        Artist = 4,
+        Programmer = 7,
+        Admin = 9,
+        Owner = 10,
+    }
+}

+ 27 - 0
CardCollector/Resources/Text.Designer.cs

@@ -123,6 +123,24 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to ◀.
+        /// </summary>
+        internal static string arrow_left {
+            get {
+                return ResourceManager.GetString("arrow_left", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to ▶.
+        /// </summary>
+        internal static string arrow_right {
+            get {
+                return ResourceManager.GetString("arrow_right", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Аукцион.
         /// </summary>
@@ -492,6 +510,15 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to 🗓Логи пользователей🗓.
+        /// </summary>
+        internal static string logs_menu {
+            get {
+                return ResourceManager.GetString("logs_menu", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to /menu.
         /// </summary>

+ 9 - 0
CardCollector/Resources/Text.resx

@@ -303,4 +303,13 @@
     <data name="return_from_auction" xml:space="preserve">
         <value>Вернуть с аукциона</value>
     </data>
+    <data name="logs_menu" xml:space="preserve">
+        <value>🗓Логи пользователей🗓</value>
+    </data>
+    <data name="arrow_left" xml:space="preserve">
+        <value>◀</value>
+    </data>
+    <data name="arrow_right" xml:space="preserve">
+        <value>▶</value>
+    </data>
 </root>