public static bool IsVeteran(UserDetailsContract details) { var timeOnSite = DateTime.Now - details.CreateDate; return (details.Active && details.GroupId >= UserGroupId.Regular && timeOnSite.TotalDays > 365 && details.EditCount > 1000); }
public static int GetPower(UserDetailsContract detailsContract, int ownedAlbumCount, int albumRatingCount, int songListCount) { ParamIs.NotNull(() => detailsContract); var power = detailsContract.EditCount / 4 + detailsContract.SubmitCount / 2 + detailsContract.TagVotes * 2 + detailsContract.AlbumCollectionCount * 2 + ownedAlbumCount * 5 + albumRatingCount * 3 + detailsContract.FavoriteSongCount * 2 + detailsContract.CommentCount * 4 + songListCount * 5 + (detailsContract.EmailVerified ? 100 : 0); return(power); }
private UserDetailsContract GetUserDetails(ISession session, User user) { var details = new UserDetailsContract(user, PermissionContext); details.AlbumCollectionCount = session.Query <AlbumForUser>().Count(c => c.User == user && !c.Album.Deleted); details.ArtistCount = session.Query <ArtistForUser>().Count(c => c.User == user && !c.Artist.Deleted); details.FavoriteSongCount = session.Query <FavoriteSongForUser>().Count(c => c.User == user && !c.Song.Deleted); details.CommentCount = session.Query <AlbumComment>().Count(c => c.Author == user && !c.Album.Deleted) + session.Query <ArtistComment>().Count(c => c.Author == user && !c.Artist.Deleted) + session.Query <SongComment>().Count(c => c.Author == user && !c.Song.Deleted); details.EditCount = session.Query <ArchivedAlbumVersion>().Count(c => c.Author == user && !c.Album.Deleted) + session.Query <ArchivedArtistVersion>().Count(c => c.Author == user && !c.Artist.Deleted) + session.Query <ArchivedSongVersion>().Count(c => c.Author == user && !c.Song.Deleted); details.LatestComments = session.Query <UserComment>() .Where(c => c.User == user).OrderByDescending(c => c.Created).Take(3) .ToArray() .Select(c => new CommentContract(c)).ToArray(); details.SubmitCount = session.Query <ArchivedAlbumVersion>().Count(c => c.Author == user && c.Version == 0 && !c.Album.Deleted) + session.Query <ArchivedArtistVersion>().Count(c => c.Author == user && c.Version == 0 && !c.Artist.Deleted) + session.Query <ArchivedSongVersion>().Count(c => c.Author == user && c.Version == 0 && !c.Song.Deleted); details.TagVotes = session.Query <TagVote>().Count(t => t.User == user); details.Power = UserHelper.GetPower(details, user); details.Level = UserHelper.GetLevel(details.Power); return(details); }
public static int GetPower(UserDetailsContract detailsContract, User user) { ParamIs.NotNull(() => detailsContract); ParamIs.NotNull(() => user); var ownedAlbumCount = user.Albums.Count(a => a.PurchaseStatus == PurchaseStatus.Owned); var albumRatingCount = user.Albums.Count(a => a.Rating != 0); var songListCount = detailsContract.SongLists.Count(); var power = detailsContract.EditCount / 4 + detailsContract.SubmitCount / 2 + detailsContract.TagVotes * 2 + detailsContract.AlbumCollectionCount * 2 + ownedAlbumCount * 5 + albumRatingCount * 3 + detailsContract.FavoriteSongCount * 2 + detailsContract.CommentCount * 4 + songListCount * 5; return(power); }
public UserDetailsContract GetUserDetails(int userID) { var userDetails = new UserDetailsContract(); return(userDetails); }
private UserDetailsContract GetUserDetails(IRepositoryContext <User> session, User user) { var details = new UserDetailsContract(user, PermissionContext); var stats = session.Query().Where(u => u.Id == user.Id).Select(u => new UserStats { AlbumCollectionCount = u.AllAlbums.Count(a => !a.Album.Deleted), ArtistCount = u.AllArtists.Count(a => !a.Artist.Deleted), FavoriteSongCount = u.FavoriteSongs.Count(c => !c.Song.Deleted), OwnedAlbumCount = u.AllAlbums.Count(a => !a.Album.Deleted && a.PurchaseStatus == PurchaseStatus.Owned), RatedAlbumCount = u.AllAlbums.Count(a => !a.Album.Deleted && a.Rating != 0), }).First(); details.AlbumCollectionCount = stats.AlbumCollectionCount; details.ArtistCount = stats.ArtistCount; details.FavoriteSongCount = stats.FavoriteSongCount; details.FavoriteAlbums = session.Query <AlbumForUser>() .Where(c => c.User.Id == user.Id && !c.Album.Deleted && c.Rating > 3) .OrderByDescending(c => c.Rating) .ThenByDescending(c => c.Id) .Select(a => a.Album) .Take(7) .ToArray() .Select(c => new AlbumContract(c, LanguagePreference)) .ToArray(); details.FavoriteTags = session.Query <SongTagUsage>() .Where(c => c.Song.UserFavorites.Any(f => f.User.Id == user.Id) && c.Tag.CategoryName != "Lyrics" && c.Tag.CategoryName != "Distribution") .GroupBy(t => t.Tag.Name) .OrderByDescending(t => t.Count()) .Select(t => t.Key) .Take(8) .ToArray(); details.FollowedArtists = session.Query <ArtistForUser>() .Where(c => c.User.Id == user.Id && !c.Artist.Deleted) .OrderByDescending(a => a.Id) .Select(c => c.Artist) .Take(6) .ToArray() .Select(c => new ArtistContract(c, LanguagePreference)) .ToArray(); details.LatestComments = session.Query <UserComment>() .Where(c => c.User == user).OrderByDescending(c => c.Created).Take(3) .ToArray() .Select(c => new CommentContract(c)).ToArray(); details.LatestRatedSongs = session.Query <FavoriteSongForUser>() .Where(c => c.User.Id == user.Id && !c.Song.Deleted) .OrderByDescending(c => c.Id) .Select(c => c.Song) .Take(6) .ToArray() .Select(c => new SongContract(c, LanguagePreference)) .ToArray(); var cachedStats = GetCachedUserStats(session, user); details.CommentCount = cachedStats.CommentCount; details.EditCount = cachedStats.EditCount; details.SubmitCount = cachedStats.SubmitCount; details.TagVotes = cachedStats.TagVotes; details.Power = UserHelper.GetPower(details, stats.OwnedAlbumCount, stats.RatedAlbumCount); details.Level = UserHelper.GetLevel(details.Power); if (user.Active && user.GroupId >= UserGroupId.Regular && user.Equals(PermissionContext.LoggedUser) && !user.AllOwnedArtists.Any()) { var producerTypes = new[] { ArtistType.Producer, ArtistType.Animator, ArtistType.Illustrator }; details.PossibleProducerAccount = session.Query <ArtistName>().Any(a => !a.Artist.Deleted && producerTypes.Contains(a.Artist.ArtistType) && a.Value == user.Name && !a.Artist.OwnerUsers.Any()); } return(details); }