public void UpdateSongRating(int userId, int songId, SongVoteRating rating) { PermissionContext.VerifyPermission(PermissionToken.EditProfile); HandleTransaction(session => { var existing = session.Query <FavoriteSongForUser>().FirstOrDefault(f => f.User.Id == userId && f.Song.Id == songId); var user = session.Load <User>(userId); var song = session.Load <Song>(songId); var agent = new AgentLoginData(user); if (existing != null) { if (rating != SongVoteRating.Nothing) { existing.SetRating(rating); session.Update(existing); } else { existing.Delete(); session.Delete(existing); } } else if (rating != SongVoteRating.Nothing) { var link = user.AddSongToFavorites(song, rating); session.Save(link); } session.Update(song); AuditLog(string.Format("rating {0} as '{1}'.", EntryLinkFactory.CreateEntryLink(song), rating), session, agent); }, string.Format("Unable to rate song with ID '{0}'.", songId)); }
public FavoriteSongForUser(User user, Song song, SongVoteRating rating) : this() { User = user; Song = song; Rating = rating; }
public FavoriteSongForUser(User user, Song song, SongVoteRating rating) { User = user; Song = song; Rating = rating; }
public SongWithPVAndVoteContract(Song song, SongVoteRating vote, ContentLanguagePreference languagePreference) : base(song, languagePreference) { PVs = song.PVs.Select(p => new PVContract(p)).ToArray(); Vote = vote; }
public FavoriteSongs(UserContract user, SongVoteRating rating, SongSortRule sort, bool groupByRating) : this() { GroupByRating = groupByRating; Rating = rating; Sort = sort; User = user; }
public FavoriteSongs(UserContract user, SongVoteRating rating, RatedSongForUserSortRule?sort, bool?groupByRating) : this() { GroupByRating = groupByRating; Rating = rating; Sort = sort; User = user; }
public static IQueryable<FavoriteSongForUser> WhereHasRating(this IQueryable<FavoriteSongForUser> query, SongVoteRating rating) { if (rating == SongVoteRating.Nothing) return query; return query.Where(q => q.Rating == rating); }
public FavoriteSongs(UserContract user, SongVoteRating rating, SongSortRule? sort, bool? groupByRating) : this() { GroupByRating = groupByRating; Rating = rating; Sort = sort; User = user; }
public ActionResult PostRating(int songId, SongVoteRating rating, string callback) { if (!LoginManager.IsLoggedIn) { return HttpStatusCodeResult(HttpStatusCode.Forbidden, "Error: Must be logged in."); } Service.UpdateSongRating(LoginManager.LoggedUserId, songId, rating); return Object("OK", DataFormat.Auto, callback); }
public SongWithPVAndVoteContract(Song song, SongVoteRating vote, ContentLanguagePreference languagePreference, bool includePVs = true) : base(song, languagePreference) { if (includePVs) { PVs = song.PVs.Select(p => new PVContract(p)).ToArray(); } Vote = vote; }
public ActionResult PostRating(int songId, SongVoteRating rating, string callback) { if (!LoginManager.IsLoggedIn) { return(HttpStatusCodeResult(HttpStatusCode.Forbidden, "Error: Must be logged in.")); } Service.UpdateSongRating(LoginManager.LoggedUserId, songId, rating); return(Object("OK", DataFormat.Auto, callback)); }
public FrontPageContract(IEnumerable <ActivityEntry> activityEntries, AlbumContract[] newAlbums, IEnumerable <EntryWithCommentsContract> recentComments, AlbumContract[] topAlbums, Song[] newSongs, SongVoteRating firstSongRating, ContentLanguagePreference languagePreference) { ActivityEntries = activityEntries.Select(e => new ActivityEntryContract(e, languagePreference)).ToArray(); NewAlbums = newAlbums; NewSongs = newSongs.Select(s => new SongWithPVAndVoteContract(s, SongVoteRating.Nothing, languagePreference)).ToArray(); RecentComments = recentComments.ToArray(); TopAlbums = topAlbums; FirstSong = (newSongs.Any() ? new SongWithPVAndVoteContract(newSongs.First(), firstSongRating, languagePreference) : null); }
public static int GetRatingScore(SongVoteRating rating) { switch (rating) { case SongVoteRating.Favorite: return 3; case SongVoteRating.Like: return 2; case SongVoteRating.Dislike: return -1; default: return 0; } }
public FrontPageContract(IEnumerable<ActivityEntry> activityEntries, IEnumerable<NewsEntry> newsEntries, AlbumContract[] newAlbums, IEnumerable<UnifiedCommentContract> recentComments, IEnumerable<Album> topAlbums, Song[] newSongs, SongVoteRating firstSongRating, ContentLanguagePreference languagePreference) { ActivityEntries = activityEntries.Select(e => new ActivityEntryContract(e, languagePreference)).ToArray(); NewAlbums = newAlbums; NewSongs = newSongs.Select(s => new SongWithPVAndVoteContract(s, SongVoteRating.Nothing, languagePreference)).ToArray(); NewsEntries = newsEntries.Select(e => new NewsEntryContract(e)).ToArray(); RecentComments = recentComments.ToArray(); TopAlbums = topAlbums.Select(a => new AlbumWithAdditionalNamesContract(a, languagePreference)).ToArray(); FirstSong = (newSongs.Any() ? new SongWithPVAndVoteContract(newSongs.First(), firstSongRating, languagePreference) : null); }
public static int GetRatingScore(SongVoteRating rating) { switch (rating) { case SongVoteRating.Favorite: return(3); case SongVoteRating.Like: return(2); case SongVoteRating.Dislike: return(-1); default: return(0); } }
public virtual FavoriteSongForUser AddSongToFavorites(Song song, SongVoteRating rating) { ParamIs.NotNull(() => song); var link = new FavoriteSongForUser(this, song, rating); FavoriteSongs.Add(link); song.UserFavorites.Add(link); if (rating == SongVoteRating.Favorite) { song.FavoritedTimes++; } song.RatingScore += FavoriteSongForUser.GetRatingScore(rating); return(link); }
public FrontPageContract(IEnumerable <ActivityEntry> activityEntries, AlbumForApiContract[] newAlbums, ReleaseEventForApiContract[] newEvents, IEnumerable <EntryWithCommentsContract> recentComments, AlbumForApiContract[] topAlbums, Song[] newSongs, SongVoteRating firstSongRating, ContentLanguagePreference languagePreference, IUserIconFactory userIconFactory, IUserPermissionContext permissionContext, EntryForApiContractFactory entryForApiContractFactory) { ActivityEntries = activityEntries.Select(e => new ActivityEntryForApiContract(e, entryForApiContractFactory.Create(e.EntryBase, EntryOptionalFields.AdditionalNames | EntryOptionalFields.MainPicture, languagePreference), userIconFactory, permissionContext, ActivityEntryOptionalFields.None)).ToArray(); NewAlbums = newAlbums; NewSongs = newSongs.Select(s => new SongWithPVAndVoteContract(s, SongVoteRating.Nothing, languagePreference)).ToArray(); RecentComments = recentComments.ToArray(); TopAlbums = topAlbums; NewEvents = newEvents; FirstSong = (newSongs.Any() ? new SongWithPVAndVoteContract(newSongs.First(), firstSongRating, languagePreference) : null); }
public virtual void SetRating(SongVoteRating newRating) { if (Rating == newRating) { return; } if (newRating == SongVoteRating.Favorite) { song.FavoritedTimes++; } if (Rating == SongVoteRating.Favorite) { song.FavoritedTimes--; } song.RatingScore -= GetRatingScore(Rating); song.RatingScore += GetRatingScore(newRating); Rating = newRating; }
public PartialFindResult<RatedSongForUserForApiContract> GetRatedSongs( int userId, string query = "", string tag = null, int? artistId = null, bool childVoicebanks = false, SongVoteRating? rating = null, int? songListId = null, bool groupByRating = true, 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); query = FindHelpers.GetMatchModeAndQueryForSearch(query, ref nameMatchMode); var queryParams = new RatedSongQueryParams(userId, new PagingProperties(start, maxResults, getTotalCount)) { Query = query, NameMatchMode = nameMatchMode, SortRule = sort ?? SongSortRule.Name, ArtistId = artistId ?? 0, ChildVoicebanks = childVoicebanks, FilterByRating = rating ?? SongVoteRating.Nothing, GroupByRating = groupByRating, SonglistId = songListId ?? 0, Tag = tag }; var songs = queries.GetRatedSongs(queryParams, ratedSong => new RatedSongForUserForApiContract(ratedSong, lang, fields)); return songs; }
public virtual void SetRating(SongVoteRating newRating) { if (Rating == newRating) return; if (newRating == SongVoteRating.Favorite) song.FavoritedTimes++; if (Rating == SongVoteRating.Favorite) song.FavoritedTimes--; song.RatingScore -= GetRatingScore(Rating); song.RatingScore += GetRatingScore(newRating); Rating = newRating; }
public string PostSongRating(int songId, SongVoteRating rating) { service.UpdateSongRating(permissionContext.LoggedUserId, songId, rating); return("OK"); }
public ActionResult FavoriteSongs(int id = invalidId, int? page = null, SongVoteRating? rating = null, SongSortRule? sort = null, bool? groupByRating = null) { if (id == invalidId) return NoId(); return View(new FavoriteSongs(Service.GetUser(id), rating ?? SongVoteRating.Nothing, sort, groupByRating)); }
public static int GetRatingScore(SongVoteRating rating) => rating switch {
public void AddSongToFavorites(int songId, SongVoteRating rating = SongVoteRating.Favorite) { Service.UpdateSongRating(LoggedUserId, songId, rating); }
public void Value(int expected, SongVoteRating actual) { ((int)actual).Should().Be(expected); }
public string PostSongRating(int songId, SongVoteRating rating) { service.UpdateSongRating(permissionContext.LoggedUserId, songId, rating); return "OK"; }
public ActionResult FavoriteSongsPaged(int id, int? page, SongVoteRating? rating = null, SongSortRule sort = SongSortRule.Name, bool groupByRating = true) { const int songsPerPage = 50; var pageIndex = (page - 1) ?? 0; var r = rating ?? SongVoteRating.Nothing; var queryParams = new RatedSongQueryParams(id, PagingProperties.CreateFromPage(pageIndex, songsPerPage, true)) { FilterByRating = r, SortRule = sort, GroupByRating = groupByRating }; var result = Service.GetFavoriteSongs(queryParams); var data = new PagingData<FavoriteSongForUserContract>(result.Items.ToPagedList(pageIndex, songsPerPage, result.TotalCount), id, "FavoriteSongs", "ui-tabs-3"); data.RouteValues = new RouteValueDictionary(new { action = "FavoriteSongs", id, rating, sort, groupByRating }); return PartialView("FavoriteSongsPaged", data); }
public ActionResult FavoriteSongs(int id, int? page, SongVoteRating? rating = null, SongSortRule sort = SongSortRule.Name, bool groupByRating = true) { if (Request.IsAjaxRequest()) { return FavoriteSongsPaged(id, page, rating, sort); } else { return View(new FavoriteSongs(Service.GetUser(id), rating ?? SongVoteRating.Nothing, sort, groupByRating)); } }
public RatingIconViewModel(SongVoteRating rating) { Rating = rating; }
public static IQueryable <FavoriteSongForUser> WhereHasRating(this IQueryable <FavoriteSongForUser> query, SongVoteRating rating) { if (rating == SongVoteRating.Nothing) { return(query); } return(query.Where(q => q.Rating == rating)); }