using System.Text.Json;
using System.Text.Json.Serialization;

namespace View_by_Distance.Not.Copy.Copy.Models;

public class Configuration
{

    protected string _CompareSource;
    protected string _EmptyDestination;
    protected Property.Models.Configuration _PropertyConfiguration;
    protected string _SelectedSource;
    public string CompareSource => _CompareSource;
    public string EmptyDestination => _EmptyDestination;
    public Property.Models.Configuration PropertyConfiguration => _PropertyConfiguration;
    public string SelectedSource => _SelectedSource;

    [JsonConstructor]
    public Configuration(string compareSource, string emptyDestination, Property.Models.Configuration propertyConfiguration, string selectedSource)
    {
        _CompareSource = compareSource;
        _EmptyDestination = emptyDestination;
        _PropertyConfiguration = propertyConfiguration;
        _SelectedSource = selectedSource;
    }

    public override string ToString()
    {
        string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
        return result;
    }

    public void Set(Property.Models.Configuration configuration) => _PropertyConfiguration = configuration;

    public void SetAndUpdate(Property.Models.Configuration configuration)
    {
        _PropertyConfiguration.Update();
        _CompareSource = Path.GetFullPath(_CompareSource);
        _SelectedSource = Path.GetFullPath(_SelectedSource);
        _EmptyDestination = Path.GetFullPath(_EmptyDestination);
    }

}