Example #1
0
        public async Task<Messages> MessagesAsync(IEnumerable<string> routeTags, string agencyTag = null)
        {
            var command = new MessagesCommand {RouteTags = routeTags.ToList()};
            if (agencyTag != null)
            {
                command.AgencyTag = agencyTag;
            }

            return await command.ExecuteAsync();
        }
        public async Task ReadUserMessages(MessagesCommand command, Contexts contexts)
        {
            if (!contexts.User.IsAdmin() && command.User != contexts.User.Id) //allow check own messages for everybody
            {
                throw new NotAdminPermissionsException();
            }
            var selectedUser = await this._usersService.GetUserByIdAsync(contexts.Server, command.User);

            if (selectedUser == null)
            {
                throw new UserNotFoundException(command.User.GetUserMention());
            }
            var timeRange = TimeRange.ToNow(contexts.Message.SentAt - command.Time);
            var query     = new GetMessagesQuery(contexts.Server.Id, userId: selectedUser.Id)
            {
                SentDate = timeRange
            };
            var messages = this._queryBus.Execute(query).Messages
                           .OrderBy(x => x.SentAt)
                           .ToList();

            var messagesService     = this._messagesServiceFactory.Create(contexts);
            var maxNumberOfMessages = this._configurationService.GetConfigurationItem <MaxNumberOfMessagesDisplayedByMessageCommandWithoutForce>(contexts.Server.Id).Value;

            if (messages.Count > maxNumberOfMessages && !command.Force)
            {
                await messagesService.SendResponse(x => x.NumberOfMessagesIsHuge(messages.Count));

                return;
            }

            if (!messages.Any())
            {
                await messagesService.SendResponse(x => x.UserDidntWriteAnyMessageInThisTime(selectedUser));

                return;
            }

            var header       = $"Messages from user {selectedUser} starting at {timeRange.Start.ToLocalTimeString()}";
            var lines        = messages.Select(x => $"{x.SentAt.ToLocalTimeString()} {x.Author.Name}: {x.Content.Replace("```", "")}");
            var linesBuilder = new StringBuilder().PrintManyLines(lines.ToArray(), contentStyleBox: true);

            await this._directMessagesService.TrySendMessage(contexts.User.Id, header);

            await this._directMessagesService.TrySendMessage(contexts.User.Id, linesBuilder.ToString(), MessageType.NormalText);

            await messagesService.SendResponse(x => x.SentByDmMessagesOfAskedUser(messages.Count, selectedUser));
        }
        public static List <Message> getMessages()
        {
            MessagesCommand messages = new MessagesCommand();

            return(messages.carregarMensagens());
        }