Esempio n. 1
0
        /// <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));
        }