コード例 #1
0
        public async Task <UserDto> GetAllUserDataAsync(long userId)
        {
            using (MessengerDbContext context = contextFactory.Create())
            {
                User user = await context.Users.AsNoTracking()
                            .Include(opt => opt.DialogsFirstU)
                            .ThenInclude(opt => opt.Messages)
                            .ThenInclude(opt => opt.Attachments)
                            .Include(opt => opt.Emails)
                            .Include(opt => opt.Phones)
                            .Include(opt => opt.FilesInfo)
                            .Include(opt => opt.BlackList)
                            .Include(opt => opt.Tokens)
                            .Include(opt => opt.UserPublicKeys)
                            .Include(opt => opt.Contacts)
                            .Include(opt => opt.Favorites)
                            .Include(opt => opt.PollOptionsVotes)
                            .Include(opt => opt.Groups)
                            .ThenInclude(opt => opt.ContactGroups)
                            .ThenInclude(opt => opt.Contact)
                            .FirstOrDefaultAsync(opt => opt.Id == userId)
                            .ConfigureAwait(false);

                IEnumerable <ChatDto> userChats = await loadChatsService.GetUserChatsAsync(userId).ConfigureAwait(false);

                IEnumerable <ChannelDto> userChannels = await loadChannelsService.GetUserChannelsAsync(userId).ConfigureAwait(false);

                foreach (var dialog in user.DialogsFirstU)
                {
                    dialog.Messages = dialog.Messages.Where(opt => !opt.Deleted).ToList();
                }

                foreach (var chat in userChats)
                {
                    chat.Messages = chat.Messages.Where(opt => !opt.Deleted).ToList();
                }

                foreach (var channel in userChannels)
                {
                    channel.Messages = channel.Messages.Where(opt => !opt.Deleted).ToList();
                }
                return(UserConverter.GetUserDto(user, userChats, userChannels));
            }
        }