Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        // 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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }