Example #1
0
        public PartialFindResult <PVForSongContract> GetList(string name       = null, string author = null,
                                                             PVService?service = null,
                                                             int maxResults    = 10, bool getTotalCount = false,
                                                             ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            return(_repository.HandleQuery(db =>
            {
                var query = db.Query <PVForSong>();

                if (!string.IsNullOrEmpty(name))
                {
                    query = query.Where(pv => pv.Name == name);
                }

                if (!string.IsNullOrEmpty(author))
                {
                    query = query.Where(pv => pv.Author == author);
                }

                if (service.HasValue)
                {
                    query = query.Where(pv => pv.Service == service);
                }

                var count = getTotalCount ? query.Count() : 0;

                query = query.Take(maxResults);

                var results = query.Select(p => new PVForSongContract(p, lang)).ToArray();
                return PartialFindResult.Create(results, count);
            }));
        }
Example #2
0
        public PartialFindResult <DiscussionTopicContract> GetTopics(
            int?folderId = null,
            int start    = 0, int maxResults = DefaultMax, bool getTotalCount = false,
            DiscussionTopicSortRule sort         = DiscussionTopicSortRule.DateCreated,
            DiscussionTopicOptionalFields fields = DiscussionTopicOptionalFields.None)
        {
            return(HandleQuery(ctx =>
            {
                var query = ctx.OfType <DiscussionTopic>()
                            .Query()
                            .WhereNotDeleted()
                            .WhereIsInFolder(folderId);

                var topics = query
                             .OrderBy(sort)
                             .Paged(new PagingProperties(start, maxResults, getTotalCount))
                             .ToArray()
                             .Select(f => new DiscussionTopicContract(f, _userIconFactory, fields))
                             .ToArray();

                var count = (getTotalCount ? query.Count() : 0);

                return PartialFindResult.Create(topics, count);
            }));
        }
Example #3
0
        private EntryForApiContract AssertHasEntry(PartialFindResult <EntryForApiContract> result, string name, EntryType entryType)
        {
            var entry = result.Items.FirstOrDefault(a => string.Equals(a.DefaultName, name, StringComparison.InvariantCultureIgnoreCase) &&
                                                    a.EntryType == entryType);

            Assert.IsNotNull(entry, "Entry found");
            return(entry);
        }
Example #4
0
        public PartialFindResult <ActivityEntryForApiContract> GetList(
            DateTime?before                    = null,
            DateTime?since                     = null,
            int?userId                         = null,
            EntryEditEvent?editEvent           = null,
            int maxResults                     = defaultMax,
            bool getTotalCount                 = false,
            ActivityEntryOptionalFields fields = ActivityEntryOptionalFields.None,
            EntryOptionalFields entryFields    = EntryOptionalFields.None,
            ContentLanguagePreference lang     = ContentLanguagePreference.Default)
        {
            maxResults = Math.Min(maxResults, absoluteMax);
            bool ssl = WebHelper.IsSSL(Request);

            return(repository.HandleQuery(ctx => {
                var query = ctx.Query <ActivityEntry>();

                if (before.HasValue && !since.HasValue)
                {
                    query = query.Where(a => a.CreateDate < before.Value);
                }

                if (!before.HasValue && since.HasValue)
                {
                    query = query.Where(a => a.CreateDate > since.Value);
                }

                if (before.HasValue && since.HasValue)
                {
                    query = query.Where(a => a.CreateDate > since.Value && a.CreateDate < before.Value);
                }

                if (userId.HasValue)
                {
                    query = query.Where(a => a.Author.Id == userId.Value);
                }

                if (editEvent.HasValue)
                {
                    query = query.Where(a => a.EditEvent == editEvent.Value);
                }

                var activityEntries = query
                                      .OrderByDescending(a => a.CreateDate)
                                      .Take(maxResults)
                                      .ToArray()
                                      .Where(a => !a.EntryBase.Deleted)
                                      .Select(a => new ActivityEntryForApiContract(a,
                                                                                   fields.HasFlag(ActivityEntryOptionalFields.Entry) ? entryForApiContractFactory.Create(a.EntryBase, entryFields, lang, ssl) : null,
                                                                                   userIconFactory, permissionContext, fields))
                                      .ToArray();

                var count = getTotalCount ? query.Count() : 0;

                return PartialFindResult.Create(activityEntries, count);
            }));
        }
