public async Task <PageList <Message> > GetMessagesForUser(MessageParams messageParams)
        {
            var messages = _context.Messages
                           .Include(u => u.Sender).ThenInclude(p => p.Photos)
                           .Include(u => u.Recipient).ThenInclude(p => p.Photos)
                           .AsQueryable();

            switch (messageParams.MessageContainer)
            {
            case "Inbox":
                messages = messages.Where(u => u.RecipientId == messageParams.UserId &&
                                          u.RecipientDeleted == false);
                break;

            case "Outbox":
                messages = messages.Where(u => u.SenderId == messageParams.UserId &&
                                          u.SenderDeleted == false);
                break;

            default:
                messages = messages.Where(u => u.RecipientId == messageParams.UserId &&
                                          u.IsRead == false && u.RecipientDeleted == false);
                break;
            }

            var messagesEnum = await messages
                               .OrderByDescending(d => d.MessageSent)
                               .ToListAsync();

            return(PageList <Message> .CreateEnumerable(
                       messagesEnum.DistinctBy(m => m.RecipientId),
                       messageParams.PageNumber,
                       messageParams.pageSize
                       ));
        }