Beispiel #1
0
        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);
        }
Beispiel #3
0
        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));
        }