/// <summary> /// Возвращает страницу музыкальных релизов с заданным номером и размером, /// музыкальные релизы сортированы по дата релиза /// </summary> /// <param name="pageSize">Размер страницы</param> /// <param name="pageNumber">Номер страницы</param> /// <param name="genreId">Идентификатор жанра</param> /// <param name="userId">Идентификатор пользователя</param> /// <returns>Страница музыкальных релизов</returns> public MusicPageInfo GetPageInfoByDate(int pageSize, int pageNumber, int?genreId = null, string userId = null) { Expression <Func <DbMusic, bool> > filter = null; if (genreId != null) { filter = f => f.Genres.Select(g => g.Id).Contains(genreId.Value); } var pageInfo = new MusicPageInfo(); pageInfo.TotalItemsCount = unitOfWork.MusicRepository.ItemsCount(filter); pageInfo.TotalPagesCount = (int)Math.Ceiling((double)pageInfo.TotalItemsCount / pageSize); pageInfo.PageItems = Mapper.Map <IEnumerable <DbMusic>, IEnumerable <Music> >( unitOfWork.MusicRepository.GetPage( pageSize, pageNumber, filter, o => o.OrderByDescending(t => t.ReleaseDate), $"{nameof(DbMusic.Musicians)},{nameof(DbMusic.Users)}"), opts => opts.AfterMap((src, dest) => { foreach (var music in dest) { music.IsUserSubscribed = src.First(x => x.Id == music.Id).Users.Any(x => x.Id == userId); } })); return(pageInfo); }
/// <summary> /// Возвращает страницу музыкальных релизов с заданным номером и размером, /// музыкальные релизы сортированы по дата релиза /// </summary> /// <param name="pageSize">Размер страницы</param> /// <param name="pageNumber">Номер страницы</param> /// <param name="genreId">Идентификатор жанра</param> /// <returns>Страница музыкальных релизов</returns> public MusicPageInfo GetPageInfoByDate(int pageSize, int pageNumber, int?genreId = null) { Expression <Func <DbMusic, bool> > filter = null; if (genreId != null) { filter = f => f.Genres.Select(g => g.Id).Contains(genreId.Value); } var pageInfo = new MusicPageInfo(); pageInfo.TotalItemsCount = _unitOfWork.MusicRepository.ItemsCount(filter); pageInfo.TotalPagesCount = (int)Math.Ceiling((double)pageInfo.TotalItemsCount / pageSize); pageInfo.PageItems = Mapper.Map <IEnumerable <Music> >(_unitOfWork.MusicRepository.GetPage( pageSize, pageNumber, filter, o => o.OrderByDescending(t => t.ReleaseDate), $"{nameof(Music.Musicians)}")); return(pageInfo); }