示例#1
0
        public IActionResult SearchRestaurants([FromQuery] SearchRestaurantModel ratingFilter)
        {
            if (!ratingFilter.IsNameExist &&
                !ratingFilter.IsMenuItemExist &&
                !ratingFilter.IsAddressExist &&
                !ratingFilter.IsLocationExist &&
                !ratingFilter.IsSortApplied)
            {
                return(BadRequest("Invalid search, please provide search criteria"));
            }

            List <Restaurant> result = null;
            var error = string.Empty;

            RestaurantRepository repository = new RestaurantRepository();

            try
            {
                result = repository.SearchRestaurants(ratingFilter);
            }
            catch (System.Exception ex)
            {
                error = ex.Message;
            }

            if (result != null)
            {
                return(Ok(result));
            }
            else
            {
                return(BadRequest(error));
            }
        }
示例#2
0
        internal static List <Restaurant> SearchRestaurants(SearchRestaurantModel searchFilter)
        {
            IEnumerable <Restaurant> query = restaurantCollection.AsQueryable();

            if (searchFilter.IsLocationExist)
            {
                query = GetAllRestaurantsNearMe(searchFilter.Lat, searchFilter.Long, searchFilter.SearchDistance);
            }
            if (searchFilter.IsNameExist)
            {
                query = query.Where(x => x.Name.Contains(searchFilter.Name));
            }
            if (searchFilter.IsAddressExist)
            {
                query = query.Where(x => x.Address.Contains(searchFilter.Address));
            }
            if (searchFilter.IsMenuItemExist)
            {
                query = query.Where(x => x.Menu.MenuItems.Any(y => y.FoodName.Contains(searchFilter.Food)));
            }
            if (searchFilter.IsSortApplied)
            {
                searchFilter.Sort.ForEach(filter =>
                {
                    switch (filter)
                    {
                    case Sort.MenuItemRating:
                        query = query.OrderBy(x => x.Menu.MenuItems.Average(y => y.FoodRating));
                        break;

                    case Sort.RestaurantRating:
                        query = query.OrderByDescending(x => x.RestaurantRating);
                        break;

                    default:
                        break;
                    }
                });
            }

            return(query.ToList());
        }
 internal List <Restaurant> SearchRestaurants(SearchRestaurantModel ratingFilter)
 {
     return(DBManager.SearchRestaurants(ratingFilter));
 }