public IActionResult GetFestivals( [FromQuery] FestivalsResourceParameters festivalsResourceParameters) { if (!_propertyMappingService.ValidMappingExistsFor <FestivalDto, Festival> (festivalsResourceParameters.OrderBy)) { return(BadRequest()); } var festivalsFromRepo = _medievalFestivalsRepository.GetFestivals(festivalsResourceParameters); var paginationMetadata = new { totalCount = festivalsFromRepo.TotalCount, pageSize = festivalsFromRepo.PageSize, currentPage = festivalsFromRepo.CurrentPage, totalPages = festivalsFromRepo.TotalPages }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var shapedAuthors = _mapper.Map <IEnumerable <FestivalDto> >(festivalsFromRepo); return(Ok(shapedAuthors)); }
public FestivalsRepositoryTestBase() { ContextBase = FestivalsDbContextFactory.Create(); PropertyMappingServiceBase = new PropertyMappingService(); MedievalFestivalsRepositoryBase = new FestivalsRepository(ContextBase, PropertyMappingServiceBase); FestivalsResourceParametersBase = new FestivalsResourceParameters(); DateTimeMock = new Mock <IDateTimeService>(); DateTimeMock.Setup(m => m.Now).Returns(DateTime.Now); }
public PagedList <Festival> GetFestivals( FestivalsResourceParameters resourceParameters) { if (resourceParameters == null) { throw new ArgumentNullException(nameof(resourceParameters)); } var festivals = _festivalsContext.Festivals as IQueryable <Festival>; if (resourceParameters.TodayOrLater) { festivals = festivals .Where(f => f.StartDate >= DateTime.Now); } if (!string.IsNullOrWhiteSpace(resourceParameters.SearchQuery)) { var searchQuery = resourceParameters.SearchQuery.Trim(); festivals = festivals.Where(a => a.Title.Contains(searchQuery) /*|| a.FirstName.Contains(searchQuery)*/); } if (!string.IsNullOrWhiteSpace(resourceParameters.OrderBy)) { // get property mapping dictionary var authorPropertyMappingDictionary = _propertyMappingService.GetPropertyMapping <FestivalDto, Festival>(); festivals = festivals.ApplySort(resourceParameters.OrderBy, authorPropertyMappingDictionary); } return(PagedList <Festival> .Create(festivals, resourceParameters.PageNumber, resourceParameters.PageSize)); }