using System.ComponentModel.DataAnnotations; using DataModel.Database.Common; namespace DataModel.Database; public sealed class Section { [Key] public int Id { get; set; } public Guid UniqueId { get; set; } = Guid.NewGuid(); public string Name { get; set; } = string.Empty; public string DataKey { get; set; } = string.Empty; public int Depth { get; set; } = 0; public Section? Parent { get; set; } public List TextElements { get; set; } = new(); internal DataContext.JsonUniqueId JsonUniqueId => new(this.DataKey, this.UniqueId, "Sec"); internal DataContext.JsonSection ToJsonSection(DataContext db) { 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() }; } 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(), }; }