public async Task <List <Place> > GetAllOrFilterPlace(FilterPlacesRequest filterPlaces) { var duplicatePlaces = new List <Place>(); int queryCount = 0; if (FilterTools.AreIntsCorrect(filterPlaces.MinPlaceId, filterPlaces.MaxPlaceId)) { var filterCapacity = _dataContext.Places.Where(c => c.MaximumCapacity >= filterPlaces.MinPlaceId && c.MaximumCapacity <= filterPlaces.MaxPlaceId); foreach (var capacity in filterCapacity) { duplicatePlaces.Add(capacity); } queryCount++; } if (filterPlaces.Name != null) { var filterNames = _dataContext.Places.Where(c => c.Name == filterPlaces.Name); foreach (var name in filterNames) { duplicatePlaces.Add(name); } queryCount++; } if (FilterTools.AreIntsCorrect(filterPlaces.MinMaxCapacity, filterPlaces.MaxCapacity)) { var filterIds = _dataContext.Places.Where(c => c.PlaceId >= filterPlaces.MinMaxCapacity && c.PlaceId <= filterPlaces.MaxCapacity); foreach (var id in filterIds) { duplicatePlaces.Add(id); } queryCount++; } var group = duplicatePlaces.GroupBy(i => i); var filtered = new List <Place>(); if (queryCount == 0) { return(await _dataContext.Places.ToListAsync()); } foreach (var item in group) { if (item.Count() == queryCount) { filtered.Add(item.Key); } } return(filtered); }
public async Task <IEnumerable <GetPlaceRequest> > GetPlaces(FilterPlacesRequest filterPlaces = null) { var places = await _placeRepository.GetAllOrFilterPlace(filterPlaces); return(places.Select(c => _placeConverter.PlaceToGetPlaceRequest(c))); }
public async Task <IActionResult> GetAllOrFilter([FromQuery] FilterPlacesRequest filter) { return(Ok(await _placeService.GetPlaces(filter))); }