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

namespace View_by_Distance.Date.Group.Models;

public class Configuration
{

    protected readonly bool? _ByCreateDateShortcut;
    protected readonly bool? _ByDay;
    protected readonly bool? _ByHash;
    protected readonly bool? _BySeason;
    protected readonly bool? _ByWeek;
    protected readonly bool? _KeepFullPath;
    protected Property.Models.Configuration? _PropertyConfiguration;
    public bool? ByCreateDateShortcut => _ByCreateDateShortcut;
    public bool? ByDay => _ByDay;
    public bool? ByHash => _ByHash;
    public bool? BySeason => _BySeason;
    public bool? ByWeek => _ByWeek;
    public bool? KeepFullPath => _KeepFullPath;
    public Property.Models.Configuration? PropertyConfiguration => _PropertyConfiguration;

    [JsonConstructor]
    public Configuration(bool? byCreateDateShortcut, bool? byDay, bool? byHash, bool? bySeason, bool? byWeek, bool? keepFullPath, Property.Models.Configuration? propertyConfiguration)
    {
        _ByCreateDateShortcut = byCreateDateShortcut;
        _ByDay = byDay;
        _ByHash = byHash;
        _BySeason = bySeason;
        _ByWeek = byWeek;
        _KeepFullPath = keepFullPath;
        _PropertyConfiguration = propertyConfiguration;
    }

    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 Update() => _PropertyConfiguration?.Update();

}