using Newtonsoft.Json;
using System.Text;

namespace FileSplitter.Shared.Classes;

/// <summary>
/// Параметры консоли программы
/// </summary>
public sealed class FileSplitterConsoleOptions
{
    /// <summary>
    /// Конструктор
    /// </summary>
    public FileSplitterConsoleOptions () => Language = "russian";

    /// <summary>
    /// Язык приложения
    /// </summary>
    public string Language { get; set; }

    /// <summary>
    /// Сохранение параметров в файл
    /// </summary>
    public void Save ()
    {
        //Открываю файл
        StreamWriter writer = new("settings.json", Encoding.UTF8,
            new() { Access = FileAccess.Write, Mode = FileMode.Create });

        //Записываю файл
        writer.WriteLine(JsonConvert.SerializeObject(this));

        //Закрываю файл
        writer.Close();
        //Освобождаю память
        writer.Dispose();
    }

    /// <summary>
    /// Загрузка параметров из файла
    /// </summary>
    public void Load ()
    {
        //Если файла опций не существует
        if (!File.Exists("settings.json"))
            //- то создаём
            Save();

        //Открываю файл
        StreamReader reader = new("settings.json", Encoding.UTF8);

        //Читаю файл
        FileSplitterConsoleOptions options =
            JsonConvert.DeserializeObject<FileSplitterConsoleOptions>(reader.ReadLine() ?? "[]") ?? new();

        //- закрываю файл
        reader.Close();
        //- освобождаю память
        reader.Dispose();

        //Устанавливаю параметры
        Language = options.Language;
    }
}