コード例 #1
0
        public PartialFindResult <ArtistForApiContract> GetList(
            string query                   = "",
            string artistTypes             = null,
            string tag                     = null,
            int?followedByUserId           = null,
            EntryStatus?status             = null,
            int start                      = 0, int maxResults = defaultMax, bool getTotalCount = false,
            ArtistSortRule sort            = ArtistSortRule.Name,
            bool preferAccurateMatches     = false,
            NameMatchMode nameMatchMode    = NameMatchMode.Exact,
            ArtistOptionalFields fields    = ArtistOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            var textQuery = ArtistSearchTextQuery.Create(query, nameMatchMode);
            var types     = EnumVal <ArtistType> .ParseMultiple(artistTypes);

            var param = new ArtistQueryParams(textQuery, types, start, Math.Min(maxResults, absoluteMax), false, getTotalCount, sort, preferAccurateMatches)
            {
                Tag            = tag,
                UserFollowerId = followedByUserId ?? 0
            };

            param.Common.EntryStatus = status;

            var ssl     = WebHelper.IsSSL(Request);
            var artists = service.FindArtists(s => new ArtistForApiContract(s, lang, thumbPersister, ssl, fields), param);

            return(artists);
        }
コード例 #2
0
        public static IQueryable <Album> WhereMatchFilter(this IQueryable <Album> query, AdvancedSearchFilter filter)
        {
            switch (filter.FilterType)
            {
            case AdvancedFilterType.ArtistType: {
                var param = EnumVal <ArtistType> .Parse(filter.Param);

                return(WhereArtistHasType(query, param));
            }

            case AdvancedFilterType.NoCoverPicture: {
                return(query.Where(a => a.CoverPictureMime == null || a.CoverPictureMime == string.Empty));
            }

            case AdvancedFilterType.HasStoreLink: {
                return(query.WhereHasLinkWithCategory(WebLinkCategory.Commercial));
            }

            case AdvancedFilterType.WebLink: {
                return(query.WhereHasLink <Album, AlbumWebLink>(filter.Param));
            }
            }

            return(query);
        }
コード例 #3
0
 public ActionResult Creat(User user)
 {
     try
     {
         if (ModelState.IsValid)
         {
             var ret = userService.Exist(x => x.UserName == user.UserName || x.DisplayName == user.DisplayName);
             if (ret)
             {
                 return(View(user));
             }
             user.Status = EnumVal.GetStatusVal(Status.Y);
             User newUser = userService.Add(user);
             if (!string.IsNullOrWhiteSpace(newUser.UserName))
             {
                 return(RedirectToAction("Index", "UserManage"));
             }
         }
     }
     catch (Exception ex)
     {
         Log.Error("Post新增用户:", ex);
     }
     return(View(user));
 }
コード例 #4
0
        public ActionResult Index(ViewLogin viewUser)
        {
            if (ModelState.IsValid)
            {
                try {
                    var user = userService.Find(viewUser.UserName);

                    //存在并且状态为Y
                    if (user == null && user.Status == EnumVal.GetStatusVal(Status.Y))
                    {
                        ModelState.AddModelError("UserName", "用户名不存在");
                    }
                    else if (viewUser.Password != user.Password)
                    {
                        ModelState.AddModelError("Password", "密码不正确");
                    }
                    else
                    {
                        Session.Add("UserName", viewUser.UserName);
                        Session.Add("Password", viewUser.Password);
                        Session.Add("UserID", user.ID);
                        return(RedirectToAction("Index", "Home"));
                    }
                }catch (Exception ex) {
                    Log.Error("LoginController-Index-", ex);
                    return(View(viewUser));
                }
            }
            return(View(viewUser));
        }
コード例 #5
0
ファイル: Try.cs プロジェクト: clear1oveseven/Utopia
        public override int GetHashCode()
        {
            int hash = 1;

            if (IntVal != 0)
            {
                hash ^= IntVal.GetHashCode();
            }
            if (StrVal.Length != 0)
            {
                hash ^= StrVal.GetHashCode();
            }
            if (msgVal_ != null)
            {
                hash ^= MsgVal.GetHashCode();
            }
            if (EnumVal != 0)
            {
                hash ^= EnumVal.GetHashCode();
            }
            if (NestEnumVal != 0)
            {
                hash ^= NestEnumVal.GetHashCode();
            }
            hash ^= msgArray_.GetHashCode();
            hash ^= nestEnumArray_.GetHashCode();
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
コード例 #6
0
        public static IQueryable <T> WhereAlbumMatchFilter <T>(this IQueryable <T> query, AdvancedSearchFilter?filter)
            where T : IAlbumLink
        {
            if (filter == null)
            {
                return(query);
            }

            switch (filter.FilterType)
            {
            case AdvancedFilterType.ArtistType:
            {
                var param = EnumVal <ArtistType> .Parse(filter.Param);

                return(WhereAlbumHasArtistWithType(query, param));
            }

            case AdvancedFilterType.NoCoverPicture:
            {
                return(query.Where(a => a.Album.CoverPictureMime == null || a.Album.CoverPictureMime == string.Empty));
            }

            case AdvancedFilterType.HasStoreLink:
            {
                return(query.WhereAlbumHasLinkWithCategory(WebLinkCategory.Commercial));
            }

            case AdvancedFilterType.HasTracks:
            {
                return(query.Where(a => filter.Negate != a.Album.AllSongs.Any(s => s.Song == null || !s.Song.Deleted)));
            }
            }

            return(query);
        }
コード例 #7
0
ファイル: SongType.cs プロジェクト: AgFlore/vocadb
 public static IEnumerable <SongType> ToIndividualSelections(this SongTypes selections, bool skipUnspecified = false)
 {
     return(EnumVal <SongTypes>
            .GetIndividualValues(selections)
            .Where(t => !skipUnspecified || t != SongTypes.Unspecified)
            .Select(s => (SongType)s));
 }
コード例 #8
0
        public PartialFindResult <SongInListForApiContract> GetSongs(int listId,
                                                                     string query          = "",
                                                                     string songTypes      = null,
                                                                     PVServices?pvServices = null,
                                                                     [FromQuery(Name = "tagId[]")] int[] tagId       = null,
                                                                     [FromQuery(Name = "artistId[]")] int[] artistId = null,
                                                                     bool childVoicebanks = false,
                                                                     [FromQuery(Name = "advancedFilters")] AdvancedSearchFilterParams[] advancedFilters = null,
                                                                     int start                      = 0, int maxResults = DefaultMax, bool getTotalCount = false,
                                                                     SongSortRule?sort              = null,
                                                                     NameMatchMode nameMatchMode    = NameMatchMode.Auto,
                                                                     SongOptionalFields fields      = SongOptionalFields.None,
                                                                     ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            maxResults = Math.Min(maxResults, AbsoluteMax);
            var types = EnumVal <SongType> .ParseMultiple(songTypes);

            return(_queries.GetSongsInList(
                       new SongInListQueryParams
            {
                TextQuery = SearchTextQuery.Create(query, nameMatchMode),
                ListId = listId,
                Paging = new PagingProperties(start, maxResults, getTotalCount),
                PVServices = pvServices,
                ArtistIds = artistId,
                ChildVoicebanks = childVoicebanks,
                TagIds = tagId,
                SortRule = sort,
                AdvancedFilters = advancedFilters?.Select(advancedFilter => advancedFilter.ToAdvancedSearchFilter()).ToArray(),
                SongTypes = types,
            },
                       songInList => new SongInListForApiContract(songInList, lang, fields)));
        }
コード例 #9
0
 public static IEnumerable <ContentLanguageSelection> ToIndividualSelections(this ContentLanguageSelections selections)
 {
     return(EnumVal <ContentLanguageSelections>
            .GetIndividualValues(selections)
            .Where(s => s != ContentLanguageSelections.All)
            .Select(s => (ContentLanguageSelection)s));
 }
コード例 #10
0
ファイル: SongSearch.cs プロジェクト: Pyther99/vocadb
        public ParsedSongQuery ParseTextQuery(SearchTextQuery textQuery)
        {
            var query = textQuery.OriginalQuery;

            if (string.IsNullOrWhiteSpace(query))
            {
                return(new ParsedSongQuery());
            }

            var trimmed = query.Trim();

            var term = GetTerm(trimmed, "id", "tag", "artist-tag", "artist-type", "publish-date");

            return((term?.PropertyName) switch
            {
                "tag" => new ParsedSongQuery {
                    TagName = term.Value
                },
                "artist-tag" => new ParsedSongQuery {
                    ArtistTag = term.Value
                },
                "artist-type" => new ParsedSongQuery {
                    ArtistType = EnumVal <ArtistType> .ParseSafe(term.Value, ArtistType.Unknown)
                },
                "id" => new ParsedSongQuery {
                    Id = PrimitiveParseHelper.ParseIntOrDefault(term.Value, 0)
                },
                "publish-date" => ParseDateRange(term.Value),
                _ => ParseReferenceQuery(trimmed, query) ?? new ParsedSongQuery {
                    Name = textQuery
                },
            });
コード例 #11
0
        public static IQueryable <Artist> WhereMatchFilter(this IQueryable <Artist> query, AdvancedSearchFilter filter)
        {
            switch (filter.FilterType)
            {
            case AdvancedFilterType.HasUserAccount: {
                return(query.Where(a => a.OwnerUsers.Any()));
            }

            case AdvancedFilterType.RootVoicebank: {
                return(filter.Negate ? query.Where(a => a.BaseVoicebank != null) : query.Where(a => ArtistHelper.VoiceSynthesizerTypes.Contains(a.ArtistType) && a.BaseVoicebank == null));
            }

            case AdvancedFilterType.VoiceProvider: {
                var param = EnumVal <ArtistType> .ParseSafe(filter.Param, ArtistType.Unknown);

                return(param == ArtistType.Unknown ?
                       query.Where(a => a.AllMembers.Any(m => m.LinkType == ArtistLinkType.VoiceProvider)) :
                       query.Where(a => a.AllMembers.Any(m => m.LinkType == ArtistLinkType.VoiceProvider && m.Member.ArtistType == param)));
            }

            case AdvancedFilterType.WebLink: {
                return(query.WhereHasLink <Artist, ArtistWebLink>(filter.Param));
            }
            }

            return(query);
        }
コード例 #12
0
        public static IQueryable <T> WhereMatchFilter <T>(this IQueryable <T> query, AdvancedSearchFilter filter)
            where T : ISongLink
        {
            if (filter == null)
            {
                return(query);
            }

            switch (filter.FilterType)
            {
            case AdvancedFilterType.ArtistType: {
                var param = EnumVal <ArtistType> .Parse(filter.Param);

                return(WhereSongHasArtistWithType(query, param));
            }

            case AdvancedFilterType.HasMultipleVoicebanks: {
                return(query.Where(s => s.Song.AllArtists.Count(a => !a.IsSupport && ArtistHelper.VoiceSynthesizerTypes.Contains(a.Artist.ArtistType)) > 1));
            }

            case AdvancedFilterType.HasPublishDate: {
                return(query.WhereSongHasPublishDate(!filter.Negate));
            }

            case AdvancedFilterType.Lyrics: {
                var any           = filter.Param == AdvancedSearchFilter.Any;
                var languageCodes = !any ? (filter.Param ?? string.Empty).Split(',') : null;
                return(WhereSongHasLyrics(query, languageCodes, any));
            }
            }

            return(query);
        }
コード例 #13
0
ファイル: ArtistHelper.cs プロジェクト: lordofire/vocadb
 /// <summary>
 /// Gets a list of individual values from bitarray.
 /// <see cref="ArtistTypes.Unknown"/> is skipped.
 /// </summary>
 /// <param name="flags">Bitarray of artist types.</param>
 /// <returns>Individual artist types.</returns>
 public static ArtistType[] GetArtistTypesFromFlags(ArtistTypes flags)
 {
     return(EnumVal <ArtistTypes>
            .GetIndividualValues(flags)
            .Where(v => v != ArtistTypes.Unknown)
            .Select(a => EnumVal <ArtistType> .Parse(a.ToString()))
            .ToArray());
 }
コード例 #14
0
        public AuditLogEntryContract[] GetAuditLog(string filter, int start, int maxEntries, int timeCutoffDays,
                                                   string userName, string[] excludeUsers, bool onlyNewUsers,
                                                   AuditLogUserGroupFilter filterByGroup = AuditLogUserGroupFilter.Nothing)
        {
            return(HandleTransaction(session => {
                var q = session.Query <AuditLogEntry>();

                if (timeCutoffDays > 0)
                {
                    var cutoff = DateTime.Now - TimeSpan.FromDays(timeCutoffDays);
                    q = q.Where(e => e.Time > cutoff);
                }

                if (!string.IsNullOrWhiteSpace(filter))
                {
                    q = q.Where(e => e.Action.Contains(filter));
                }

                if (!string.IsNullOrWhiteSpace(userName))
                {
                    q = q.Where(e => e.AgentName == userName || e.User.Options.LastLoginAddress == userName);
                }

                if (excludeUsers.Any())
                {
                    var usr = session.Query <User>().Where(u => excludeUsers.Contains(u.Name)).Select(u => u.Id).Distinct().ToArray();

                    q = q.Where(e => !usr.Contains(e.User.Id));
                }

                if (onlyNewUsers)
                {
                    var newUserDate = DateTime.Now - TimeSpan.FromDays(7);
                    q = q.Where(e => e.User.CreateDate >= newUserDate);
                }

                if (filterByGroup != AuditLogUserGroupFilter.Nothing && filterByGroup != AuditLogUserGroupFilter.NoFilter)
                {
                    var userGroup = EnumVal <UserGroupId> .Parse(filterByGroup.ToString());
                    q = q.Where(e => e.User != null && e.User.GroupId == userGroup);
                }

                if (filterByGroup == AuditLogUserGroupFilter.Nothing)
                {
                    q = q.Where(e => e.User == null);
                }

                var entries = q
                              .OrderByDescending(e => e.Time)
                              .Skip(start)
                              .Take(maxEntries)
                              .ToArray()
                              .Select(e => new AuditLogEntryContract(e))
                              .ToArray();

                return entries;
            }, IsolationLevel.ReadUncommitted));
        }
コード例 #15
0
        public PartialFindResult <SongForApiContract> GetList(
            string query               = "",
            string songTypes           = null,
            [FromUri] string[] tagName = null,
            [FromUri] int[] tagId      = null,
            bool childTags             = false,
            [FromUri] int[] artistId   = null,
            ArtistAlbumParticipationStatus artistParticipationStatus = ArtistAlbumParticipationStatus.Everything,
            bool childVoicebanks            = false,
            bool includeMembers             = false,
            bool onlyWithPvs                = false,
            [FromUri] PVServices?pvServices = null,
            int?since            = null,
            int?minScore         = null,
            int?userCollectionId = null,
            int?releaseEventId   = null,
            EntryStatus?status   = null,
            [FromUri] AdvancedSearchFilter[] advancedFilters = null,
            int start                      = 0, int maxResults = defaultMax, bool getTotalCount = false,
            SongSortRule sort              = SongSortRule.Name,
            bool preferAccurateMatches     = false,
            NameMatchMode nameMatchMode    = NameMatchMode.Exact,
            SongOptionalFields fields      = SongOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            var textQuery = SearchTextQuery.Create(query, nameMatchMode);
            var types     = EnumVal <SongType> .ParseMultiple(songTypes);

            var param = new SongQueryParams(textQuery, types, start, Math.Min(maxResults, absoluteMax), getTotalCount, sort, false, preferAccurateMatches, null)
            {
                ArtistParticipation =
                {
                    ArtistIds       = artistId,
                    Participation   = artistParticipationStatus,
                    ChildVoicebanks = childVoicebanks,
                    IncludeMembers  = includeMembers
                },
                TagIds             = tagId,
                Tags               = tagName,
                ChildTags          = childTags,
                OnlyWithPVs        = onlyWithPvs,
                TimeFilter         = since.HasValue ? TimeSpan.FromHours(since.Value) : TimeSpan.Zero,
                MinScore           = minScore ?? 0,
                PVServices         = pvServices,
                UserCollectionId   = userCollectionId ?? 0,
                ReleaseEventId     = releaseEventId ?? 0,
                AdvancedFilters    = advancedFilters,
                LanguagePreference = lang
            };

            param.Common.EntryStatus = status;

            var artists = service.Find(s => new SongForApiContract(s, null, lang, fields), param);

            return(artists);
        }
コード例 #16
0
ファイル: Translate.cs プロジェクト: xcodeuuuuu66699/vocadb
 public static string EntrySubTypeName(EntryTypeAndSubType fullEntryType)
 {
     return(fullEntryType.EntryType switch
     {
         EntryType.Album => DiscTypeName(EnumVal <DiscType> .Parse(fullEntryType.SubType)),
         EntryType.Artist => ArtistTypeName(EnumVal <ArtistType> .Parse(fullEntryType.SubType)),
         EntryType.ReleaseEvent => ReleaseEventCategoryNames[EnumVal <EventCategory> .Parse(fullEntryType.SubType)],
         EntryType.Song => SongTypeNames[EnumVal <SongType> .Parse(fullEntryType.SubType)],
         _ => string.Empty,
     });
コード例 #17
0
        public static IQueryable <Song> WhereMatchFilter(this IQueryable <Song> query, AdvancedSearchFilter filter)
        {
            if (filter == null)
            {
                return(query);
            }

            switch (filter.FilterType)
            {
            case AdvancedFilterType.ArtistType: {
                var param = EnumVal <ArtistType> .Parse(filter.Param);

                return(WhereArtistHasType(query, param));
            }

            case AdvancedFilterType.HasAlbum:
                return(filter.Negate ? query.Where(s => !s.AllAlbums.Any()) : query.Where(s => s.AllAlbums.Any()));

            case AdvancedFilterType.HasMultipleVoicebanks: {
                return(query.Where(s => s.AllArtists.Count(a => !a.IsSupport && ArtistHelper.VoiceSynthesizerTypes.Contains(a.Artist.ArtistType)) > 1));
            }

            case AdvancedFilterType.HasPublishDate: {
                return(query.WhereHasPublishDate(!filter.Negate));
            }

            case AdvancedFilterType.Lyrics: {
                var any           = filter.Param == AdvancedSearchFilter.Any;
                var languageCodes = !any ? (filter.Param ?? string.Empty).Split(',') : null;
                return(WhereHasLyrics(query, languageCodes, any));
            }

            case AdvancedFilterType.LyricsContent: {
                return(query.WhereHasLyricsContent(filter.Param));
            }

            case AdvancedFilterType.HasOriginalMedia: {
                return(query.Where(s => filter.Negate != s.PVs.PVs.Any(pv => !pv.Disabled && pv.PVType == PVType.Original)));
            }

            case AdvancedFilterType.HasMedia: {
                return(query.Where(s => filter.Negate != s.PVs.PVs.Any()));
            }

            case AdvancedFilterType.WebLink: {
                return(query.WhereHasLink <Song, SongWebLink>(filter.Param));
            }
            }

            return(query);
        }
コード例 #18
0
        public static IEnumerable <PurchaseStatus> ToIndividualSelections(this PurchaseStatuses selections)
        {
            if (selections == PurchaseStatuses.Nothing)
            {
                return new[] { PurchaseStatus.Nothing }
            }
            ;

            return(EnumVal <PurchaseStatuses>
                   .GetIndividualValues(selections)
                   .Where(s => s != PurchaseStatuses.All && s != PurchaseStatuses.Nothing)
                   .Select(s => (PurchaseStatus)s));
        }
    }
コード例 #19
0
        public static EntryTypeAndTagCollection <TSubType> Create(
            EntryType entryType, IReadOnlyCollection <TSubType> subTypes,
            IReadOnlyCollection <int> tagIds, IDatabaseContext ctx, bool allowAllTags = false)
        {
            TSubType[] allTypes;
            int[]      songTypeTagIds;
            int[]      allTagIds;

            if (tagIds.Any())
            {
                var songTypesAndTagsFromTags = ctx.Query <EntryTypeToTagMapping>()
                                               .WhereEntryTypeIs(entryType)
                                               .WhereHasSubType()
                                               .Where(etm => tagIds.Contains(etm.Tag.Id))
                                               .Select(etm => new { TagId = etm.Tag.Id, etm.SubType })
                                               .ToArray();

                songTypeTagIds = songTypesAndTagsFromTags.Select(etm => etm.TagId).ToArray();
                var songTypesFromTags = songTypesAndTagsFromTags.Select(etm => EnumVal <TSubType> .Parse(etm.SubType));

                allTypes = subTypes.Union(songTypesFromTags).ToArray();
            }
            else
            {
                allTypes       = subTypes.ToArray();
                songTypeTagIds = new int[0];
            }

            if (subTypes.Any())
            {
                var tagsFromSongTypes = ctx.Query <EntryTypeToTagMapping>()
                                        .WhereEntryTypeIs(entryType, subTypes)
                                        .Select(etm => etm.Tag.Id)
                                        .ToArray();
                allTagIds = songTypeTagIds.Union(tagsFromSongTypes).ToArray();
            }
            else
            {
                allTagIds = songTypeTagIds;
            }

            if (allowAllTags)
            {
                allTagIds = allTagIds.Union(tagIds).ToArray();
            }

            return(new EntryTypeAndTagCollection <TSubType>(allTypes, allTagIds));
        }
コード例 #20
0
ファイル: SongSearch.cs プロジェクト: sethura/vocadb
        private ParsedSongQuery ParseTextQuery(string query)
        {
            if (string.IsNullOrWhiteSpace(query))
            {
                return(new ParsedSongQuery());
            }

            var term = GetTerm(query.Trim(), "tag", "artist-tag", "artist-type");

            if (term == null)
            {
                var nicoId = VideoService.NicoNicoDouga.GetIdByUrl(query);

                if (!string.IsNullOrEmpty(nicoId))
                {
                    return new ParsedSongQuery {
                               NicoId = nicoId
                    }
                }
                ;
            }
            else
            {
                switch (term.PropertyName)
                {
                case "tag":
                    return(new ParsedSongQuery {
                        TagName = term.Value
                    });

                case "artist-tag":
                    return(new ParsedSongQuery {
                        ArtistTag = term.Value
                    });

                case "artist-type":
                    return(new ParsedSongQuery {
                        ArtistType = EnumVal <ArtistType> .ParseSafe(term.Value, ArtistType.Unknown)
                    });
                }
            }

            return(new ParsedSongQuery {
                Name = query.Trim()
            });
        }
コード例 #21
0
        private bool TryGetLanguagePreferenceFromCookie(ref ContentLanguagePreference languagePreference)
        {
            if (HttpContext.Current == null)
            {
                return(false);
            }

            var cookie = HttpContext.Current.Request.Cookies.Get("languagePreference");

            if (cookie == null || string.IsNullOrEmpty(cookie.Value))
            {
                return(false);
            }

            languagePreference = EnumVal <ContentLanguagePreference> .Parse(cookie.Value);

            return(true);
        }
コード例 #22
0
        public PartialFindResult <SongForApiContract> GetList(
            string query     = "",
            string songTypes = null,
            string tag       = null,
            int?artistId     = null,
            ArtistAlbumParticipationStatus artistParticipationStatus = ArtistAlbumParticipationStatus.Everything,
            bool childVoicebanks            = false,
            bool onlyWithPvs                = false,
            [FromUri] PVServices?pvServices = null,
            int?since    = null,
            int?minScore = null,
            [FromUri] ContentLanguageSelections?lyrics = null,
            int?userCollectionId           = null,
            EntryStatus?status             = null,
            int start                      = 0, int maxResults = defaultMax, bool getTotalCount = false,
            SongSortRule sort              = SongSortRule.Name,
            bool preferAccurateMatches     = false,
            NameMatchMode nameMatchMode    = NameMatchMode.Exact,
            SongOptionalFields fields      = SongOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            var textQuery = SearchTextQuery.Create(query, nameMatchMode);
            var types     = EnumVal <SongType> .ParseMultiple(songTypes);

            var param = new SongQueryParams(textQuery, types, start, Math.Min(maxResults, absoluteMax), false, getTotalCount, sort, false, preferAccurateMatches, null)
            {
                Tag         = tag,
                OnlyWithPVs = onlyWithPvs,
                ArtistId    = artistId ?? 0,
                ArtistParticipationStatus = artistParticipationStatus,
                ChildVoicebanks           = childVoicebanks,
                TimeFilter      = since.HasValue ? TimeSpan.FromHours(since.Value) : TimeSpan.Zero,
                LyricsLanguages = lyrics != null?lyrics.Value.ToIndividualSelections().ToArray() : null,
                                      MinScore         = minScore ?? 0,
                                      PVServices       = pvServices,
                                      UserCollectionId = userCollectionId ?? 0
            };

            param.Common.EntryStatus = status;

            var artists = service.Find(s => new SongForApiContract(s, null, lang, fields), param);

            return(artists);
        }
コード例 #23
0
 public ActionResult Delete(int id)
 {
     try
     {
         var userDelet = userService.Find(id);
         if (userDelet != null && !userDelet.UserName.Equals("admin"))
         {
             //只是更改状态并不实际删除
             userDelet.Status = EnumVal.GetStatusVal(Status.N);
             userService.Update(userDelet);
             return(RedirectToAction("Index", "UserManage"));
         }
     }
     catch (Exception ex)
     {
         Log.Error("UserManage-Delete-", ex);
     }
     return(RedirectToAction("Index", "UserManage"));
 }
コード例 #24
0
        public static string EntryIndex(this UrlHelper urlHelper, EntryTypeAndSubType fullEntryType)
        {
            SearchRouteParams searchRouteParams = null;

            switch (fullEntryType.EntryType)
            {
            case EntryType.Artist:
                searchRouteParams = new SearchRouteParams(EntryType.Artist)
                {
                    artistType = EnumVal <ArtistType> .ParseSafe(fullEntryType.SubType)
                };
                break;

            case EntryType.Album:
                searchRouteParams = new SearchRouteParams(EntryType.Album)
                {
                    discType = EnumVal <DiscType> .ParseSafe(fullEntryType.SubType)
                };
                break;

            case EntryType.Song:
                searchRouteParams = new SearchRouteParams(EntryType.Song)
                {
                    songType = EnumVal <SongType> .ParseSafe(fullEntryType.SubType)
                };
                break;

            case EntryType.ReleaseEvent:
                searchRouteParams = new SearchRouteParams(EntryType.ReleaseEvent);
                break;

            case EntryType.Tag:
                searchRouteParams = new SearchRouteParams(EntryType.Tag);
                break;
            }

            if (searchRouteParams != null)
            {
                return(urlHelper.Action("Index", "Search", searchRouteParams));
            }

            return("");
        }
コード例 #25
0
        public ActionResult Create([Bind(Include = "ID,Status,Reark,FirstCode,SecondCode,ThirdCode,FourthCode,FifthCode,InfoValue")] Dictionary dictionary)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    dictionary.Status = EnumVal.GetStatusVal(Status.Y);
                    db.Dictionarys.Add(dictionary);
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }

                return(View(dictionary));
            }
            catch (Exception ex) {
                Log.Error("DictionarydController-Create-Post", ex);
                return(View());
            }
        }
コード例 #26
0
        public PartialFindResult <ArtistForApiContract> GetList(
            string query             = "",
            string artistTypes       = null,
            bool allowBaseVoicebanks = true,
            [FromQuery(Name = "tagName[]")] string[] tagName = null,
            [FromQuery(Name = "tagId[]")] int[] tagId        = null,
            bool childTags       = false,
            int?followedByUserId = null,
            EntryStatus?status   = null,
            [FromQuery(Name = "advancedFilters")] AdvancedSearchFilterParams[] advancedFilters = null,
            int start                      = 0, int maxResults = DefaultMax, bool getTotalCount = false,
            ArtistSortRule sort            = ArtistSortRule.Name,
            bool preferAccurateMatches     = false,
            NameMatchMode nameMatchMode    = NameMatchMode.Exact,
            ArtistOptionalFields fields    = ArtistOptionalFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            var textQuery = ArtistSearchTextQuery.Create(query, nameMatchMode);
            var types     = EnumVal <ArtistType> .ParseMultiple(artistTypes);

            var param = new ArtistQueryParams(textQuery, types, start, Math.Min(maxResults, AbsoluteMax), getTotalCount, sort, preferAccurateMatches)
            {
                Tags                = tagName,
                TagIds              = tagId,
                ChildTags           = childTags,
                UserFollowerId      = followedByUserId ?? 0,
                AllowBaseVoicebanks = allowBaseVoicebanks,
                AdvancedFilters     = advancedFilters?.Select(advancedFilter => advancedFilter.ToAdvancedSearchFilter()).ToArray(),
            };

            param.Common.EntryStatus = status;

            var artists = _service.FindArtists(s => new ArtistForApiContract(s, lang, _thumbPersister, fields), param);

            return(artists);
        }