Example #5
0
		private EntryForApiContract AssertHasEntry(PartialFindResult<EntryForApiContract> result, string name, EntryType entryType) {
			
			var entry = result.Items.FirstOrDefault(a => string.Equals(a.DefaultName, name, StringComparison.InvariantCultureIgnoreCase)
				&& a.EntryType == entryType);

			Assert.IsNotNull(entry, "Entry found");
			return entry;

		}
Example #6
0
        public PartialFindResult <Tag> Find(TagQueryParams queryParams, bool onlyMinimalFields)
        {
            var isMoveToTopQuery = queryParams.Common.MoveExactToTop &&
                                   queryParams.Common.NameMatchMode != NameMatchMode.StartsWith &&
                                   queryParams.Common.NameMatchMode != NameMatchMode.Exact &&
                                   queryParams.Paging.Start == 0 &&
                                   !queryParams.Common.TextQuery.IsEmpty;

            if (isMoveToTopQuery)
            {
                return(GetTagsMoveExactToTop(queryParams));
            }

            var query = CreateQuery(queryParams, queryParams.Common.Query, queryParams.Common.NameMatchMode);

            var orderedAndPaged = query
                                  .OrderBy(queryParams.SortRule, _languagePreference)
                                  .Paged(queryParams.Paging);

            Tag[] tags;

            if (onlyMinimalFields)
            {
                tags = orderedAndPaged.Select(t => new Tag
                {
                    Id           = t.Id,
                    CategoryName = t.CategoryName,
                    CreateDate   = t.CreateDate,
                    Status       = t.Status,
                    Version      = t.Version,
                    Names        = new NameManager <TagName>
                    {
                        SortNames =
                        {
                            English         = t.Names.SortNames.English,
                            Romaji          = t.Names.SortNames.Romaji,
                            Japanese        = t.Names.SortNames.Japanese,
                            DefaultLanguage = t.Names.SortNames.DefaultLanguage
                        }
                    }
                }).ToArray();
            }
            else
            {
                tags = orderedAndPaged.ToArray();
            }

            var count = 0;

            if (queryParams.Paging.GetTotalCount)
            {
                count = query.Count();
            }

            return(PartialFindResult.Create(tags, count));
        }
Example #7
0
        private void AssertTags(PartialFindResult <Song> result, params string[] songNames)
        {
            Assert.AreEqual(songNames.Length, result.TotalCount, "Total number of results");
            Assert.AreEqual(songNames.Length, result.Items.Length, "Number of returned items");

            foreach (var songName in songNames)
            {
                Assert.IsTrue(result.Items.Any(s => s.DefaultName == songName), string.Format("Song named '{0}' was returned", songName));
            }
        }
Example #8
0
 public SearchEntries(string filter,
     PartialFindResult<AlbumWithAdditionalNamesContract> albums, PartialFindResult<ArtistWithAdditionalNamesContract> artists,
     PartialFindResult<SongWithAlbumContract> songs,
     PartialFindResult<TagContract> tags)
 {
     Filter = filter;
     Albums = albums;
     Artists = artists;
     Songs = songs;
     Tags = tags;
 }
Example #9
0
 public SearchEntries(string filter,
                      PartialFindResult <AlbumWithAdditionalNamesContract> albums, PartialFindResult <ArtistWithAdditionalNamesContract> artists,
                      PartialFindResult <SongWithAlbumContract> songs,
                      PartialFindResult <TagContract> tags)
 {
     Filter  = filter;
     Albums  = albums;
     Artists = artists;
     Songs   = songs;
     Tags    = tags;
 }
