2022-06-12 19:42:47 +00:00
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
2022-11-14 19:32:41 +00:00
|
|
|
|
using DataModel.Database.Common;
|
2022-06-12 19:42:47 +00:00
|
|
|
|
|
|
|
|
|
namespace DataModel.Database;
|
|
|
|
|
|
|
|
|
|
public sealed class Section
|
|
|
|
|
{
|
|
|
|
|
[Key]
|
|
|
|
|
public int Id { get; set; }
|
2022-11-06 20:07:41 +00:00
|
|
|
|
|
2023-01-22 20:39:36 +00:00
|
|
|
|
public Guid UniqueId { get; set; } = Guid.NewGuid();
|
2022-06-12 19:42:47 +00:00
|
|
|
|
|
|
|
|
|
public string Name { get; set; } = string.Empty;
|
|
|
|
|
|
2022-07-09 13:03:18 +00:00
|
|
|
|
public string DataKey { get; set; } = string.Empty;
|
2022-06-12 19:42:47 +00:00
|
|
|
|
|
2022-07-09 13:03:18 +00:00
|
|
|
|
public int Depth { get; set; } = 0;
|
|
|
|
|
|
|
|
|
|
public Section? Parent { get; set; }
|
|
|
|
|
|
|
|
|
|
public List<TextElement> TextElements { get; set; } = new();
|
2022-11-14 19:32:41 +00:00
|
|
|
|
|
|
|
|
|
internal DataContext.JsonUniqueId JsonUniqueId => new(this.DataKey, this.UniqueId, "Sec");
|
|
|
|
|
|
2023-02-11 20:22:25 +00:00
|
|
|
|
internal DataContext.JsonSection ToJsonSection(DataContext db)
|
2022-11-14 19:32:41 +00:00
|
|
|
|
{
|
2023-02-11 20:22:25 +00:00
|
|
|
|
db.LoadElementsAsync(this, n => n.Parent).GetAwaiter().GetResult();
|
|
|
|
|
if(this.Depth > 0 && this.Parent == null)
|
|
|
|
|
Console.WriteLine($"Found section with depth > 0 and parent is null ==> {this.JsonUniqueId}");
|
|
|
|
|
|
|
|
|
|
return new()
|
|
|
|
|
{
|
|
|
|
|
UniqueId = this.JsonUniqueId,
|
|
|
|
|
Name = this.Name,
|
|
|
|
|
DataKey = this.DataKey,
|
|
|
|
|
Depth = this.Depth,
|
|
|
|
|
ParentUniqueId = this.Parent?.JsonUniqueId ?? new DataContext.JsonUniqueId("null", Guid.Empty, "Sec"),
|
|
|
|
|
TextElements = this.TextElements.Select(n => n.JsonUniqueId).ToList()
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-22 18:35:57 +00:00
|
|
|
|
internal static Section FromJsonSection(DataContext.JsonSection jsonSection) => new()
|
|
|
|
|
{
|
|
|
|
|
UniqueId = jsonSection.UniqueId.UniqueId,
|
|
|
|
|
Name = jsonSection.Name,
|
|
|
|
|
DataKey = jsonSection.DataKey,
|
|
|
|
|
Depth = jsonSection.Depth,
|
|
|
|
|
Parent = null,
|
|
|
|
|
TextElements = new(),
|
|
|
|
|
};
|
2022-06-12 19:42:47 +00:00
|
|
|
|
}
|