public ArtistQueries(IArtistRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IEntryThumbPersister imagePersister, IEntryPictureFilePersister pictureFilePersister, ObjectCache cache, IUserIconFactory userIconFactory, IEnumTranslations enumTranslations, IAggregatedEntryImageUrlFactory imageUrlFactory) : base(repository, permissionContext) { _entryLinkFactory = entryLinkFactory; _imagePersister = imagePersister; _pictureFilePersister = pictureFilePersister; _cache = cache; _userIconFactory = userIconFactory; _enumTranslations = enumTranslations; _imageUrlFactory = imageUrlFactory; }
public EventQueries(IEventRepository eventRepository, IEntryLinkFactory entryLinkFactory, IUserPermissionContext permissionContext, IEntryThumbPersister imagePersister, IUserIconFactory userIconFactory, IEnumTranslations enumTranslations, IUserMessageMailer mailer, IFollowedArtistNotifier followedArtistNotifier, IAggregatedEntryImageUrlFactory imageUrlFactory) : base(eventRepository, permissionContext) { _entryLinkFactory = entryLinkFactory; _imagePersister = imagePersister; _userIconFactory = userIconFactory; _enumTranslations = enumTranslations; _mailer = mailer; _followedArtistNotifier = followedArtistNotifier; _imageUrlFactory = imageUrlFactory; }
public static EntryForApiContract Create(IEntryWithNames entry, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, EntryOptionalFields includedFields) { ParamIs.NotNull(() => entry); return(entry.EntryType switch { EntryType.Album => new EntryForApiContract((Album)entry, languagePreference, thumbPersister, includedFields), EntryType.Artist => new EntryForApiContract((Artist)entry, languagePreference, thumbPersister, includedFields), EntryType.DiscussionTopic => new EntryForApiContract((DiscussionTopic)entry, languagePreference), EntryType.ReleaseEvent => new EntryForApiContract((ReleaseEvent)entry, languagePreference, thumbPersister, includedFields), EntryType.Song => new EntryForApiContract((Song)entry, languagePreference, includedFields), EntryType.SongList => new EntryForApiContract((SongList)entry, thumbPersister, includedFields), EntryType.Tag => new EntryForApiContract((Tag)entry, languagePreference, thumbPersister, includedFields), _ => new EntryForApiContract(entry, languagePreference, includedFields), });
public AlbumQueries(IAlbumRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IEntryThumbPersister imagePersister, IEntryPictureFilePersister pictureFilePersister, IUserMessageMailer mailer, IUserIconFactory userIconFactory, IEnumTranslations enumTranslations, IPVParser pvParser, IFollowedArtistNotifier followedArtistNotifier, IAggregatedEntryImageUrlFactory entryThumbPersister, ObjectCache cache) : base(repository, permissionContext) { this.entryLinkFactory = entryLinkFactory; this.imagePersister = imagePersister; this.pictureFilePersister = pictureFilePersister; this.mailer = mailer; this.userIconFactory = userIconFactory; this.enumTranslations = enumTranslations; this.pvParser = pvParser; this.followedArtistNotifier = followedArtistNotifier; this.imageUrlFactory = entryThumbPersister; this.cache = cache; }
public ExtController( IEntryUrlParser entryUrlParser, IAggregatedEntryImageUrlFactory entryThumbPersister, AlbumService albumService, ArtistService artistService, EventQueries eventQueries, SongQueries songService, TagQueries tagQueries, PVHelper pvHelper) { _entryUrlParser = entryUrlParser; _entryThumbPersister = entryThumbPersister; _albumService = albumService; _artistService = artistService; _eventQueries = eventQueries; _songService = songService; _tagQueries = tagQueries; _pvHelper = pvHelper; }
public TagQueries( ITagRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IEntryThumbPersister imagePersister, IAggregatedEntryImageUrlFactory thumbStore, IUserIconFactory userIconFactory, IEnumTranslations enumTranslations, ObjectCache cache, IDiscordWebhookNotifier discordWebhookNotifier) : base(repository, permissionContext) { _entryLinkFactory = entryLinkFactory; _imagePersister = imagePersister; _thumbStore = thumbStore; _userIconFactory = userIconFactory; _enumTranslations = enumTranslations; _cache = cache; _discordWebhookNotifier = discordWebhookNotifier; }
public AlbumForUserForApiContract( AlbumForUser albumForUser, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, AlbumOptionalFields fields, bool shouldShowCollectionStatus, bool includeUser = false) { Album = albumForUser != null ? new AlbumForApiContract(albumForUser.Album, null, languagePreference, thumbPersister, fields, SongOptionalFields.None) : null; Rating = albumForUser?.Rating ?? 0; if (shouldShowCollectionStatus) { MediaType = albumForUser?.MediaType ?? null; PurchaseStatus = albumForUser?.PurchaseStatus ?? null; } if (includeUser) { User = albumForUser != null ? new UserForApiContract(albumForUser.User) : null; } }
public SongDetailsContract(Song song, ContentLanguagePreference languagePreference, SongListBaseContract[] pools, ISpecialTags specialTags, IEntryTypeTagRepository entryTypeTags, IUserPermissionContext userContext, IAggregatedEntryImageUrlFactory thumbPersister, Tag songTypeTag = null) { Song = new SongContract(song, languagePreference); AdditionalNames = song.Names.GetAdditionalNamesStringForLanguage(languagePreference); Albums = song.OnAlbums.OrderBy(a => a.OriginalReleaseDate.SortableDateTime).Select(a => new AlbumContract(a, languagePreference)).ToArray(); AlternateVersions = song.AlternateVersions.Select(s => new SongContract(s, languagePreference, getThumbUrl: false)).OrderBy(s => s.PublishDate).ToArray(); Artists = song.Artists.Select(a => new ArtistForSongContract(a, languagePreference)).OrderBy(a => a.Name).ToArray(); ArtistString = song.ArtistString[languagePreference]; CanEditPersonalDescription = EntryPermissionManager.CanEditPersonalDescription(userContext, song); CanRemoveTagUsages = EntryPermissionManager.CanRemoveTagUsages(userContext, song); CreateDate = song.CreateDate; Deleted = song.Deleted; LikeCount = song.UserFavorites.Count(f => f.Rating == SongVoteRating.Like); LyricsFromParents = song.GetLyricsFromParents(specialTags, entryTypeTags).Select(l => new LyricsForSongContract(l, false)).ToArray(); Notes = song.Notes; OriginalVersion = (song.OriginalVersion != null && !song.OriginalVersion.Deleted ? new SongForApiContract(song.OriginalVersion, null, languagePreference, SongOptionalFields.AdditionalNames | SongOptionalFields.ThumbUrl) : null); PVs = song.PVs.Select(p => new PVContract(p)).ToArray(); ReleaseEvent = song.ReleaseEvent != null && !song.ReleaseEvent.Deleted ? new ReleaseEventForApiContract(song.ReleaseEvent, languagePreference, ReleaseEventOptionalFields.None, thumbPersister) : null; PersonalDescriptionText = song.PersonalDescriptionText; var author = song.PersonalDescriptionAuthor; PersonalDescriptionAuthor = author != null ? new ArtistForApiContract(author, languagePreference, thumbPersister, ArtistOptionalFields.MainPicture) : null; SongTypeTag = songTypeTag != null ? new TagBaseContract(songTypeTag, languagePreference) : null; SubjectsFromParents = song.GetCharactersFromParents().Select(c => new ArtistForSongContract(c, languagePreference)).ToArray(); Tags = song.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).OrderByDescending(t => t.Count).ToArray(); TranslatedName = new TranslatedStringContract(song.TranslatedName); WebLinks = song.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); Pools = pools; MinMilliBpm = song.MinMilliBpm; MaxMilliBpm = song.MaxMilliBpm; }
public EntryQueries(IAlbumRepository repository, IUserPermissionContext permissionContext, IAggregatedEntryImageUrlFactory entryThumbPersister) : base(repository, permissionContext) { this.entryThumbPersister = entryThumbPersister; }
public AlbumForApiContract(TranslatedAlbumContract album, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, AlbumOptionalFields fields) { ParamIs.NotNull(() => album); ArtistString = album.TranslatedArtistString.GetBestMatch(languagePreference); CreateDate = album.CreateDate; Deleted = album.Deleted; DiscType = album.DiscType; Id = album.Id; Name = album.Names.SortNames[languagePreference]; RatingAverage = album.RatingAverage; RatingCount = album.RatingCount; ReleaseDate = album.ReleaseDate; Status = album.Status; Version = album.Version; if (fields.HasFlag(AlbumOptionalFields.AdditionalNames)) { AdditionalNames = album.Names.GetAdditionalNamesStringForLanguage(languagePreference); } if (fields.HasFlag(AlbumOptionalFields.MainPicture)) { MainPicture = new EntryThumbForApiContract(new EntryThumb(album, album.CoverPictureMime, ImagePurpose.Main), thumbPersister); } if (fields.HasFlag(AlbumOptionalFields.ReleaseEvent)) { ReleaseEvent = album.ReleaseEvent; } }
public SongListApiController(SongListQueries queries, IUserIconFactory userIconFactory, IAggregatedEntryImageUrlFactory entryImagePersister) { _queries = queries; _userIconFactory = userIconFactory; _entryImagePersister = entryImagePersister; }
public EntryForApiContract(Album album, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, EntryOptionalFields includedFields) : this(album, languagePreference, includedFields) { ActivityDate = album.OriginalReleaseDate.IsFullDate ? (DateTime?)album.OriginalReleaseDate.ToDateTime() : null; ArtistString = album.ArtistString[languagePreference]; CreateDate = album.CreateDate; DiscType = album.DiscType; Status = album.Status; if (includedFields.HasFlag(EntryOptionalFields.MainPicture) && album.CoverPictureData != null) { MainPicture = new EntryThumbForApiContract(new EntryThumb(album, album.CoverPictureMime, ImagePurpose.Main), thumbPersister); } if (includedFields.HasFlag(EntryOptionalFields.Names)) { Names = album.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (includedFields.HasFlag(EntryOptionalFields.PVs)) { PVs = album.PVs.Select(p => new PVContract(p)).ToArray(); } if (includedFields.HasFlag(EntryOptionalFields.Tags)) { Tags = album.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).ToArray(); } if (includedFields.HasFlag(EntryOptionalFields.WebLinks)) { WebLinks = album.WebLinks.Select(w => new ArchivedWebLinkContract(w)).ToArray(); } }
public UserApiController(UserQueries queries, UserMessageQueries messageQueries, UserService service, IUserPermissionContext permissionContext, IAggregatedEntryImageUrlFactory thumbPersister, IUserIconFactory userIconFactory) { this.queries = queries; this.messageQueries = messageQueries; this.service = service; this.permissionContext = permissionContext; this.thumbPersister = thumbPersister; this.userIconFactory = userIconFactory; }
public ReleaseEventSeriesForApiContract(ReleaseEventSeries series, ContentLanguagePreference languagePreference, ReleaseEventSeriesOptionalFields fields, IAggregatedEntryImageUrlFactory thumbPersister) { Category = series.Category; Id = series.Id; Name = series.TranslatedName[languagePreference]; Status = series.Status; UrlSlug = series.UrlSlug; Version = series.Version; if (fields.HasFlag(ReleaseEventSeriesOptionalFields.AdditionalNames)) { AdditionalNames = series.Names.GetAdditionalNamesStringForLanguage(languagePreference); } if (fields.HasFlag(ReleaseEventSeriesOptionalFields.Description)) { Description = series.Description; } if (fields.HasFlag(ReleaseEventSeriesOptionalFields.Events)) { Events = series.Events.Select(e => new ReleaseEventForApiContract(e, languagePreference, ReleaseEventOptionalFields.None, thumbPersister)).ToArray(); } if (thumbPersister != null && fields.HasFlag(ReleaseEventSeriesOptionalFields.MainPicture)) { MainPicture = EntryThumbForApiContract.Create(EntryThumb.Create(series), thumbPersister); } if (fields.HasFlag(ReleaseEventSeriesOptionalFields.Names)) { Names = series.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (fields.HasFlag(ReleaseEventSeriesOptionalFields.WebLinks)) { WebLinks = series.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray(); } }
public TagApiController(TagQueries queries, IAggregatedEntryImageUrlFactory thumbPersister) { _queries = queries; _thumbPersister = thumbPersister; }
public EntryForApiContract(ReleaseEvent releaseEvent, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, EntryOptionalFields includedFields) : this(releaseEvent, languagePreference, includedFields) { ActivityDate = releaseEvent.Date.DateTime; EventCategory = releaseEvent.InheritedCategory; ReleaseEventSeriesName = releaseEvent.Series?.TranslatedName[languagePreference]; Status = releaseEvent.Status; UrlSlug = releaseEvent.UrlSlug; if (includedFields.HasFlag(EntryOptionalFields.MainPicture)) { MainPicture = EntryThumbForApiContract.Create(EntryThumb.Create(releaseEvent) ?? EntryThumb.Create(releaseEvent.Series), thumbPersister); } if (includedFields.HasFlag(EntryOptionalFields.WebLinks)) { WebLinks = releaseEvent.WebLinks.Select(w => new ArchivedWebLinkContract(w)).ToArray(); } }
public ArtistForApiContract(Artist artist, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, ArtistOptionalFields includedFields) { ArtistType = artist.ArtistType; CreateDate = artist.CreateDate; DefaultName = artist.DefaultName; DefaultNameLanguage = artist.Names.SortNames.DefaultLanguage; Deleted = artist.Deleted; Id = artist.Id; Name = artist.Names.SortNames[languagePreference]; PictureMime = artist.PictureMime; ReleaseDate = artist.ReleaseDate.DateTime; Status = artist.Status; Version = artist.Version; if (includedFields.HasFlag(ArtistOptionalFields.AdditionalNames)) { AdditionalNames = artist.Names.GetAdditionalNamesStringForLanguage(languagePreference); } if (includedFields.HasFlag(ArtistOptionalFields.ArtistLinks)) { ArtistLinks = artist.Groups.Select(g => new ArtistForArtistForApiContract(g, LinkDirection.ManyToOne, languagePreference)).ToArray(); } if (includedFields.HasFlag(ArtistOptionalFields.ArtistLinksReverse)) { ArtistLinksReverse = artist.Members.Select(m => new ArtistForArtistForApiContract(m, LinkDirection.OneToMany, languagePreference)).ToArray(); } if (includedFields.HasFlag(ArtistOptionalFields.BaseVoicebank)) { BaseVoicebank = artist.BaseVoicebank != null ? new ArtistContract(artist.BaseVoicebank, languagePreference) : null; } if (includedFields.HasFlag(ArtistOptionalFields.Description)) { Description = artist.Description[languagePreference]; } if (includedFields.HasFlag(ArtistOptionalFields.Names)) { Names = artist.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (includedFields.HasFlag(ArtistOptionalFields.Tags)) { Tags = artist.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).ToArray(); } if (thumbPersister != null && includedFields.HasFlag(ArtistOptionalFields.MainPicture) && artist.Thumb != null) { MainPicture = new EntryThumbForApiContract(artist.Thumb, thumbPersister); } if (includedFields.HasFlag(ArtistOptionalFields.WebLinks)) { WebLinks = artist.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray(); } }
public ReleaseEventForApiContract(ReleaseEvent rel, ContentLanguagePreference languagePreference, ReleaseEventOptionalFields fields, IAggregatedEntryImageUrlFactory thumbPersister) { Category = rel.Category; Date = rel.Date; EndDate = rel.EndDate; Id = rel.Id; Name = rel.TranslatedName[languagePreference]; SeriesNumber = rel.SeriesNumber; SeriesSuffix = rel.SeriesSuffix; Status = rel.Status; UrlSlug = rel.UrlSlug; VenueName = rel.VenueName; Version = rel.Version; if (rel.HasSeries) { SeriesId = rel.Series.Id; } if (fields.HasFlag(ReleaseEventOptionalFields.AdditionalNames)) { AdditionalNames = rel.Names.GetAdditionalNamesStringForLanguage(languagePreference); } if (fields.HasFlag(ReleaseEventOptionalFields.Artists)) { Artists = rel.Artists.Select(a => new ArtistForEventContract(a, languagePreference)).ToArray(); } if (fields.HasFlag(ReleaseEventOptionalFields.Description)) { Description = rel.Description; } if (thumbPersister != null && fields.HasFlag(ReleaseEventOptionalFields.MainPicture)) { MainPicture = EntryThumbForApiContract.Create(EntryThumb.Create(rel) ?? EntryThumb.Create(rel.Series), thumbPersister); } if (fields.HasFlag(ReleaseEventOptionalFields.Names)) { Names = rel.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (fields.HasFlag(ReleaseEventOptionalFields.Series) && rel.HasSeries) { Series = new ReleaseEventSeriesContract(rel.Series, languagePreference); } if (fields.HasFlag(ReleaseEventOptionalFields.SongList) && rel.SongList != null) { SongList = new SongListBaseContract(rel.SongList); } if (fields.HasFlag(ReleaseEventOptionalFields.Tags)) { Tags = rel.Tags.ActiveUsages.Select(t => new TagUsageForApiContract(t, languagePreference)).ToArray(); } if (fields.HasFlag(ReleaseEventOptionalFields.Venue) && rel.Venue != null) { Venue = new VenueForApiContract(rel.Venue, languagePreference, VenueOptionalFields.None); } if (fields.HasFlag(ReleaseEventOptionalFields.WebLinks)) { WebLinks = rel.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray(); } }
public ArtistDetailsContract(Artist artist, ContentLanguagePreference languagePreference, IUserPermissionContext userContext, IAggregatedEntryImageUrlFactory imageStore, Tag artistTypeTag = null) : base(artist, languagePreference) { AllNames = string.Join(", ", artist.AllNames.Where(n => n != Name)); ArtistTypeTag = artistTypeTag != null ? new TagBaseContract(artistTypeTag, languagePreference) : null; BaseVoicebank = artist.BaseVoicebank != null ? new ArtistContract(artist.BaseVoicebank, languagePreference) : null; CanRemoveTagUsages = EntryPermissionManager.CanRemoveTagUsages(userContext, artist); CreateDate = artist.CreateDate; Description = artist.Description; Draft = artist.Status == EntryStatus.Draft; TranslatedName = new TranslatedStringContract(artist.TranslatedName); LatestAlbums = new AlbumForApiContract[] {}; LatestSongs = new SongForApiContract[] {}; OwnerUsers = artist.OwnerUsers.Select(u => new UserContract(u.User)).ToArray(); Pictures = artist.Pictures.Select(p => new EntryPictureFileContract(p, imageStore)).ToArray(); TopAlbums = new AlbumForApiContract[] {}; TopSongs = new SongForApiContract[] {}; WebLinks = artist.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); CharacterDesigner = artist.ArtistLinksOfType(ArtistLinkType.CharacterDesigner, LinkDirection.ManyToOne, allowInheritance: true) .Select(g => new ArtistContract(g, languagePreference)).FirstOrDefault(); CharacterDesignerOf = artist.ArtistLinksOfType(ArtistLinkType.CharacterDesigner, LinkDirection.OneToMany) .Select(g => new ArtistContract(g, languagePreference)).OrderBy(a => a.Name).ToArray(); if (artist.CanHaveChildVoicebanks) { var children = artist.ChildVoicebanks .Where(c => !c.Deleted) .Select(c => new ArtistContract(c, languagePreference)) .ToArray(); // Show child voicebanks with release date first ChildVoicebanks = children .Where(c => c.ReleaseDate.HasValue) .OrderBy(c => c.ReleaseDate) .Concat(children.Where(c => !c.ReleaseDate.HasValue)) .ToArray(); } else { ChildVoicebanks = new ArtistContract[0]; } Groups = artist.ArtistLinksOfType(ArtistLinkType.Group, LinkDirection.ManyToOne) .Select(g => new ArtistContract(g, languagePreference)).OrderBy(g => g.Name).ToArray(); Illustrators = artist.ArtistLinksOfType(ArtistLinkType.Illustrator, LinkDirection.ManyToOne, allowInheritance: true) .Select(g => new ArtistContract(g, languagePreference)).ToArray(); IllustratorOf = artist.ArtistLinksOfType(ArtistLinkType.Illustrator, LinkDirection.OneToMany) .Select(g => new ArtistContract(g, languagePreference)).OrderBy(a => a.Name).ToArray(); Manager = artist.ArtistLinksOfType(ArtistLinkType.Manager, LinkDirection.ManyToOne, allowInheritance: true) .Select(g => new ArtistContract(g, languagePreference)).FirstOrDefault(); Members = artist.ArtistLinksOfType(ArtistLinkType.Group, LinkDirection.OneToMany) .Select(g => new ArtistContract(g, languagePreference)).OrderBy(g => g.Name).ToArray(); Tags = artist.Tags.ActiveUsages .Select(u => new TagUsageForApiContract(u, languagePreference)) .OrderByDescending(t => t.Count).ToArray(); VoiceProviders = artist.ArtistLinksOfType(ArtistLinkType.VoiceProvider, LinkDirection.ManyToOne, allowInheritance: true) .Select(g => new ArtistContract(g, languagePreference)).OrderBy(a => a.Name).ToArray(); Voicebanks = artist.ArtistLinksOfType(ArtistLinkType.VoiceProvider, LinkDirection.OneToMany) .Select(g => new ArtistContract(g, languagePreference)).OrderBy(a => a.Name).ToArray(); }
public EntryForApiContract(Tag tag, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, EntryOptionalFields includedFields) : this(tag, languagePreference, includedFields) { CreateDate = tag.CreateDate; Status = tag.Status; TagCategoryName = tag.CategoryName; if (includedFields.HasFlag(EntryOptionalFields.MainPicture) && tag.Thumb != null) { MainPicture = new EntryThumbForApiContract(tag.Thumb, thumbPersister, Tag.ImageSizes); } if (includedFields.HasFlag(EntryOptionalFields.WebLinks)) { WebLinks = tag.WebLinks.Links.Select(w => new ArchivedWebLinkContract(w)).ToArray(); } UrlSlug = tag.UrlSlug; }
public OtherService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IUserIconFactory userIconFactory, EntryForApiContractFactory entryForApiContractFactory, ObjectCache cache, IAggregatedEntryImageUrlFactory thumbPersister) : base(sessionFactory, permissionContext, entryLinkFactory) { _userIconFactory = userIconFactory; _entryForApiContractFactory = entryForApiContractFactory; _cache = cache; _thumbPersister = thumbPersister; }
public AlbumForEditContract(Album album, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory imageStore) : base(album, languagePreference) { ArtistLinks = album.Artists.Select(a => new ArtistForAlbumContract(a, languagePreference)).OrderBy(a => a.Name).ToArray(); DefaultNameLanguage = album.TranslatedName.DefaultLanguage; Description = new EnglishTranslatedStringContract(album.Description); Discs = album.Discs.Select(d => new AlbumDiscPropertiesContract(d)).ToArray(); Identifiers = album.Identifiers.Select(i => i.Value).ToArray(); Names = album.Names.Select(n => new LocalizedStringWithIdContract(n)).ToArray(); OriginalRelease = (album.OriginalRelease != null ? new AlbumReleaseContract(album.OriginalRelease, languagePreference) : null); Pictures = album.Pictures.Select(p => new EntryPictureFileContract(p, imageStore)).ToList(); PVs = album.PVs.Select(p => new PVContract(p)).ToArray(); Songs = album.Songs .OrderBy(s => s.DiscNumber).ThenBy(s => s.TrackNumber) .Select(s => new SongInAlbumEditContract(s, languagePreference)).ToArray(); UpdateNotes = string.Empty; WebLinks = album.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); }
public SongListForApiContract(SongList list, ContentLanguagePreference languagePreference, IUserIconFactory userIconFactory, IAggregatedEntryImageUrlFactory imagePersister, SongListOptionalFields fields) : base(list) { ParamIs.NotNull(() => list); Author = new UserForApiContract(list.Author, userIconFactory, UserOptionalFields.None); Deleted = list.Deleted; EventDate = list.EventDate; Status = list.Status; if (fields.HasFlag(SongListOptionalFields.Description)) { Description = list.Description; } if (fields.HasFlag(SongListOptionalFields.Events)) { Events = list.Events.Select(e => new ReleaseEventForApiContract(e, languagePreference, ReleaseEventOptionalFields.Venue, imagePersister)).OrderBy(e => e.Date).ThenBy(e => e.Name).ToArray(); } if (fields.HasFlag(SongListOptionalFields.MainPicture)) { MainPicture = list.Thumb != null ? new EntryThumbForApiContract(list.Thumb, imagePersister) : null; } if (fields.HasFlag(SongListOptionalFields.Tags)) { Tags = list.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).OrderByDescending(u => u.Count).ToArray(); } }
public ArtistForEditContract(Artist artist, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory imageStore) : base(artist, languagePreference) { BaseVoicebank = artist.BaseVoicebank != null ? new ArtistContract(artist.BaseVoicebank, languagePreference) : null; DefaultNameLanguage = artist.TranslatedName.DefaultLanguage; Description = new EnglishTranslatedStringContract(artist.Description); Groups = artist.Groups.Where(g => g.LinkType == ArtistLinkType.Group).Select(g => new ArtistForArtistContract(g, languagePreference)).OrderBy(g => g.Parent.Name).ToArray(); Illustrator = artist.ArtistLinksOfType(ArtistLinkType.Illustrator, Domain.LinkDirection.ManyToOne).Select(g => new ArtistContract(g, languagePreference)).FirstOrDefault(); Names = artist.Names.Select(n => new LocalizedStringWithIdContract(n)).ToArray(); Pictures = artist.Pictures.Select(p => new EntryPictureFileContract(p, imageStore)).ToList(); UpdateNotes = string.Empty; VoiceProvider = artist.ArtistLinksOfType(ArtistLinkType.VoiceProvider, Domain.LinkDirection.ManyToOne).Select(g => new ArtistContract(g, languagePreference)).FirstOrDefault(); WebLinks = artist.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); AssociatedArtists = artist.Groups .Where(a => a.LinkType != ArtistLinkType.Group && (a.Parent.Id != Illustrator?.Id || a.LinkType != ArtistLinkType.Illustrator) && (a.Parent.Id != VoiceProvider?.Id || a.LinkType != ArtistLinkType.VoiceProvider)) .Select(g => new ArtistForArtistContract(g, languagePreference)) .ToArray(); }
public ReleaseEventApiController(EventQueries queries, IAggregatedEntryImageUrlFactory thumbPersister) { _queries = queries; _thumbPersister = thumbPersister; }
public ArtistRelationsQuery(IDatabaseContext ctx, ContentLanguagePreference languagePreference, ObjectCache cache, IAggregatedEntryImageUrlFactory entryThumbPersister) { this.ctx = ctx; this.languagePreference = languagePreference; this.cache = cache; this.entryThumbPersister = entryThumbPersister; }
public AlbumForApiContract( Album album, AlbumMergeRecord mergeRecord, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, AlbumOptionalFields fields, SongOptionalFields songFields) { ArtistString = album.ArtistString[languagePreference]; CatalogNumber = album.OriginalRelease != null ? album.OriginalRelease.CatNum : null; CreateDate = album.CreateDate; DefaultName = album.DefaultName; DefaultNameLanguage = album.Names.SortNames.DefaultLanguage; DiscType = album.DiscType; Id = album.Id; Name = album.Names.SortNames[languagePreference]; RatingAverage = album.RatingAverage; RatingCount = album.RatingCount; ReleaseDate = new OptionalDateTimeContract(album.OriginalReleaseDate); Status = album.Status; Version = album.Version; if (fields.HasFlag(AlbumOptionalFields.AdditionalNames)) { AdditionalNames = album.Names.GetAdditionalNamesStringForLanguage(languagePreference); } if (fields.HasFlag(AlbumOptionalFields.Artists)) { Artists = album.Artists.Select(a => new ArtistForAlbumForApiContract(a, languagePreference)).ToArray(); } if (fields.HasFlag(AlbumOptionalFields.Description)) { Description = album.Description[languagePreference]; } if (fields.HasFlag(AlbumOptionalFields.Discs)) { Discs = album.Discs.Select(d => new AlbumDiscPropertiesContract(d)).ToArray(); } if (fields.HasFlag(AlbumOptionalFields.Identifiers)) { Identifiers = album.Identifiers.Select(i => new AlbumIdentifierContract(i)).ToArray(); } if (thumbPersister != null && fields.HasFlag(AlbumOptionalFields.MainPicture) && album.Thumb != null) { MainPicture = new EntryThumbForApiContract(album.Thumb, thumbPersister); } if (fields.HasFlag(AlbumOptionalFields.Names)) { Names = album.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (fields.HasFlag(AlbumOptionalFields.PVs)) { PVs = album.PVs.Select(p => new PVContract(p)).ToArray(); } if (fields.HasFlag(AlbumOptionalFields.ReleaseEvent)) { ReleaseEvent = album.OriginalReleaseEvent != null ? new ReleaseEventForApiContract(album.OriginalReleaseEvent, languagePreference, ReleaseEventOptionalFields.None, thumbPersister) : null; } if (fields.HasFlag(AlbumOptionalFields.Tags)) { Tags = album.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).ToArray(); } if (fields.HasFlag(AlbumOptionalFields.Tracks)) { Tracks = album.Songs.Select(s => new SongInAlbumForApiContract(s, languagePreference, songFields)).ToArray(); } if (fields.HasFlag(AlbumOptionalFields.WebLinks)) { WebLinks = album.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray(); } if (mergeRecord != null) { MergedTo = mergeRecord.Target.Id; } }
public ReleaseEventApiController(EventQueries queries, IEventRepository repository, IAggregatedEntryImageUrlFactory thumbPersister) { this.queries = queries; this.repository = repository; this.thumbPersister = thumbPersister; }
public AlbumDetailsContract(Album album, ContentLanguagePreference languagePreference, IUserPermissionContext userContext, IAggregatedEntryImageUrlFactory thumbPersister, Func <Song, SongVoteRating?> getSongRating = null, Tag discTypeTag = null) : base(album, languagePreference) { ArtistLinks = album.Artists.Select(a => new ArtistForAlbumContract(a, languagePreference)).OrderBy(a => a.Name).ToArray(); CanEditPersonalDescription = EntryPermissionManager.CanEditPersonalDescription(userContext, album); CanRemoveTagUsages = EntryPermissionManager.CanRemoveTagUsages(userContext, album); Description = album.Description; Discs = album.Songs.Any(s => s.DiscNumber > 1) ? album.Discs.Select(d => new AlbumDiscPropertiesContract(d)).ToDictionary(a => a.DiscNumber) : new Dictionary <int, AlbumDiscPropertiesContract>(0); DiscTypeTypeTag = discTypeTag != null ? new TagBaseContract(discTypeTag, languagePreference) : null; OriginalRelease = (album.OriginalRelease != null ? new AlbumReleaseContract(album.OriginalRelease, languagePreference) : null); Pictures = album.Pictures.Select(p => new EntryPictureFileContract(p, thumbPersister)).ToArray(); PVs = album.PVs.Select(p => new PVContract(p)).ToArray(); Songs = album.Songs .OrderBy(s => s.DiscNumber).ThenBy(s => s.TrackNumber) .Select(s => new SongInAlbumContract(s, languagePreference, false, rating: getSongRating?.Invoke(s.Song))) .ToArray(); Tags = album.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).OrderByDescending(t => t.Count).ToArray(); WebLinks = album.WebLinks.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray(); PersonalDescriptionText = album.PersonalDescriptionText; var author = album.PersonalDescriptionAuthor; PersonalDescriptionAuthor = author != null ? new ArtistForApiContract(author, languagePreference, thumbPersister, ArtistOptionalFields.MainPicture) : null; TotalLength = Songs.All(s => s.Song != null && s.Song.LengthSeconds > 0) ? TimeSpan.FromSeconds(Songs.Sum(s => s.Song.LengthSeconds)) : TimeSpan.Zero; }
public EntryForApiContract(Artist artist, ContentLanguagePreference languagePreference, IAggregatedEntryImageUrlFactory thumbPersister, EntryOptionalFields includedFields) : this(artist, languagePreference, includedFields) { ActivityDate = artist.ReleaseDate; ArtistType = artist.ArtistType; CreateDate = artist.CreateDate; Status = artist.Status; if (includedFields.HasFlag(EntryOptionalFields.MainPicture) && artist.Picture != null) { MainPicture = EntryThumbForApiContract.Create(new EntryThumb(artist, artist.PictureMime, ImagePurpose.Main), thumbPersister); } if (includedFields.HasFlag(EntryOptionalFields.Names)) { Names = artist.Names.Select(n => new LocalizedStringContract(n)).ToArray(); } if (includedFields.HasFlag(EntryOptionalFields.Tags)) { Tags = artist.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).ToArray(); } if (includedFields.HasFlag(EntryOptionalFields.WebLinks)) { WebLinks = artist.WebLinks.Select(w => new ArchivedWebLinkContract(w)).ToArray(); } }