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

namespace View_by_Distance.Shared.Models;

public class FileSystem : Properties.IFileSystem
{

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

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

    public FileSystem(string dataFullFileName, Exception ex)
    {
        _ClassName = string.Empty;
        _DataDisplayFileName = string.Empty;
        _DataFullFileName = dataFullFileName;
        _Display = string.Concat(ex.Message, Environment.NewLine, ex.StackTrace, Environment.NewLine, dataFullFileName);
        _LastModified = DateTime.Now;
    }

    public string GetDate()
    {
        string result = _LastModified.ToString("MM/dd/yyyy hh:mm:ss tt");
        return result;
    }

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

}