Example #1
0
 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;
 }
Example #2
0
 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;
 }
Example #3
0
        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),
            });
Example #4
0
 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;
 }
Example #5
0
 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;
 }
Example #6
0
 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;
            }
        }
Example #8
0
        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;
        }
Example #9
0
 public EntryQueries(IAlbumRepository repository, IUserPermissionContext permissionContext, IAggregatedEntryImageUrlFactory entryThumbPersister)
     : base(repository, permissionContext)
 {
     this.entryThumbPersister = entryThumbPersister;
 }
Example #10
0
        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;
            }
        }
Example #11
0
 public SongListApiController(SongListQueries queries, IUserIconFactory userIconFactory, IAggregatedEntryImageUrlFactory entryImagePersister)
 {
     _queries             = queries;
     _userIconFactory     = userIconFactory;
     _entryImagePersister = entryImagePersister;
 }
Example #12
0
        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();
            }
        }
Example #13
0
 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();
            }
        }
Example #15
0
 public TagApiController(TagQueries queries, IAggregatedEntryImageUrlFactory thumbPersister)
 {
     _queries        = queries;
     _thumbPersister = thumbPersister;
 }
Example #16
0
        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();
            }
        }
Example #17
0
        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();
            }
        }
Example #19
0
        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();
        }
Example #20
0
        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;
        }
Example #21
0
 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;
 }
Example #22
0
 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();
            }
        }
Example #24
0
        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;
		}
Example #27
0
        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;
 }
Example #29
0
        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;
        }
Example #30
0
        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();
            }
        }