using Common;
using System;
using System.IO;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;

namespace AssortGenerator.Common
{
    public static class JsonWriter
    {
        public static void WriteJson<T>(T itemToSerialise, string outputFolderName, string workingPath, string fileName)
        {
            var outputPath = $"{workingPath}\\output\\{outputFolderName}";
            DiskHelpers.CreateDirIfDoesntExist(outputPath);

            Console.WriteLine($"Writing json file to {outputPath}");

            var options = new JsonSerializerOptions
            {
                WriteIndented = true,
                DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
                Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic)

            };
            var json = JsonSerializer.Serialize(itemToSerialise, options);
            File.WriteAllText($"{outputPath}\\{fileName}.json", json);
        }
    }
}