public PartialFindResult <T> GetAlbumCollection <T>(AlbumCollectionQueryParams queryParams, Func <AlbumForUser, bool, T> fac) { ParamIs.NotNull(() => queryParams); return(HandleQuery(session => { var paging = queryParams.Paging; var loggedUserId = PermissionContext.LoggedUserId; var user = session.Load(queryParams.UserId); var shouldShowCollectionStatus = user.Id == loggedUserId || user.Options.PublicAlbumCollection; var query = session.OfType <AlbumForUser>().Query() .Where(a => a.User.Id == user.Id && !a.Album.Deleted && (shouldShowCollectionStatus || a.Rating > 0)) .WhereHasName(queryParams.Query, queryParams.NameMatchMode) .WhereHasCollectionStatus(queryParams.FilterByStatus) .WhereHasArtist(queryParams.ArtistId) .WhereHasReleaseEventName(queryParams.ReleaseEventName) .WhereAlbumHasTag(queryParams.Tag); var albums = query .OrderBy(queryParams.Sort, PermissionContext.LanguagePreference) .Skip(paging.Start) .Take(paging.MaxEntries) .ToArray() .Select(afu => fac(afu, shouldShowCollectionStatus)) .ToArray(); var count = paging.GetTotalCount ? query.Count() : 0; return new PartialFindResult <T>(albums, count); })); }
public PartialFindResult <AlbumForUserContract> GetAlbumCollection(AlbumCollectionQueryParams queryParams) { return(GetAlbumCollection(queryParams, (albumForUser, shouldShowCollectionStatus) => new AlbumForUserContract(albumForUser, PermissionContext.LanguagePreference) { ShouldShowCollectionStatus = shouldShowCollectionStatus })); }
public PartialFindResult <AlbumForUserForApiContract> GetAlbumCollection( int userId, string query = "", string tag = null, int?artistId = null, [FromUri] PurchaseStatuses?purchaseStatuses = null, string releaseEventName = null, int start = 0, int maxResults = defaultMax, bool getTotalCount = false, AlbumSortRule?sort = null, NameMatchMode nameMatchMode = NameMatchMode.Exact, AlbumOptionalFields fields = AlbumOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) { maxResults = Math.Min(maxResults, absoluteMax); query = FindHelpers.GetMatchModeAndQueryForSearch(query, ref nameMatchMode); var ssl = WebHelper.IsSSL(Request); var queryParams = new AlbumCollectionQueryParams(userId, new PagingProperties(start, maxResults, getTotalCount)) { ArtistId = artistId ?? 0, FilterByStatus = purchaseStatuses != null?purchaseStatuses.Value.ToIndividualSelections().ToArray() : null, NameMatchMode = nameMatchMode, Query = query, ReleaseEventName = releaseEventName, Sort = sort ?? AlbumSortRule.Name, Tag = tag }; var albums = queries.GetAlbumCollection(queryParams, (afu, shouldShowCollectionStatus) => new AlbumForUserForApiContract(afu, lang, thumbPersister, ssl, fields, shouldShowCollectionStatus)); return(albums); }
public PartialFindResult <AlbumForUserForApiContract> GetAlbumCollection( int id, string query = "", int?tagId = null, string tag = null, int?artistId = null, [FromUri] PurchaseStatuses?purchaseStatuses = null, int releaseEventId = 0, DiscType albumTypes = DiscType.Unknown, [FromUri] AdvancedSearchFilter[] advancedFilters = null, int start = 0, int maxResults = defaultMax, bool getTotalCount = false, AlbumSortRule?sort = null, NameMatchMode nameMatchMode = NameMatchMode.Exact, AlbumOptionalFields fields = AlbumOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) { maxResults = Math.Min(maxResults, absoluteMax); var textQuery = SearchTextQuery.Create(query, nameMatchMode); var ssl = WebHelper.IsSSL(Request); var queryParams = new AlbumCollectionQueryParams(id, new PagingProperties(start, maxResults, getTotalCount)) { AlbumType = albumTypes, ArtistId = artistId ?? 0, FilterByStatus = purchaseStatuses != null?purchaseStatuses.Value.ToIndividualSelections().ToArray() : null, TextQuery = textQuery, ReleaseEventId = releaseEventId, Sort = sort ?? AlbumSortRule.Name, TagId = tagId ?? 0, Tag = tag, AdvancedFilters = advancedFilters }; var albums = queries.GetAlbumCollection(queryParams, (afu, shouldShowCollectionStatus) => new AlbumForUserForApiContract(afu, lang, thumbPersister, ssl, fields, shouldShowCollectionStatus)); return(albums); }
public PartialFindResult <AlbumForUserContract> GetAlbumCollection(AlbumCollectionQueryParams queryParams) { ParamIs.NotNull(() => queryParams); return(HandleQuery(session => { var status = queryParams.FilterByStatus; var paging = queryParams.Paging; var albums = session.Query <AlbumForUser>() .Where(a => a.User.Id == queryParams.UserId && !a.Album.Deleted && (status == PurchaseStatus.Nothing || a.PurchaseStatus == status)) .AddNameOrder(LanguagePreference) .Skip(paging.Start) .Take(paging.MaxEntries) .ToArray() .Select(a => new AlbumForUserContract(a, PermissionContext.LanguagePreference)) .ToArray(); var count = paging.GetTotalCount ? session.Query <AlbumForUser>() .Count(a => a.User.Id == queryParams.UserId && !a.Album.Deleted && (status == PurchaseStatus.Nothing || a.PurchaseStatus == status)) : 0; return new PartialFindResult <AlbumForUserContract>(albums, count); })); }
public ActionResult AlbumCollectionPaged(AlbumCollectionRouteParams routeParams) { var id = routeParams.id; if (id == invalidId) { return(NoId()); } const int entriesPerPage = 50; var pageIndex = (routeParams.page - 1) ?? 0; var queryParams = new AlbumCollectionQueryParams(id, PagingProperties.CreateFromPage(pageIndex, entriesPerPage, routeParams.count == 0)) { FilterByStatus = routeParams.purchaseStatus ?? PurchaseStatus.Nothing }; var albums = Service.GetAlbumCollection(queryParams); routeParams.count = (albums.TotalCount != 0 ? albums.TotalCount : routeParams.count); var paged = new PagingData <AlbumForUserContract>(albums.Items.ToPagedList(pageIndex, entriesPerPage, routeParams.count), id, "AlbumCollection", "ui-tabs-1"); paged.RouteValues = new RouteValueDictionary(new { action = "AlbumCollection", id, count = routeParams.count, purchaseStatus = routeParams.purchaseStatus }); return(PartialView("AlbumCollectionPaged", paged)); }
public ActionResult AlbumCollectionPaged(AlbumCollectionRouteParams routeParams) { var id = routeParams.id; if (id == invalidId) { return(NoId()); } int pageSize = Math.Min(routeParams.pageSize ?? 50, 200); var pageIndex = (routeParams.page - 1) ?? 0; var queryParams = new AlbumCollectionQueryParams(id, PagingProperties.CreateFromPage(pageIndex, pageSize, routeParams.totalCount == 0)) { FilterByStatus = routeParams.purchaseStatus != null ? new[] { routeParams.purchaseStatus.Value } : null }; var albums = Data.GetAlbumCollection(queryParams); routeParams.totalCount = (albums.TotalCount != 0 ? albums.TotalCount : routeParams.totalCount); var paged = new PagingData <AlbumForUserContract>(albums.Items.ToPagedList(pageIndex, pageSize, routeParams.totalCount), id, "AlbumCollection", "ui-tabs-1", addTotalCount: true); paged.RouteValues = new RouteValueDictionary(new { routeParams.purchaseStatus, pageSize }); return(PartialView("AlbumCollectionPaged", paged)); }