Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public async Task <IEnumerable <GetPlaceRequest> > GetPlaces(FilterPlacesRequest filterPlaces = null)
        {
            var places = await _placeRepository.GetAllOrFilterPlace(filterPlaces);

            return(places.Select(c => _placeConverter.PlaceToGetPlaceRequest(c)));
        }
Ejemplo n.º 3
0
 public async Task <IActionResult> GetAllOrFilter([FromQuery] FilterPlacesRequest filter)
 {
     return(Ok(await _placeService.GetPlaces(filter)));
 }