Ejemplo n.º 1
0
        public static void LoadCacheData()
        {
            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Loading cache",
                UserId     = -2
            });

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Get translations",
                UserId     = -2
            });

            CacheData.ControlChatId = Convert.ToInt64(CacheData.SysConfigs
                                                      .Single(x => x.SysConfigId == "ControlChatId")
                                                      .Value);

            if (!InitializeTranslations())
            {
                CacheData.FatalError = true;
                return;
            }

            LoadPlugins();

            LoadFiltersData();

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Get default group configuration parameters",
                UserId     = -2
            });
            BusinessLogic.Group.ConfigurationParameterLogic configurationParameterLogic =
                new BusinessLogic.Group.ConfigurationParameterLogic();
            CacheData.GroupDefaultConfigs =
                new List <Models.Group.ConfigurationParameter>(configurationParameterLogic.Get());

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Get registered groups",
                UserId     = -2
            });
            BusinessLogic.Group.TelegramGroupLogic telegramGroupLogic =
                new BusinessLogic.Group.TelegramGroupLogic();
            foreach (Models.Group.TelegramGroup group in telegramGroupLogic.Get())
            {
                CacheData.Groups.Add(group.TelegramChatId, group);
                try
                {
                    CacheData.GroupConfigs.Add(
                        group.TelegramChatId,
                        JsonConvert
                        .DeserializeObject <
                            List <Models.Group.ConfigurationParameter>
                            >(group.Configuration));

                    AddMissingConfiguration(group.TelegramChatId);

                    /*
                     * To be used to enable messages to Group's Control Chat/Channel
                     * Bot.MessageQueueManager.AddChatIfNotPresent(
                     *  Convert.ToInt64(CacheData.GroupConfigs[group.TelegramChatId]
                     *      .SingleOrDefault(x => x.ConfigurationParameterId == "ControlChatId").Value));
                     */
                }
                catch (Exception ex)
                {
                    Data.Utils.Logging.AddLog(new Models.SystemLog()
                    {
                        LoggerName = CacheData.LoggerName,
                        Date       = DateTime.Now,
                        Function   = "Unifiedban Terminal Startup",
                        Level      = Models.SystemLog.Levels.Error,
                        Message    = $"Impossible to load group {group.TelegramChatId} " +
                                     $"configuration:\n {ex.Message}",
                        UserId = -1
                    });
                }
                Bot.MessageQueueManager.AddGroupIfNotPresent(group);
            }

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Get banned users",
                UserId     = -2
            });
            BusinessLogic.User.BannedLogic bannedLogic = new BusinessLogic.User.BannedLogic();
            CacheData.BannedUsers = new List <Models.User.Banned>(bannedLogic.Get());

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Get night schedule",
                UserId     = -2
            });
            BusinessLogic.Group.NightScheduleLogic nsl = new BusinessLogic.Group.NightScheduleLogic();
            foreach (NightSchedule nightSchedule in nsl.Get())
            {
                CacheData.NightSchedules.Add(nightSchedule.GroupId, nightSchedule);
            }

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Get trust points",
                UserId     = -2
            });
            BusinessLogic.User.TrustFactorLogic tfl = new BusinessLogic.User.TrustFactorLogic();
            foreach (TrustFactor trustFactor in tfl.Get())
            {
                if (!CacheData.TrustFactors.ContainsKey(trustFactor.TelegramUserId))
                {
                    CacheData.TrustFactors.Add(trustFactor.TelegramUserId, trustFactor);
                }
            }
            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban Terminal Startup",
                Level      = Models.SystemLog.Levels.Info,
                Message    = "Cache loaded",
                UserId     = -2
            });
        }