public PagingResponse <Music> GetBySearch( string searchMusicText, string searchArtistText, PagingRequest pageRequest, MusicFieldsSort sortField = MusicFieldsSort.UpdateDate, bool sortDesc = true) { PagingResponse <Music> res = new PagingResponse <Music>(); try { var repositoryRes = (this._rep as IMusicsRepository). GetBySearch(searchMusicText, searchArtistText, pageRequest.ResultInPage, (pageRequest.Page - 1) * pageRequest.ResultInPage, sortField, sortDesc); res.Entities = repositoryRes.Entities; res.TotalResults = repositoryRes.TotalResults; res.ResultsInPage = pageRequest.ResultInPage; res.CurrPage = pageRequest.Page; res.Success = true; } catch (Exception e) { res.Success = false; res.Message = e.ToString(); } return(res); }
// GET: Musics public ActionResult Index(string searchMusicName, string searchArtistName, bool?success, int page = 1, MusicFieldsSort sortField = MusicFieldsSort.UpdateDate, bool sortDesc = true) { var res = service.GetBySearch(searchMusicName, searchArtistName, new PagingRequest(page, 25), sortField, sortDesc); if (!res.Success) { return(Json(res.Message, JsonRequestBehavior.AllowGet)); } MusicViewModel viewModel = new MusicViewModel(); viewModel.Success = success; viewModel.Musics = res.Entities.Select(msc => new MusicViewModelEntry(msc)); ViewBag.SearchArtistName = searchArtistName; ViewBag.SearchMusicName = searchMusicName; ViewBag.Page = page; ViewBag.TotalPages = res.TotalPages; ViewBag.SortField = sortField; ViewBag.SortDesc = sortDesc; return(View(viewModel)); }
private IOrderedQueryable <Music> OrderMusic(IQueryable <Music> query, MusicFieldsSort sortField, bool sortSesc) { IOrderedQueryable <Music> resQuery = null; switch (sortField) { case MusicFieldsSort.ArtistName: if (sortSesc) { resQuery = query.OrderByDescending(x => x.Artist.User.UserName); } else { resQuery = query.OrderBy(x => x.Artist.User.UserName); } break; case MusicFieldsSort.MusicName: if (sortSesc) { resQuery = query.OrderByDescending(x => x.HebrewName); } else { resQuery = query.OrderBy(x => x.HebrewName); } break; case MusicFieldsSort.CreateDate: if (sortSesc) { resQuery = query.OrderByDescending(x => x.CreateDate); } else { resQuery = query.OrderBy(x => x.CreateDate); } break; case MusicFieldsSort.UpdateDate: if (sortSesc) { resQuery = query.OrderByDescending(x => x.UpdateDate).ThenByDescending(x => x.CreateDate); } else { resQuery = query.OrderBy(x => x.UpdateDate); } break; case MusicFieldsSort.None: resQuery = query.OrderBy(x => x.ID); break; } return(resQuery); }
public RepositoryPagingResponse <Music> GetBySearch( string searchMusicText, string searchArtistText, int max, int skip, MusicFieldsSort sortField, bool orderDesc) { var res = new RepositoryPagingResponse <Music>(); searchArtistText = searchArtistText ?? string.Empty; searchMusicText = searchMusicText ?? string.Empty; Expression <Func <Music, bool> > predicate = (msc => msc.HebrewName.StartsWith(searchMusicText) && msc.Artist.User.UserName.StartsWith(searchArtistText)); IQueryable <Music> query = this.dbSet.Include("Artist.User").Where(predicate); res.TotalResults = query.Count(); IOrderedQueryable <Music> orDquery = OrderMusic(query, sortField, orderDesc); res.Entities = orDquery.Skip(skip).Take(max).ToList(); return(res); }