Beispiel #1
0
        public WebAPI.DTO.IPagedResponse <FavoriteDTO> GetFavorites(int page, SortState sortOrder)
        {
            int pageSize       = 8;
            var favorites      = favoriteRepository.GetAllFavorites();
            var count          = favorites.Count();
            var pageNumber     = (int)Math.Ceiling(count / (double)pageSize);
            var favoriteSerial = mapper.Map <IEnumerable <FavoriteDTO> >(favorites.Where(s => s.ContentType == ContentType.Serial).Select(i => (_serialRepository.GetSerialById(i.ContentId))));
            var favoriteMovie  = mapper.Map <IEnumerable <FavoriteDTO> >(favorites.Where(s => s.ContentType == ContentType.Movie).Select(i => (_movieRepository.GetMovieById(i.ContentId))));
            IEnumerable <FavoriteDTO> union = favoriteSerial.Union(favoriteMovie);

            union = sortOrder switch
            {
                SortState.NameDesc => union.OrderByDescending(s => s.Name),
                SortState.RatingAsc => union.OrderBy(s => s.Rating),
                SortState.RatingDesc => union.OrderByDescending(s => s.Rating),
                SortState.YearAsc => union.OrderBy(s => s.Year),
                SortState.YearDesc => union.OrderByDescending(s => s.Year),
                _ => union.OrderBy(s => s.Name),
            };
            var items = union.Skip((page - 1) * pageSize).Take(pageSize).ToList();

            WebAPI.DTO.IPagedResponse <FavoriteDTO> pagedResponse = new WebAPI.DTO.IPagedResponse <FavoriteDTO>
            {
                PageNumber = pageNumber,
                PageSize   = pageSize,
                TotalCount = count,
                Data       = items
            };
            return(pagedResponse);
        }
Beispiel #2
0
        public async Task <IActionResult> Index(int?type, string name, int page = 1,
                                                SortState sortOrder             = SortState.NameAsc)
        {
            const int pageSize = 5;

            //фильтрация
            IQueryable <Toy> toys = db.Toys.Include(x => x.Type);

            if (type != null && type != 0)
            {
                toys = toys.Where(p => p.TypeId == type);
            }
            if (!string.IsNullOrEmpty(name))
            {
                toys = toys.Where(p => p.Name.Contains(name));
            }

            // сортировка
            toys = sortOrder switch
            {
                SortState.NameDesc => toys.OrderByDescending(s => s.Name),
                SortState.PriceAsc => toys.OrderBy(s => s.Price),
                SortState.PriceDesc => toys.OrderByDescending(s => s.Price),
                SortState.TypeAsc => toys.OrderBy(s => s.Type.Name),
                SortState.TypeDesc => toys.OrderByDescending(s => s.Type.Name),
                _ => toys.OrderBy(s => s.Name)
            };

            // пагинация
            var count = await toys.CountAsync();

            var items = await toys.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();

            // формируем модель представления
            var viewModel = new IndexViewModel
            {
                PageViewModel   = new PageViewModel(count, page, pageSize),
                SortViewModel   = new SortViewModel(sortOrder),
                FilterViewModel = new FilterViewModel(db.ToyTypes.ToList(), type, name),
                Toys            = items
            };

            return(View(viewModel));
        }
Beispiel #3
0
        public async Task <IActionResult> Index(int?selectID, int?selectNumber, int?selectValue, SortState sortOrder = SortState.IDAsc, int page = 1)
        {
            var data     = _baseService.GetCounters();
            int pageSize = 5;

            if (selectID != null)
            {
                data = data.Where(k => k.ID + 8 == selectID).Select(k => k);
            }
            if (selectNumber != null)
            {
                data = data.Where(k => k.Number == selectNumber).Select(k => k);
            }
            if (selectValue != null)
            {
                data = data.Where(k => k.Value == selectValue).Select(k => k);
            }
            data = sortOrder switch
            {
                SortState.IDDesc => data.OrderByDescending(x => x.ID),
                SortState.NumberAsc => data.OrderBy(x => x.Number),
                SortState.NumberDesc => data.OrderByDescending(x => x.Number),
                SortState.ValueAsc => data.OrderBy(x => x.Value),
                SortState.ValueDesc => data.OrderByDescending(x => x.Value),
                _ => data.OrderBy(x => x.ID),
            };

            var count = await data.CountAsync();

            var items = await data.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();

            IndexViewModel viewModel = new IndexViewModel
            {
                Counters        = items,
                SortViewModel   = new SortViewModel(sortOrder),
                PageViewModel   = new PageViewModel(count, page, pageSize),
                FilterViewModel = new FilterViewModel(selectID, selectNumber, selectValue)
            };

            return(View(viewModel));
        }
