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)); } }