using System;
using System.Collections.Generic;
using API.Entities.Enums;
using API.Entities.Interfaces;
using API.Entities.Metadata;
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; }
///
/// Chapter title
///
/// This should not be confused with Title which is used for special filenames.
public string TitleName { get; set; } = string.Empty;
// public string Year { get; set; } // Only time I can think this will be more than 1 year is for a volume which will be a spread
///
/// All people attached at a Chapter level. Usually Comics will have different people per issue.
///
public ICollection People { get; set; } = new List();
// Relationships
public Volume Volume { get; set; }
public int VolumeId { get; set; }
//public ChapterMetadata ChapterMetadata { get; set; }
//public int ChapterMetadataId { 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;
}
}
}