using System; using System.Collections.Generic; using API.Entities.Enums; using API.Entities.Interfaces; using API.Parser; namespace API.Entities { public class Chapter : IEntityDate { public int Id { get; set; } /// /// Range of numbers. Chapter 2-4 -> "2-4". Chapter 2 -> "2". /// public string Range { get; set; } /// /// Smallest number of the Range. Can be a partial like Chapter 4.5 /// public string Number { get; set; } /// /// The files that represent this Chapter /// public ICollection Files { get; set; } public DateTime Created { get; set; } public DateTime LastModified { get; set; } /// /// Absolute path to the (managed) image file /// /// The file is managed internally to Kavita's APPDIR public string CoverImage { get; set; } public bool CoverImageLocked { get; set; } /// /// Total number of pages in all MangaFiles /// public int Pages { get; set; } /// /// If this Chapter contains files that could only be identified as Series or has Special Identifier from filename /// public bool IsSpecial { get; set; } /// /// Used for books/specials to display custom title. For non-specials/books, will be set to /// public string Title { get; set; } /// /// Age Rating for the issue/chapter /// public AgeRating AgeRating { get; set; } /// /// Chapter title /// /// This should not be confused with Title which is used for special filenames. public string TitleName { get; set; } = string.Empty; /// /// Date which chapter was released /// public DateTime ReleaseDate { get; set; } /// /// Summary for the Chapter/Issue /// public string Summary { get; set; } /// /// Language for the Chapter/Issue /// public string Language { get; set; } /// /// Total number of issues in the series /// public int TotalCount { get; set; } = 0; /// /// Number in the Total Count /// public int Count { get; set; } = 0; /// /// All people attached at a Chapter level. Usually Comics will have different people per issue. /// public ICollection People { get; set; } = new List(); /// /// Genres for the Chapter /// public ICollection Genres { get; set; } = new List(); public ICollection Tags { get; set; } = new List(); // Relationships public Volume Volume { get; set; } public int VolumeId { get; set; } public void UpdateFrom(ParserInfo info) { Files ??= new List(); IsSpecial = info.IsSpecialInfo(); if (IsSpecial) { Number = "0"; } Title = (IsSpecial && info.Format == MangaFormat.Epub) ? info.Title : Range; } } }