Example #10
0
        public ArtistIndex(PartialFindResult <ArtistWithAdditionalNamesContract> result, string filter,
                           ArtistType artistType, bool?draftsOnly, ArtistSortRule sort, int?page, IndexRouteParams routeParams)
        {
            Artists     = new StaticPagedList <ArtistWithAdditionalNamesContract>(result.Items, page ?? 1, 30, result.TotalCount);
            DraftsOnly  = draftsOnly ?? false;
            Filter      = filter;
            ArtistType  = artistType;
            Sort        = sort;
            RouteParams = routeParams;

            FilterableArtistTypes = EnumVal <ArtistType> .Values.ToDictionary(a => a, Translate.ArtistTypeName);
        }
 public AllEntriesSearchResult(string query,
                               PartialFindResult <AlbumContract> albums,
                               PartialFindResult <ArtistContract> artists,
                               PartialFindResult <SongWithAlbumContract> songs,
                               PartialFindResult <TagContract> tags)
 {
     Query   = query;
     Albums  = albums;
     Artists = artists;
     Songs   = songs;
     Tags    = tags;
 }
 public AllEntriesSearchResult(string query, 
     PartialFindResult<AlbumWithAdditionalNamesContract> albums,
     PartialFindResult<ArtistWithAdditionalNamesContract> artists,
     PartialFindResult<SongWithAlbumContract> songs,
     PartialFindResult<TagContract> tags)
 {
     Query = query;
     Albums = albums;
     Artists = artists;
     Songs = songs;
     Tags = tags;
 }
Example #13
0
        public ArtistIndex(PartialFindResult<ArtistWithAdditionalNamesContract> result, string filter,
            ArtistType artistType, bool? draftsOnly, ArtistSortRule sort, int? page, IndexRouteParams routeParams)
        {
            Artists = new StaticPagedList<ArtistWithAdditionalNamesContract>(result.Items, page ?? 1, 30, result.TotalCount);
            DraftsOnly = draftsOnly ?? false;
            Filter = filter;
            ArtistType = artistType;
            Sort = sort;
            RouteParams = routeParams;

            FilterableArtistTypes = EnumVal<ArtistType>.Values.ToDictionary(a => a, Translate.ArtistTypeName);
        }
Example #14
0
 public Index(PartialFindResult<AlbumContract> result, string filter, DiscType discType, 
     AlbumSortRule sortRule, EntryViewMode view, int? page, bool? draftsOnly, IndexRouteParams routeParams)
 {
     Page = page ?? 1;
     Albums = new StaticPagedList<AlbumContract>(result.Items,
         Page, 30, result.TotalCount);
     DiscType = discType;
     DraftsOnly = draftsOnly ?? false;
     Filter = filter;
     Sort = sortRule;
     View = view;
     RouteParams = routeParams;
 }
Example #15
0
 public Index(PartialFindResult <AlbumContract> result, string filter, DiscType discType,
              AlbumSortRule sortRule, EntryViewMode view, int?page, bool?draftsOnly, IndexRouteParams routeParams)
 {
     Page   = page ?? 1;
     Albums = new StaticPagedList <AlbumContract>(result.Items,
                                                  Page, 30, result.TotalCount);
     DiscType    = discType;
     DraftsOnly  = draftsOnly ?? false;
     Filter      = filter;
     Sort        = sortRule;
     View        = view;
     RouteParams = routeParams;
 }
Example #16
0
        public PartialFindResult <TagMappingContract> GetMappings(PagingProperties paging)
        {
            return(HandleQuery(ctx => {
                var query = ctx.Query <TagMapping>();

                var result = query
                             .OrderByName(LanguagePreference)
                             .Paged(paging)
                             .ToArray()
                             .Select(t => new TagMappingContract(t, LanguagePreference))
                             .ToArray();

                return PartialFindResult.Create(result, paging.GetTotalCount ? query.Count() : 0);
            }));
        }
Example #17
0
 public Index(PartialFindResult<SongWithAlbumAndPVsContract> result, string filter, NameMatchMode nameMatchMode, SongType songType, string timeFilter, bool onlyWithPVs, 
     SongSortRule sortRule, SongViewMode viewMode,
     bool draftsOnly, int page, int pageSize, IndexRouteParams routeParams)
 {
     ArtistId = routeParams.artistId ?? 0;
     DraftsOnly = draftsOnly;
     Songs = new StaticPagedList<SongWithAlbumAndPVsContract>(result.Items,
         page, pageSize, result.TotalCount);
     Filter = filter;
     NameMatchMode = nameMatchMode;
     SongType = songType;
     Since = timeFilter;
     OnlyWithPVs = onlyWithPVs;
     Sort = sortRule;
     ViewMode = viewMode;
     RouteParams = routeParams;
 }
Example #18
0
 public Index(PartialFindResult <SongWithAlbumAndPVsContract> result, string filter, NameMatchMode nameMatchMode, SongType songType, string timeFilter, bool onlyWithPVs,
              SongSortRule sortRule, SongViewMode viewMode,
              bool draftsOnly, int page, int pageSize, IndexRouteParams routeParams)
 {
     ArtistId   = routeParams.artistId ?? 0;
     DraftsOnly = draftsOnly;
     Songs      = new StaticPagedList <SongWithAlbumAndPVsContract>(result.Items,
                                                                    page, pageSize, result.TotalCount);
     Filter        = filter;
     NameMatchMode = nameMatchMode;
     SongType      = songType;
     Since         = timeFilter;
     OnlyWithPVs   = onlyWithPVs;
     Sort          = sortRule;
     ViewMode      = viewMode;
     RouteParams   = routeParams;
 }
Example #19
0
        public PartialFindResult <TResult> FindSeries <TResult>(Func <ReleaseEventSeries, TResult> fac,
                                                                SearchTextQuery textQuery, PagingProperties paging)
        {
            return(HandleQuery(ctx => {
                var q = ctx.Query <ReleaseEventSeries>()
                        .WhereHasName(textQuery)
                        .Paged(paging);

                var entries = q
                              .OrderBy(s => s.Name)
                              .ToArray()
                              .Select(fac)
                              .ToArray();

                var count = paging.GetTotalCount ? q.Count() : 0;

                return PartialFindResult.Create(entries, count);
            }));
        }
Example #20
0
        public PartialFindResult <TResult> Find <TResult>(Func <Venue, TResult> fac, VenueQueryParams queryParams)
        {
            return(HandleQuery(ctx => {
                var q = ctx.Query <Venue>()
                        .WhereNotDeleted()
                        .WhereHasName(queryParams.TextQuery)
                        .WhereInCircle(queryParams.Coordinates, queryParams.Radius, queryParams.DistanceUnit)
                        .Paged(queryParams.Paging);

                var entries = q
                              .OrderBy(queryParams.SortRule, PermissionContext.LanguagePreference, queryParams.Coordinates, queryParams.DistanceUnit)
                              .ToArray()
                              .Select(fac)
                              .ToArray();

                var count = queryParams.Paging.GetTotalCount ? q.Count() : 0;

                return PartialFindResult.Create(entries, count);
            }));
        }
Example #21
0
 public SongListDetailsContract(SongList list, PartialFindResult <SongInListContract> songLinks, IUserPermissionContext permissionContext)
     : base(list, permissionContext)
 {
     SongLinks = songLinks;
     //SongLinks = list.SongLinks.Select(s => new SongInListContract(s, permissionContext.LanguagePreference)).ToArray();
 }
Example #22
0
 private void AssertHasSong(PartialFindResult <Song> result, Song expected)
 {
     result.Items.Any(s => s.Equals(expected)).Should().BeTrue($"Found {expected}");
 }
