Files
Pf2eDataScrapper/Pf2eDataScrapper/Importers/Implementations/Pf2eFoundry/Compendium/CompendiumFolder.cs
T

89 lines
2.9 KiB
C#

using Newtonsoft.Json.Linq;
namespace Pf2eDataScrapper.Importers.Implementations.Pf2eFoundry.Compendium
{
/// <summary>
/// Папка компендиума.
/// </summary>
internal class CompendiumFolder
{
/// <summary>
/// Идентификатор папки.
/// </summary>
public readonly string Id;
/// <summary>
/// Название папки.
/// </summary>
public readonly string Name;
/// <summary>
/// Путь к папке.
/// </summary>
public readonly string? Path;
/// <summary>
/// Указатель, что папка содержится в других папках.
/// </summary>
public readonly bool IsContained;
/// <summary>
/// Родительская папка.
/// </summary>
public CompendiumFolder? Parent;
/// <summary>
/// Тип документов в папке.
/// </summary>
public readonly CompendiumDocumentType Type;
/// <summary>
/// Конструктор папки компендиума из JSON-объекта.
/// </summary>
/// <param name="json"></param>
public CompendiumFolder(JObject json)
{
if (json.TryGetValue("_id", out var id))
{
// Вложенная папка через _folders.json
Id = id!.ToString();
Name = json["name"]!.ToString();
Path = null;
IsContained = true;
}
else
{
// Корневой пак в system.json
Id = json["name"]!.ToString();
Name = json["label"]!.ToString();
Path = json["path"]!.ToString();
IsContained = false;
}
Type = (CompendiumDocumentType)Enum.Parse(typeof(CompendiumDocumentType), json["type"]!.ToString());
}
/// <summary>
/// Конструктор папки компендиума.
/// </summary>
/// <param name="id">Идентификатор папки.</param>
/// <param name="name">Название папки.</param>
public CompendiumFolder(string id, string name)
{
Id = id;
Name = name;
Path = null;
IsContained = false;
}
/// <summary>
/// Строковое представление данных о папки компендиума.
/// </summary>
/// <returns>Строковое представление данных о папки компендиума.</returns>
public override string ToString()
{
return $"CompendiumFolder([Id={Id}][Type={Type}][Name={Name}][Path={Path}][Parent={Parent?.Name ?? "null"}])";
}
}
}