using System; using System.Collections.Generic; using API.Entities; using API.Entities.Enums; using API.Entities.Metadata; using API.Entities.Person; namespace API.Helpers.Builders; public class SeriesMetadataBuilder : IEntityBuilder { private readonly SeriesMetadata _seriesMetadata; public SeriesMetadata Build() => _seriesMetadata; public SeriesMetadataBuilder() { _seriesMetadata = new SeriesMetadata() { CollectionTags = new List(), Genres = new List(), Tags = new List(), People = new List() }; } [Obsolete] public SeriesMetadataBuilder WithCollectionTag(CollectionTag tag) { _seriesMetadata.CollectionTags ??= new List(); _seriesMetadata.CollectionTags.Add(tag); return this; } [Obsolete] public SeriesMetadataBuilder WithCollectionTags(IList tags) { if (tags == null) return this; _seriesMetadata.CollectionTags ??= new List(); _seriesMetadata.CollectionTags = tags; return this; } public SeriesMetadataBuilder WithPublicationStatus(PublicationStatus status, bool lockState = false) { _seriesMetadata.PublicationStatus = status; _seriesMetadata.PublicationStatusLocked = lockState; return this; } public SeriesMetadataBuilder WithAgeRating(AgeRating rating, bool lockState = false) { _seriesMetadata.AgeRating = rating; _seriesMetadata.AgeRatingLocked = lockState; return this; } public SeriesMetadataBuilder WithPerson(Person person, PersonRole role) { _seriesMetadata.People ??= new List(); _seriesMetadata.People.Add(new SeriesMetadataPeople() { Role = role, Person = person, SeriesMetadata = _seriesMetadata, }); return this; } public SeriesMetadataBuilder WithLanguage(string languageCode) { _seriesMetadata.Language = languageCode; return this; } public SeriesMetadataBuilder WithReleaseYear(int year, bool lockStatus = false) { _seriesMetadata.ReleaseYear = year; _seriesMetadata.ReleaseYearLocked = lockStatus; return this; } public SeriesMetadataBuilder WithSummary(string summary, bool lockStatus = false) { _seriesMetadata.Summary = summary; _seriesMetadata.SummaryLocked = lockStatus; return this; } public SeriesMetadataBuilder WithGenre(Genre genre, bool lockStatus = false) { _seriesMetadata.Genres ??= []; _seriesMetadata.Genres.Add(genre); _seriesMetadata.GenresLocked = lockStatus; return this; } public SeriesMetadataBuilder WithGenres(List genres, bool lockStatus = false) { _seriesMetadata.Genres = genres; _seriesMetadata.GenresLocked = lockStatus; return this; } public SeriesMetadataBuilder WithTag(Tag tag, bool lockStatus = false) { _seriesMetadata.Tags ??= []; _seriesMetadata.Tags.Add(tag); _seriesMetadata.TagsLocked = lockStatus; return this; } }