using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public class SaveContainer { public string CheckFile { init; get; } public string Directory { init; get; } public FileHolder? FaceFileHolder { init; get; } public FileHolder? HiddenFaceFileHolder { init; get; } public FileHolder? FacePartsFileHolder { init; get; } public bool MakeAllHidden { init; get; } public FileHolder? ResizedFileHolder { init; get; } public string ShortcutFile { init; get; } [JsonConstructor] public SaveContainer(string checkFile, string directory, FileHolder? faceFileHolder, FileHolder? hiddenFaceFileHolder, FileHolder? facePartsFileHolder, bool makeAllHidden, FileHolder? resizedFileHolder, string shortcutFile) { CheckFile = checkFile; Directory = directory; FaceFileHolder = faceFileHolder; HiddenFaceFileHolder = hiddenFaceFileHolder; FacePartsFileHolder = facePartsFileHolder; MakeAllHidden = makeAllHidden; ResizedFileHolder = resizedFileHolder; ShortcutFile = shortcutFile; } public SaveContainer(string directory) : this(string.Empty, directory, null, null, null, false, null, string.Empty) { } public SaveContainer(string directory, string locationContainersFile) : this(string.Empty, directory, null, null, null, false, Stateless.Methods.IFileHolder.Get(locationContainersFile), Path.Combine(directory, $"{Path.GetFileName(locationContainersFile)}.lnk")) { } public SaveContainer(string directory, FileHolder? faceFileHolder, FileHolder? resizedFileHolder, string shortcutFile) : this(string.Empty, directory, faceFileHolder, null, null, true, resizedFileHolder, shortcutFile) { } public SaveContainer(string checkFile, string directory, FileHolder faceFileHolder) : this(checkFile, directory, faceFileHolder, null, null, false, null, string.Empty) { } public SaveContainer(FileHolder resizedFileHolder, string checkFile, string directory) : this(checkFile, directory, null, null, null, false, resizedFileHolder, string.Empty) { } public SaveContainer(string checkFile, string directory, FileHolder? faceFileHolder, FileHolder? hiddenFaceFileHolder, FileHolder? facePartsFileHolder, FileHolder? resizedFileHolder, string shortcutFile) : this(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, false, resizedFileHolder, shortcutFile) { } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } }