public ActionResult Index(IndexRouteParams routeParams)
 {
     return(RedirectToAction("Index", "Search", new SearchRouteParams {
         searchType = EntryType.Artist, filter = routeParams.filter, sort = routeParams.sort,
         artistType = routeParams.artistType
     }));
 }
Example #2
0
        //
        // GET: /Artist/
        public ActionResult Index(IndexRouteParams routeParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var artistType = routeParams.artistType ?? ArtistType.Unknown;
            var filter     = routeParams.filter;
            var page       = routeParams.page;
            var draftsOnly = routeParams.draftsOnly;
            var matchMode  = routeParams.matchMode ?? NameMatchMode.Auto;
            var sortRule   = routeParams.sort ?? ArtistSortRule.Name;

            if (matchMode == NameMatchMode.Auto && filter != null && filter.Length <= 2)
            {
                matchMode = NameMatchMode.StartsWith;
            }

            var queryParams = new ArtistQueryParams(filter,
                                                    artistType != ArtistType.Unknown ? new[] { artistType } : new ArtistType[] { },
                                                    ((page ?? 1) - 1) * 30, 30, draftsOnly ?? false, true, matchMode, sortRule, false);

            var result = Service.FindArtists(queryParams);

            if (page == null && result.TotalCount == 1 && result.Items.Length == 1)
            {
                return(RedirectToAction("Details", new { id = result.Items[0].Id }));
            }

            var model = new ArtistIndex(result, filter, artistType, draftsOnly, sortRule, page, routeParams);

            return(View(model));
        }
Example #3
0
        //
        // GET: /Album/

        public ActionResult Index(IndexRouteParams routeParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var filter     = routeParams.filter;
            var page       = routeParams.page;
            var draftsOnly = routeParams.draftsOnly;
            var dType      = routeParams.discType ?? DiscType.Unknown;
            var matchMode  = routeParams.matchMode ?? NameMatchMode.Auto;
            var sortRule   = routeParams.sort ?? AlbumSortRule.Name;
            var viewMode   = routeParams.view ?? EntryViewMode.Details;

            if (matchMode == NameMatchMode.Auto && filter != null && filter.Length <= 2)
            {
                matchMode = NameMatchMode.StartsWith;
            }

            var queryParams = new AlbumQueryParams(filter, dType, ((page ?? 1) - 1) * 30, 30, draftsOnly ?? false,
                                                   true, moveExactToTop: false, sortRule: sortRule, nameMatchMode: matchMode);

            var result = Service.Find(queryParams);

            if (page == null && result.TotalCount == 1 && result.Items.Length == 1)
            {
                return(RedirectToAction("Details", new { id = result.Items[0].Id }));
            }

            var model = new Index(result, filter, dType, sortRule, viewMode, page, draftsOnly, routeParams);

            SetSearchEntryType(EntryType.Album);

            return(View(model));
        }
Example #4
0
 public ActionResult Index(IndexRouteParams indexParams)
 {
     return(RedirectToAction("Index", "Search", new SearchRouteParams {
         searchType = EntryType.Song, filter = indexParams.filter, sort = indexParams.sort,
         songType = indexParams.songType, onlyWithPVs = indexParams.onlyWithPVs, artistId = indexParams.artistId
     }));
 }
Example #5
0
        public FeedResult Feed(IndexRouteParams indexParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var pageSize    = (indexParams.pageSize.HasValue ? Math.Min(indexParams.pageSize.Value, 30) : 30);
            var sortRule    = indexParams.sort ?? SongSortRule.Name;
            var timeFilter  = DateTimeUtils.ParseFromSimpleString(indexParams.since);
            var filter      = indexParams.filter;
            var songType    = indexParams.songType ?? SongType.Unspecified;
            var draftsOnly  = indexParams.draftsOnly ?? false;
            var matchMode   = indexParams.matchMode ?? NameMatchMode.Auto;
            var onlyWithPVs = indexParams.onlyWithPVs ?? false;
            var minScore    = indexParams.minScore ?? 0;

            var queryParams = new SongQueryParams(filter,
                                                  songType != SongType.Unspecified ? new[] { songType } : new SongType[] { },
                                                  0, pageSize, draftsOnly, false, matchMode, sortRule, false, false, null)
            {
                TimeFilter  = timeFilter,
                OnlyWithPVs = onlyWithPVs,
                ArtistId    = indexParams.artistId ?? 0,
                MinScore    = minScore,
            };

            var result = Service.FindWithThumbPreferNotNico(queryParams);

            var fac  = new SongFeedFactory();
            var feed = fac.Create(result.Items,
                                  VocaUriBuilder.CreateAbsolute(Url.Action("Index", indexParams)),
                                  song => RenderPartialViewToString("SongItem", song),
                                  song => Url.Action("Details", new { id = song.Id }));

            return(new FeedResult(new Atom10FeedFormatter(feed)));
        }
