using DataModel.Database.Common;

namespace DataModel.Database;

public sealed class Translation
{
    public int Id { get; set; }
    
    public Guid UniqueId { get; set; } = Guid.NewGuid();

    public TextElement TextElement { get; set; } = new();

    public string Culture { get; set; } = "en-US";

    public string Text { get; set; } = string.Empty;

    public bool TranslateManual { get; set; } = false;
    
    internal DataContext.JsonUniqueId JsonUniqueId => new($"{this.TextElement.Code}@{this.Culture}", this.UniqueId, "Trans");

    internal DataContext.JsonTranslation ToJsonTranslation() => new()
    {
        UniqueId = this.JsonUniqueId,
        Culture = this.Culture,
        TranslateManual = this.TranslateManual,
        TextElementUniqueId = this.TextElement.JsonUniqueId,
        Text = this.Text,
    };
    
    internal static Translation FromJsonTranslation(DataContext.JsonTranslation jsonTranslation) => new()
    {
        UniqueId = jsonTranslation.UniqueId.UniqueId,
        Culture = jsonTranslation.Culture,
        TranslateManual = jsonTranslation.TranslateManual,
        Text = jsonTranslation.Text,
        TextElement = new(),
    };
}