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; } // 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; } } }