Exemplo n.º 1
0
        /// <summary>
        /// Same to GetPagedRestaurants but sorting performed not by MongoDB query
        /// </summary>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <param name="sortedBy"></param>
        /// <returns></returns>
        public PagedList<RestaurantModel> GetPagedRestaurantsSortedNotByMongo(int? page, int pageSize, SortByEnum sortedBy)
        {
            log.DebugFormat("[GetPagedRestaurantsSortedNotByMongo] page={0}, searchText={1}.", page ?? 0, pageSize);
            if (sortedBy != null && sortedBy == SortByEnum.RestaurantDishCount)
            {
                using (Restaurants restaurantsDb = new Restaurants())
                {
                    MongoEntityRepositoryBase<RestaurantBasicData> basicData =
                                  new MongoEntityRepositoryBase<RestaurantBasicData>(restaurantsDb.DB);

                    int skip = (page ?? 0) * pageSize;
                    var restCount = (int)basicData.Count();
                    PagedList<RestaurantModel> returnList = new PagedList<RestaurantModel>();

                    IEnumerable<RestaurantBasicData> allRestaurants = basicData.GetAll();;
                    if (allRestaurants == null) return null;
                    List<RestaurantBasicData> selected = allRestaurants.ToList();
                    List<RestaurantModel> restaurantList = selected.ToRestaurantModel(false);
                    returnList.Entities = restaurantList.OrderBy(r => r.DishCount).Reverse().Skip(skip).Take(pageSize).ToList();
                    returnList.CurrentPage = page ?? 0;
                    returnList.TotalPages = restCount / pageSize;
                    returnList.SortedBy = sortedBy;
                    return returnList;
                }
            }
            else
            {
                log.WarnFormat("[GetPagedRestaurantsSortedNotByMongo] sortedBy parameter is null or uknown.");
                return null;
            }
        }
Exemplo n.º 2
0
        public PagedList<RestaurantModel> GetPagedRestaurants(int? page, int pageSize, SortByEnum sortedBy)
        {
            log.DebugFormat("[GetPagedRestaurants] page={0}, searchText={1}.", page ?? 0, pageSize);
            using (Restaurants restaurantsDb = new Restaurants())
            {
                MongoEntityRepositoryBase<RestaurantBasicData> basicData =
                              new MongoEntityRepositoryBase<RestaurantBasicData>(restaurantsDb.DB);

                int skip = (page ?? 0) * pageSize;
                var restCount = (int)basicData.Count();
                PagedList<RestaurantModel> returnList = new PagedList<RestaurantModel>();

                IEnumerable<RestaurantBasicData> allRestaurants = null;
                if (sortedBy == null || sortedBy == 0)
                {
                    allRestaurants = basicData.GetAll();
                }
                else
                {
                    string sortByStr = null;
                    switch (sortedBy)
                    {
                        case SortByEnum.RestaurantName:
                            sortByStr = "Name";
                            break;
                        case SortByEnum.RestaurantCuisine:
                            sortByStr = "Cuisines.0";
                            break;
                        case SortByEnum.RestaurantCreatedAt:
                            sortByStr = "CreatedAt";
                            break;
                        case SortByEnum.RestaurantUpdatedAt:
                            sortByStr = "UpdatedAt";
                            break;
                        case SortByEnum.Uknown:
                            break;
                        case SortByEnum.RestaurantDishCount:
                            sortByStr = "DishCount";
                            break;
                        case SortByEnum.RestaurantSource:
                            sortByStr = "Source";
                            break;
                    }
                    if (sortByStr != null && sortByStr != "DishCount")
                    {
                        allRestaurants = basicData.GetAllSortedBy(sortByStr);
                        returnList.SortedBy = sortedBy;
                    }
                }
                if (allRestaurants == null) return null;

                IEnumerable<RestaurantBasicData> restsPage;
                if (pageSize == -1) restsPage = allRestaurants;
                else restsPage = allRestaurants.Skip(skip).Take(pageSize);
                List<RestaurantBasicData> selected = restsPage.ToList();

                List<RestaurantModel> restaurantList = selected.ToRestaurantModel(false);

                returnList.CurrentPage = page ?? 0;
                returnList.TotalPages = restCount / pageSize;

                returnList.Entities = restaurantList;
                return returnList;
            }
        }