using System; using API.Entities.Enums; using API.Entities.Interfaces; namespace API.DTOs; #nullable enable public class SeriesDto : IHasReadTimeEstimate, IHasCoverImage { public int Id { get; init; } public string? Name { get; init; } public string? OriginalName { get; init; } public string? LocalizedName { get; init; } public string? SortName { get; init; } public int Pages { get; init; } public bool CoverImageLocked { get; set; } /// /// Sum of pages read from linked Volumes. Calculated at API-time. /// public int PagesRead { get; set; } /// /// DateTime representing last time the series was Read. Calculated at API-time. /// public DateTime LatestReadDate { get; set; } /// /// DateTime representing last time a chapter was added to the Series /// public DateTime LastChapterAdded { get; set; } /// /// Rating from logged in user. Calculated at API-time. /// public float UserRating { get; set; } /// /// If the user has set the rating or not /// public bool HasUserRated { get; set; } public MangaFormat Format { get; set; } public DateTime Created { get; set; } public bool NameLocked { get; set; } public bool SortNameLocked { get; set; } public bool LocalizedNameLocked { get; set; } /// /// Total number of words for the series. Only applies to epubs. /// public long WordCount { get; set; } public int LibraryId { get; set; } public string LibraryName { get; set; } = default!; /// public int MinHoursToRead { get; set; } /// public int MaxHoursToRead { get; set; } /// public int AvgHoursToRead { get; set; } /// /// The highest level folder for this Series /// public string FolderPath { get; set; } = default!; /// /// Lowest path (that is under library root) that contains all files for the series. /// /// must be used before setting public string? LowestFolderPath { get; set; } /// /// The last time the folder for this series was scanned /// public DateTime LastFolderScanned { get; set; } public string? CoverImage { get; set; } public string PrimaryColor { get; set; } public string SecondaryColor { get; set; } public void ResetColorScape() { PrimaryColor = string.Empty; SecondaryColor = string.Empty; } }