public async Task <IActionResult> GetUnhandledRequests(string topicId, int page, bool newest)
        {
            const int pageSize = 20;

            var tid = XUtils.ParseId(topicId);

            var query = from p in Context.AdminRequests
                        where p.TopicId == tid && p.Status == RequestStatus.Unhandled
                        join q in Context.Users
                        on p.SenderId equals q.Id
                        select new { request = p, user = q };

            if (newest)
            {
                query = query.OrderByDescending(p => p.request.CreatedAt);
            }
            else
            {
                query = query.OrderBy(p => p.request.CreatedAt);
            }

            query = query.Skip(page * pageSize).Take(pageSize);

            var requests = await query.ToListAsync();

            var data = requests.Select(p => QAdminRequest.NormalView(p.request, QUser.NormalView(p.user))).ToList();

            return(Ok(data));
        }
        public async Task <IActionResult> GetRequestById(string id)
        {
            var requestId = XUtils.ParseId(id);

            var query = from p in Context.AdminRequests
                        where p.Id == requestId
                        join q in Context.Users
                        on p.SenderId equals q.Id
                        select new { request = p, user = q };

            var data = await query.FirstOrDefaultAsync();

            var requestV = QAdminRequest.NormalView(data.request, QUser.NormalView(data.user));

            return(Ok(requestV));
        }