Example #6
0
        public ActionResult Index(IndexRouteParams indexParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var pageSize    = (indexParams.pageSize.HasValue ? Math.Min(indexParams.pageSize.Value, 30) : 30);
            var page        = indexParams.page ?? 1;
            var sortRule    = indexParams.sort ?? SongSortRule.Name;
            var timeFilter  = DateTimeUtils.ParseFromSimpleString(indexParams.since);
            var filter      = indexParams.filter;
            var songType    = indexParams.songType ?? SongType.Unspecified;
            var draftsOnly  = indexParams.draftsOnly ?? false;
            var matchMode   = indexParams.matchMode ?? NameMatchMode.Auto;
            var onlyWithPVs = indexParams.onlyWithPVs ?? false;
            var view        = indexParams.view ?? SongViewMode.Details;

            if (matchMode == NameMatchMode.Auto && filter != null && filter.Length <= 2)
            {
                matchMode = NameMatchMode.StartsWith;
            }

            var queryParams = new SongQueryParams(filter,
                                                  songType != SongType.Unspecified ? new[] { songType } : new SongType[] { },
                                                  (page - 1) * pageSize, pageSize, draftsOnly, true, matchMode, sortRule, false, false, null)
            {
                TimeFilter  = timeFilter,
                OnlyWithPVs = onlyWithPVs,
                ArtistId    = indexParams.artistId ?? 0
            };

            var result = Service.FindWithAlbum(queryParams, view == SongViewMode.Preview);

            if (page == 1 && result.TotalCount == 1 && result.Items.Length == 1)
            {
                return(RedirectToAction("Details", new { id = result.Items[0].Id }));
            }

            SetSearchEntryType(EntryType.Song);
            var model = new Index(result, filter, matchMode, songType, indexParams.since, onlyWithPVs, sortRule, view, draftsOnly, page, pageSize, indexParams);

            return(View(model));
        }
Example #7
0
        public async Task <FeedResult> Feed(IndexRouteParams indexParams)
        {
            WebHelper.VerifyUserAgent(Request);

            var pageSize    = (indexParams.pageSize.HasValue ? Math.Min(indexParams.pageSize.Value, 30) : 30);
            var sortRule    = indexParams.sort ?? SongSortRule.Name;
            var timeFilter  = DateTimeUtils.ParseFromSimpleString(indexParams.since);
            var filter      = indexParams.filter;
            var songType    = indexParams.songType ?? SongType.Unspecified;
            var matchMode   = indexParams.matchMode ?? NameMatchMode.Auto;
            var onlyWithPVs = indexParams.onlyWithPVs ?? false;
            var minScore    = indexParams.minScore ?? 0;

            var textQuery   = SearchTextQuery.Create(filter, matchMode);
            var queryParams = new SongQueryParams(textQuery,
                                                  songType != SongType.Unspecified ? new[] { songType } : new SongType[] { },
                                                  0, pageSize, false, sortRule, false, false, null)
            {
                ArtistParticipation =
                {
                    ArtistIds = !indexParams.artistId.HasValue || indexParams.artistId.Value == 0 ? null : new [] { indexParams.artistId.Value }
                },
                TimeFilter       = timeFilter,
                OnlyWithPVs      = onlyWithPVs,
                MinScore         = minScore,
                UserCollectionId = indexParams.userCollectionId ?? 0,
                FollowedByUserId = indexParams.followedByUserId ?? 0
            };

            var result = Service.FindWithThumbPreferNotNico(queryParams);

            var fac  = new SongFeedFactory();
            var feed = await fac.CreateAsync(result.Items,
                                             VocaUriBuilder.CreateAbsolute(Url.Action("Index", indexParams)),
                                             song => RenderPartialViewToStringAsync("SongItem", song),
                                             song => Url.Action("Details", new { id = song.Id }));

            return(new FeedResult(new Atom10FeedFormatter(feed)));
        }