using System.Collections.Generic; using System.Linq; using API.Entities; using API.Entities.Enums; using API.Entities.Metadata; using API.Extensions; namespace API.Helpers.Builders; public class SeriesBuilder : IEntityBuilder { private readonly Series _series; public Series Build() { _series.Pages = _series.Volumes.Sum(v => v.Chapters.Sum(c => c.Pages)); return _series; } public SeriesBuilder(string name) { _series = new Series() { Name = name, LocalizedName = name.ToNormalized(), OriginalName = name, SortName = name, NormalizedName = name.ToNormalized(), NormalizedLocalizedName = name.ToNormalized(), Metadata = new SeriesMetadataBuilder().Build(), Volumes = new List() }; } /// /// Sets the localized name. If null or empty, defaults back to the /// /// /// public SeriesBuilder WithLocalizedName(string localizedName) { if (string.IsNullOrEmpty(localizedName)) { localizedName = _series.Name; } _series.LocalizedName = localizedName; _series.NormalizedLocalizedName = localizedName.ToNormalized(); return this; } public SeriesBuilder WithFormat(MangaFormat format) { _series.Format = format; return this; } public SeriesBuilder WithVolume(Volume volume) { _series.Volumes ??= new List(); _series.Volumes.Add(volume); return this; } public SeriesBuilder WithVolumes(List volumes) { _series.Volumes = volumes; return this; } public SeriesBuilder WithMetadata(SeriesMetadata metadata) { _series.Metadata = metadata; return this; } public SeriesBuilder WithPages(int pages) { _series.Pages = pages; return this; } public SeriesBuilder WithCoverImage(string cover) { _series.CoverImage = cover; return this; } public SeriesBuilder WithLibraryId(int id) { _series.LibraryId = id; return this; } }