Ejemplo n.º 1
0
        /// <summary>
        /// Gets all experiences in the database in a paged order
        /// </summary>
        /// <param name="req">Filtering and searching parameters</param>
        public async Task <IEnumerable <Experience> > GetAllAsync(ExperienceRequestParametersDto req)
        {
            // retrieve all the experiences including category and picture as a queryable list
            var query = this._context.Experiences.Include(x => x.Category).Include(x => x.Pictures).AsQueryable().AsNoTracking();

            // if filtering by city was requested
            if (!string.IsNullOrEmpty(req.FilterByCity))
            {
                // add filtering by city to the query
                query = query.Where(x => x.City.ToLower() == req.FilterByCity.ToLower());
            }
            // if filtering by category was requested
            if (!string.IsNullOrEmpty(req.FilterByCategory))
            {
                // add filtering by category
                query = query.Where(x => x.Category.Name.ToLower() == req.FilterByCategory.ToLower());
            }
            // if there is a search by name
            if (!string.IsNullOrEmpty(req.SearchString))
            {
                // add the search by name to the query
                query = query.Where(x => x.Name.ToLower().Contains(req.SearchString.ToLower()));
            }
            // return a paged list
            return(await PaginatedList <Experience> .CreateAsync(query, req.Page, req.PageSize));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetAllExperiences([FromQuery] ExperienceRequestParametersDto req)
        {
            // get all experiences from the database
            var allExperiences = await _experienceRepository.GetAllAsync(req);

            // map it to the DTO and return
            var listToReturn = _mapper.Map <IEnumerable <ViewExperienceDto> >(allExperiences);

            return(Ok(listToReturn));
        }
Ejemplo n.º 3
0
        public async void GetAllExperiences()
        {
            // arrange
            mockRepo.Setup(x => x.GetAllAsync(It.IsAny <ExperienceRequestParametersDto>())).ReturnsAsync(GetAllAsyncTest);

            // act
            var req    = new ExperienceRequestParametersDto();
            var result = await controller.GetAllExperiences(req);

            // assert
            var resultValue   = Assert.IsAssignableFrom <OkObjectResult>(result);
            var returnedItems = Assert.IsType <List <ViewExperienceDto> >(resultValue.Value);

            Assert.Equal(2, returnedItems.Count);
        }