示例#1
0
        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);
        }
示例#2
0
        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()));
        }
示例#3
0
        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;
            }
        }