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

namespace View_by_Distance.Shared.Models;

public class DirectoryFileSystem : FileSystem, Properties.IDirectoryFileSystem
{

    // protected new string _ClassName;
    // protected new string _DataDisplayFileName;
    // protected new string _DataFullFileName;
    // protected new string _Display;
    // protected new DateTime _LastModified;
    // public new string ClassName => _ClassName;
    // public new string DataDisplayFileName => _DataDisplayFileName;
    // public new string DataFullFileName => _DataFullFileName;
    // public new string Display => _Display;
    // public new DateTime LastModified => _LastModified;

    [JsonConstructor]
    public DirectoryFileSystem(string className, string dataDisplayFileName, string dataFullFileName, string display, DateTime lastModified) : base(className, dataDisplayFileName, dataFullFileName, display, lastModified)
    {
        _ClassName = className;
        _DataDisplayFileName = dataDisplayFileName;
        _DataFullFileName = dataFullFileName;
        _Display = display;
        _LastModified = lastModified;
    }

    internal DirectoryFileSystem(DirectoryInfo directoryInfo) : base(string.Empty, string.Empty, string.Empty, string.Empty, DateTime.MinValue)
    {
        _ClassName = "directory";
        _DataDisplayFileName = directoryInfo.Name;
        _DataFullFileName = directoryInfo.FullName;
        _Display = directoryInfo.Name;
        _LastModified = directoryInfo.LastWriteTime;
    }

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

}