コード例 #27
0
ファイル: SongSearch.cs プロジェクト: lordofire/vocadb
        private ParsedSongQuery ParseTextQuery(string query)
        {
            if (string.IsNullOrWhiteSpace(query))
            {
                return(new ParsedSongQuery());
            }

            var trimmed = query.Trim();

            var term = GetTerm(trimmed, "id", "tag", "artist-tag", "artist-type");

            if (term == null)
            {
                // Optimization: check prefix, in most cases the user won't be searching by URL
                if (trimmed.StartsWith("/s/", StringComparison.InvariantCultureIgnoreCase) ||
                    trimmed.StartsWith("http", StringComparison.InvariantCultureIgnoreCase))
                {
                    var nicoId = VideoService.NicoNicoDouga.GetIdByUrl(query);

                    if (!string.IsNullOrEmpty(nicoId))
                    {
                        return new ParsedSongQuery {
                                   NicoId = nicoId
                        }
                    }
                    ;

                    var entryId = entryUrlParser.Parse(trimmed, allowRelative: true);

                    if (entryId.EntryType == EntryType.Song)
                    {
                        return new ParsedSongQuery {
                                   Id = entryId.Id
                        }
                    }
                    ;
                }
            }
            else
            {
                switch (term.PropertyName)
                {
                case "tag":
                    return(new ParsedSongQuery {
                        TagName = term.Value
                    });

                case "artist-tag":
                    return(new ParsedSongQuery {
                        ArtistTag = term.Value
                    });

                case "artist-type":
                    return(new ParsedSongQuery {
                        ArtistType = EnumVal <ArtistType> .ParseSafe(term.Value, ArtistType.Unknown)
                    });

                case "id":
                    return(new ParsedSongQuery {
                        Id = PrimitiveParseHelper.ParseIntOrDefault(term.Value, 0)
                    });
                }
            }

            return(new ParsedSongQuery {
                Name = trimmed
            });
        }
コード例 #28
0
 public EnumFieldAccessor(EnumVal <T> val, T field)
     : this()
 {
     _val   = val;
     _field = field;
 }
コード例 #29
0
 protected EntryDiff(bool isSnapshot = false)
 {
     IsSnapshot    = isSnapshot;
     ChangedFields = new EnumVal <T>();
 }
コード例 #30
0
 protected EntryDiff(T changedFields)
 {
     ChangedFields = new EnumVal <T>(changedFields);
     IsSnapshot    = false;
 }