Beispiel #4
0
        public async Task <IActionResult> Index(string name, int?manufacturer, SortState sortOrder = SortState.NameAsc, int page = 1)
        {
            int pageSize = 4;

            IQueryable <Mobile> songs = db.Mobiles.Include(x => x.Manufacturer);

            if (manufacturer != null && manufacturer != 0)//brand filter
            {
                songs = songs.Where(p => p.ManufacturerId == manufacturer);
            }
            if (!String.IsNullOrEmpty(name))//song name filter
            {
                songs = songs.Where(p => p.Name.Contains(name));
            }

            songs = sortOrder switch
            {
                SortState.NameDes => songs.OrderByDescending(s => s.Name),
                SortState.YearAsc => songs.OrderBy(s => s.Yaer),
                SortState.ManufacturerAsc => songs.OrderBy(s => s.Manufacturer.Name),
                SortState.ManufacturerDes => songs.OrderByDescending(s => s.Manufacturer.Name),
                SortState.DiagonalAsc => songs.OrderBy(s => s.Diagonal),
                SortState.DiagonalDes => songs.OrderByDescending(s => s.Diagonal),
                _ => songs.OrderBy(s => s.Name),
            };

            var count = await songs.CountAsync();

            var items = await songs.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync();

            IndexViewModel viewModel = new IndexViewModel
            {
                PageViewModel   = new PageViewModel(count, page, pageSize),
                SortViewModel   = new SortViewModel(sortOrder),
                FilterViewModel = new FilterViewModel(db.Manufacturers.ToList(), manufacturer, name),
                Mobile          = items
            };

            SetClearance();
            return(View(viewModel));
        }
        public async Task <IActionResult> Index(List <int> selectedCategories,
                                                List <int> selectedSuspensions,
                                                List <int> selectedSexes,
                                                List <int> selectedAges,
                                                List <int> selectedYears,
                                                List <double> selectedWheels,
                                                int lowPriceBorder, int highPriceBorder,
                                                string searchString, int page = 1, SortState sortOrder = SortState.NameAsc)
        {
            List <Model> models = await _context.Models
                                  .Include(m => m.AgeGroup)
                                  .Include(m => m.Category)
                                  .Include(m => m.ModelName)
                                  .Include(m => m.ModelPrefix)
                                  .Include(m => m.Sex)
                                  .Include(m => m.Suspension)
                                  .ToListAsync();

            var modelColours = await _context.ModelColours.Include(mc => mc.Colour).ToListAsync();

            await _context.Bikes.Include(b => b.FrameSize).Include(b => b.Status).Include(b => b.StoringPlace).ToListAsync();

            // Get models which are on stock
            var modelColoursId = modelColours.Where(mc => mc.Bike != null && mc.Bike.Where(b => b.Status.Id != 2).Count() != 0).Select(mc => mc.Id).ToList();

            models = models.Where(m => m.ModelColoursId.Intersect(modelColoursId).Count() > 0).ToList();

            #region Filter

            // Filter
            if (selectedCategories.Count != 0)
            {
                models = models.Where(m => selectedCategories.Any(id => m.CategoryId == id)).ToList();
            }
            if (selectedSuspensions.Count != 0)
            {
                models = models.Where(m => selectedSuspensions.Any(id => m.SuspensionId == id)).ToList();
            }
            if (selectedSexes.Count != 0)
            {
                models = models.Where(m => selectedSexes.Any(id => m.SexId == id)).ToList();
            }
            if (selectedAges.Count != 0)
            {
                models = models.Where(m => selectedAges.Any(id => m.AgeGroupId == id)).ToList();
            }
            if (selectedYears.Count != 0)
            {
                models = models.Where(m => selectedYears.Any(y => m.Year == y)).ToList();
            }
            if (selectedWheels.Count != 0)
            {
                models = models.Where(m => selectedWheels.Any(ws => m.WheelSize == ws)).ToList();
            }

            highPriceBorder = models.Max(m => (int)m.Price);
            models          = models.Where(m => (int)m.Price >= lowPriceBorder && (int)m.Price <= highPriceBorder).ToList();

            #endregion

            // Search by name
            if (!String.IsNullOrEmpty(searchString))
            {
                models = models.Where(m => m.FullName.ToLower().Contains(searchString.ToLower())).ToList();
            }

            #region Sort

            // Sort
            models = sortOrder switch
            {
                SortState.NameDesc => models.OrderByDescending(m => m.Name).ThenByDescending(m => m.Prefix).ToList(),
                SortState.YearAsc => models.OrderBy(m => m.Year).ToList(),
                SortState.YearDesc => models.OrderByDescending(m => m.Year).ToList(),
                SortState.ColourAsc => models.OrderBy(m => m.ModelColour.ToList()[0].Colour.ColourValue).ToList(),
                SortState.ColourDesc => models.OrderByDescending(m => m.ModelColour.ToList()[0].Colour.ColourValue).ToList(),
                SortState.PriceAsc => models.OrderBy(m => m.Price).ToList(),
                SortState.PriceDesc => models.OrderByDescending(m => m.Price).ToList(),
                _ => models.OrderBy(m => m.Name).ThenBy(m => m.Prefix).ToList(),
            };

            ViewData["SortItems"] = new List <SelectListItem>
            {
                new SelectListItem {
                    Text = "Назва  (за зростанням)", Value = "0", Selected = (int)sortOrder == 0
                },
                new SelectListItem {
                    Text = "Назва (за спаданням)", Value = "1", Selected = (int)sortOrder == 1
                },
                new SelectListItem {
                    Text = "Рік  (за зростанням)", Value = "2", Selected = (int)sortOrder == 2
                },
                new SelectListItem {
                    Text = "Рік (за спаданням)", Value = "3", Selected = (int)sortOrder == 3
                },
                new SelectListItem {
                    Text = "Колір  (за зростанням)", Value = "4", Selected = (int)sortOrder == 4
                },
                new SelectListItem {
                    Text = "Колір (за спаданням)", Value = "5", Selected = (int)sortOrder == 5
                },
                new SelectListItem {
                    Text = "Ціна (за зростанням)", Value = "6", Selected = (int)sortOrder == 6
                },
                new SelectListItem {
                    Text = "Ціна  (за спаданням)", Value = "7", Selected = (int)sortOrder == 7
                },
            };

            #endregion

            // Pagination
            int modelsCount = models.Count;
            models = models.Skip((page - 1) * _itemsPerPage).Take(_itemsPerPage).ToList();

            ViewData["PageViewModel"]   = new PageViewModel(modelsCount, page, _itemsPerPage);
            ViewData["FilterViewModel"] = new FilterViewModel(await _context.Categories.ToListAsync(), selectedCategories,
                                                              await _context.Suspensions.ToListAsync(), selectedSuspensions,
                                                              await _context.Sexes.ToListAsync(), selectedSexes,
                                                              await _context.AgeGroups.ToListAsync(), selectedAges,
                                                              await _context.Models.Select(m => m.Year).Distinct().ToListAsync(), selectedYears,
                                                              await _context.Models.Select(m => m.WheelSize).Distinct().ToListAsync(), selectedWheels,
                                                              lowPriceBorder,
                                                              (models.Count != 0) ? models.Max(m => (int)m.Price) : highPriceBorder,
                                                              searchString);

            return(View(models));
        }