/// <summary> /// Primary repo method forgetting a paged list of unapproved photos /// </summary> public async Task <PagedList <PhotoForApprovalDto> > GetUnapprovedPhotos(PhotoManageParams photoManageParams) { var query = _context.Photos .IgnoreQueryFilters() .Where(p => p.IsApproved == false) .Select(u => new PhotoForApprovalDto { Id = u.Id, Username = u.AppUser.UserName, Url = u.Url, IsApproved = u.IsApproved, State = u.AppUser.State, City = u.AppUser.City, LastActive = u.AppUser.LastActive }) .AsQueryable(); if (!string.IsNullOrEmpty(photoManageParams.UsernameSearch)) { query = query.Where(u => u.Username.Contains(photoManageParams.UsernameSearch.ToLower())); } if (!string.IsNullOrEmpty(photoManageParams.State)) { query = query.Where(u => u.State == photoManageParams.State); } if (!string.IsNullOrEmpty(photoManageParams.City)) { query = query.Where(u => u.City == photoManageParams.City); } query = photoManageParams.OrderBy switch { "aToZ" => query.OrderBy(u => u.Username), "zToA" => query.OrderByDescending(u => u.Username), _ => query.OrderByDescending(u => u.LastActive) }; return(await PagedList <PhotoForApprovalDto> .CreateAsync(query, photoManageParams.PageNumber, photoManageParams.PageSize)); }
public async Task <ActionResult <IEnumerable <PhotoForApprovalDto> > > GetPhotosForModeration([FromQuery] PhotoManageParams photoManageParams) { if (!string.IsNullOrEmpty(photoManageParams.UsernameSearch)) { // transform the results from username search. Trim any results longer than 30 characters. photoManageParams.UsernameSearch = photoManageParams.UsernameSearch.Trim().ToLower(); if (photoManageParams.UsernameSearch.Length > 30) { photoManageParams.UsernameSearch = photoManageParams.UsernameSearch.Substring(0, 30); } } // get the photos for moderation var photosForModeration = await _unitOfWork.PhotoRepository.GetUnapprovedPhotos(photoManageParams); // add a response header so that our pagination works. Response.AddPaginationHeader(photosForModeration.CurrentPage, photosForModeration.PageSize, photosForModeration.TotalCount, photosForModeration.TotalPages); // return ok with the paged list of pohotos for moderation return(Ok(photosForModeration)); }