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