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

namespace View_by_Distance.Shared.Models;

public class DirectoryFileSystem : FileSystem, Properties.IDirectoryFileSystem
{

    [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;
    }

}