Exemplo n.º 1
0
        public IDictionary <Restaurant, List <MenuItem> > SearchRestaurants(string searchText)
        {
            var menuItemDocs = _fullTextSearchEngine.SearchMenuItems(searchText);

            var menuItemsGrouped = menuItemDocs.GroupBy(key => Int32.Parse(key.Get("RestaurantId")),
                                                        element => new
            {
                MenuItemId   = Int32.Parse(element.Get("MenuItemId")),
                CategoryName = element.Get("CategoryName")
            });

            var restaurants = _dataProvider.GetRestaurants()
                              .Where(x => menuItemsGrouped.Any(group => group.Key == x.Id));

            var menuItems  = _dataProvider.GetMenuItems();
            var categories = _dataProvider.GetCategories();

            var result = menuItemsGrouped.ToDictionary(key => restaurants.First(x => x.Id == key.Key),
                                                       value =>
            {
                var items = menuItems.Where(mi => value.Any(x => x.MenuItemId == mi.Id)).ToList();
                foreach (MenuItem menuItem in items)
                {
                    var item          = value.First(v => v.MenuItemId == menuItem.Id);
                    menuItem.Category = categories.FirstOrDefault(c => c.Name == item.CategoryName);
                }

                return(items);
            });

            return(result);
        }
Exemplo n.º 2
0
        private async Task CreateFtsIndexesAsync()
        {
            var data = _searchDataProvider.GetRestaurants().ToList();

            _ftsEngine.IndexMenuItems(data);
            _ftsEngine.IndexCategories(data);
        }