Example #23
0
		public AllEntriesSearchResult Find(string query, int maxResults, bool getTotalCount) {

			if (string.IsNullOrWhiteSpace(query))
				return new AllEntriesSearchResult();

			var matchMode = NameMatchMode.Auto;
			query = FindHelpers.GetMatchModeAndQueryForSearch(query, ref matchMode);

			var canonized = ArtistHelper.GetCanonizedName(query);
			var words = (matchMode == NameMatchMode.Words ? FindHelpers.GetQueryWords(query) : null);

			return HandleQuery(session => {

				var artists = 
					session.Query<ArtistName>()
					.FilterByArtistName(query, canonized, matchMode, null) // Can't use the existing words collection here as they are noncanonized
					.Where(a => !a.Artist.Deleted)
					.Select(n => n.Artist)
					.AddNameOrder(LanguagePreference)
					.Distinct()
					.Take(maxResults)
					.ToArray();

				var artistCount = (getTotalCount ?
					session.Query<ArtistName>()
					.FilterByArtistName(query, canonized, matchMode, null)
					.Where(a => !a.Artist.Deleted)
					.Select(n => n.Artist)
					.Distinct()
					.Count() 
					: 0);

				var albums = 
					session.Query<AlbumName>()
					.AddEntryNameFilter(query, matchMode, words)
					.Where(a => !a.Album.Deleted)
					.Select(n => n.Album)
					.AddNameOrder(LanguagePreference)
					.Distinct()
					.Take(maxResults)
					.ToArray();

				var albumCount = (getTotalCount ?
					session.Query<AlbumName>()
					.AddEntryNameFilter(query, matchMode, words)
					.Where(a => !a.Album.Deleted)
					.Select(n => n.Album)
					.Distinct()
					.Count()
					: 0);

				var songs = 
					session.Query<SongName>()
					.AddEntryNameFilter(query, matchMode, words)
					.Where(a => !a.Song.Deleted)
					.Select(n => n.Song)
					.AddNameOrder(LanguagePreference)
					.Distinct()
					.Take(maxResults)
					.ToArray();

				var songCount = (getTotalCount ?
					session.Query<SongName>()
					.AddEntryNameFilter(query, matchMode, words)
					.Where(a => !a.Song.Deleted)
					.Select(n => n.Song)
					.Distinct()
					.Count()
					: 0);

				var tagStr = query.Replace(' ', '_');

				var tags = session.Query<Tag>()
					.AddTagNameFilter(tagStr, matchMode)
					.OrderBy(t => t.Name)
					.Take(maxResults)
					.ToArray();

				var tagCount = (getTotalCount ? session.Query<Tag>()
					.AddTagNameFilter(tagStr, matchMode)
					.Distinct()
					.Count()
					: 0);

				var artistResult = new PartialFindResult<ArtistContract>(
					artists.Select(a => new ArtistContract(a, PermissionContext.LanguagePreference)).ToArray(), artistCount);

				var albumResult = new PartialFindResult<AlbumContract>(
					albums.Select(a => new AlbumContract(a, PermissionContext.LanguagePreference)).ToArray(), albumCount);

				var songResult = new PartialFindResult<SongWithAlbumContract>(
					songs.Select(a => new SongWithAlbumContract(a, PermissionContext.LanguagePreference)).ToArray(), songCount);

				var tagResult = new PartialFindResult<TagContract>(
					tags.Select(a => new TagContract(a)).ToArray(), tagCount);

				return new AllEntriesSearchResult(query, albumResult, artistResult, songResult, tagResult);

			});

		}
Example #24
0
 private void AssertHasSong(PartialFindResult <Song> result, Song expected)
 {
     Assert.IsTrue(result.Items.Any(s => s.Equals(expected)), string.Format("Found {0}", expected));
 }
		private void AssertHasSong(PartialFindResult<Song> result, Song expected) {
			
			Assert.IsTrue(result.Items.Any(s => s.Equals(expected)), string.Format("Found {0}", expected));

		}
 public SongListDetailsContract(SongList list, PartialFindResult<SongInListContract> songLinks, IUserPermissionContext permissionContext)
     : base(list, permissionContext)
 {
     SongLinks = songLinks;
     //SongLinks = list.SongLinks.Select(s => new SongInListContract(s, permissionContext.LanguagePreference)).ToArray();
 }