Exemple #1
0
        /// <summary>
        /// Executes the Moderator message.
        /// </summary>
        /// <param name="message">The message.</param>
        private void Execute(ModeratorMessage message)
        {
            if (message.ErrorMessage != null)
            {
                Log(LogLevel.Warning, message.ErrorMessage);
                return;
            }

            var server   = Repository.Server.GetCurrentServer();
            var entities = Repository.Client.GetModeration(ModerationType.Added, message.TimeSpan.FromDate, message.TimeSpan.ToDate);

            var context = new MessageContext
            {
                ServerId   = server.Id,
                ServerName = server.Name,
                ServerPort = server.Port
            };

            QueryRunner.SendTextMessage(Repository.Settings.Control.Moderator.Target, Repository.Settings.Control.Moderator.TargetId > 0 ? Repository.Settings.Control.Moderator.TargetId : message.SenderClientId,
                                        Repository.Settings.Control.Moderator.TextMessage.ToMessage(context));
            var groupedEntities = entities.GroupBy(m => m.ModeratorDatabaseId).OrderByDescending(m => m.Count()).Take(Repository.Settings.Control.Moderator.Limit).ToList();

            for (int index = 0; index < groupedEntities.Count; index++)
            {
                var entity          = groupedEntities[index];
                var moderatorEntity = Repository.Client.GetClientDataBaseInfo((uint)entity.Key);
                var messageContext  = new MessageContext
                {
                    Index             = index + 1,
                    ServerName        = server.Name,
                    ServerId          = server.Id,
                    ServerPort        = server.Port,
                    ClientDatabaseId  = moderatorEntity == null ? default(uint) : moderatorEntity.DatabaseId,
                    ClientNickname    = moderatorEntity == null ? default(string) : moderatorEntity.NickName,
                    ModeratorVerified = entity.Count()
                };
                QueryRunner.SendTextMessage(Repository.Settings.Control.Moderator.Target,
                                            Repository.Settings.Control.Moderator.TargetId > 0 ? Repository.Settings.Control.Moderator.TargetId : message.SenderClientId,
                                            Repository.Settings.Control.Moderator.MessagePerModerator.ToMessage(messageContext));
            }

            var clientEntry = Repository.Client.GetClientInfo(message.SenderClientId);

            Log(Repository.Settings.Control.Moderator,
                string.Format("Client '{1}'(id:{2}) used {0}.", Repository.Settings.Control.Moderator.Command,
                              clientEntry.Nickname, clientEntry.DatabaseId));
        }
        /// <summary>
        /// Executes the Moderator message.
        /// </summary>
        /// <param name="message">The message.</param>
        private void Execute(ModeratorMessage message)
        {
            if (message.ErrorMessage != null)
            {
                Log(LogLevel.Warning, message.ErrorMessage);
                return;
            }

            var server = Repository.Server.GetCurrentServer();
            var entities = Repository.Client.GetModeration(ModerationType.Added, message.TimeSpan.FromDate, message.TimeSpan.ToDate);

            var context = new MessageContext
                              {
                                  ServerId = server.Id,
                                  ServerName = server.Name,
                                  ServerPort = server.Port
                              };
            QueryRunner.SendTextMessage(Repository.Settings.Control.Moderator.Target, Repository.Settings.Control.Moderator.TargetId > 0 ? Repository.Settings.Control.Moderator.TargetId : message.SenderClientId,
                                        Repository.Settings.Control.Moderator.TextMessage.ToMessage(context));
            var groupedEntities = entities.GroupBy(m => m.Moderator).OrderByDescending(m => m.Count()).Take(Repository.Settings.Control.Moderator.Limit).ToList();

            for (int index = 0; index < groupedEntities.Count; index++)
            {
                var entity = groupedEntities[index];
                var moderatorEntity = Repository.Client.GetClientDataBaseInfo((uint)entity.Key);
                var messageContext = new MessageContext
                                         {
                                             Index = index + 1,
                                             ServerName = server.Name,
                                             ServerId = server.Id,
                                             ServerPort = server.Port,
                                             ClientDatabaseId = moderatorEntity == null ? default(uint) : moderatorEntity.DatabaseId,
                                             ClientNickname = moderatorEntity == null ? default(string) : moderatorEntity.NickName,
                                             ModeratorVerified = entity.Count()
                                         };
                QueryRunner.SendTextMessage(Repository.Settings.Control.Moderator.Target,
                                            Repository.Settings.Control.Moderator.TargetId > 0 ? Repository.Settings.Control.Moderator.TargetId : message.SenderClientId,
                                            Repository.Settings.Control.Moderator.MessagePerModerator.ToMessage(messageContext));
            }

            var clientEntry = Repository.Client.GetClientInfo(message.SenderClientId);
            Log(Repository.Settings.Control.Moderator,
                string.Format("Client '{1}'(id:{2}) used {0}.", Repository.Settings.Control.Moderator.Command,
                              clientEntry.Nickname, clientEntry.DatabaseId));
        }