private IQueryable <Orphanage> GetSorted(IQueryable <Orphanage> orphanages, SortStateOrphanages sortOrder) { ViewData["NameSort"] = sortOrder == SortStateOrphanages.NameAsc ? SortStateOrphanages.NameDesc : SortStateOrphanages.NameAsc; ViewData["AddressSort"] = sortOrder == SortStateOrphanages.AddressAsc ? SortStateOrphanages.AddressDesc : SortStateOrphanages.AddressAsc; ViewData["RatingSort"] = sortOrder == SortStateOrphanages.RatingAsc ? SortStateOrphanages.RatingDesc : SortStateOrphanages.RatingAsc; switch (sortOrder) { case SortStateOrphanages.NameDesc: orphanages = orphanages.OrderByDescending(s => s.Name); break; case SortStateOrphanages.AddressAsc: orphanages = orphanages .OrderBy(s => s.Adress.Country) .ThenBy(s => s.Adress.Region) .ThenBy(s => s.Adress.City) .ThenBy(s => s.Adress.Street); break; case SortStateOrphanages.AddressDesc: orphanages = orphanages .OrderByDescending(s => s.Adress.Country) .ThenByDescending(s => s.Adress.Region) .ThenByDescending(s => s.Adress.City) .ThenByDescending(s => s.Adress.Street); break; case SortStateOrphanages.RatingAsc: orphanages = orphanages.OrderBy(s => s.Rating); break; case SortStateOrphanages.RatingDesc: orphanages = orphanages.OrderByDescending(s => s.Rating); break; default: orphanages = orphanages.OrderBy(s => s.Name); break; } return(orphanages); }
public async Task <IActionResult> Index(int id, OrphanageSearchModel searchModel, SortStateOrphanages sortOrder = SortStateOrphanages.NameAsc) { IQueryable <Orphanage> orphanages = _unitOfWorkAsync.Orphanages.GetAll(); orphanages = GetFiltered(orphanages, searchModel); orphanages = GetSorted(orphanages, sortOrder); if (id == 0) { return(View(await orphanages.ToListAsync())); } if (id > 0) { orphanages = orphanages.Where(x => x.ID.Equals(id)); } return(View(await orphanages.ToListAsync())); }
public SortOrphanagesViewModel(SortStateOrphanages sortItem) { NameSort = SortStateOrphanages.NameAsc; AdressSort = SortStateOrphanages.AddressAsc; RatingSort = SortStateOrphanages.RatingAsc; IsDescending = true; if (sortItem == SortStateOrphanages.AddressDesc || sortItem == SortStateOrphanages.NameDesc || sortItem == SortStateOrphanages.RatingDesc) { IsDescending = false; } switch (sortItem) { case SortStateOrphanages.NameDesc: Current = NameSort = SortStateOrphanages.NameAsc; break; case SortStateOrphanages.AddressAsc: Current = AdressSort = SortStateOrphanages.AddressDesc; break; case SortStateOrphanages.AddressDesc: Current = AdressSort = SortStateOrphanages.AddressAsc; break; case SortStateOrphanages.RatingAsc: Current = RatingSort = SortStateOrphanages.RatingDesc; break; case SortStateOrphanages.RatingDesc: Current = RatingSort = SortStateOrphanages.RatingAsc; break; default: Current = NameSort = SortStateOrphanages.NameDesc; break; } }