using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Map.Models; public class Configuration { public int FaceConfidencePercent { init; get; } public int FaceDistancePermyriad { init; get; } public string FacePartsFileNameExtension { init; get; } public string FacesFileNameExtension { init; get; } public string FacesHiddenFileNameExtension { init; get; } public string MappingDefaultName { init; get; } public int PersonBirthdayFirstYear { init; get; } public string PersonBirthdayFormat { init; get; } public char[] PersonCharacters { init; get; } public int PersonCharactersCopyCount { init; get; } public int RangeDaysDeltaTolerance { init; get; } public double RangeDistanceTolerance { init; get; } public bool SaveSortingWithoutPerson { init; get; } public string[] SkipNotSkipDirectories { init; get; } public int SortingMaximumPerKey { init; get; } public int SortingMinimumToUseSigma { init; get; } [JsonConstructor] public Configuration(int faceConfidencePercent, int faceDistancePermyriad, string mappingDefaultName, int personBirthdayFirstYear, string personBirthdayFormat, char[] personCharacters, int personCharactersCopyCount, int[] rangeDaysDeltaTolerance, float[] rangeDistanceTolerance, bool saveSortingWithoutPerson, string[] skipNotSkipDirectories, int sortingMaximumPerKey, int sortingMinimumToUseSigma, string facesFileNameExtension, string facesHiddenFileNameExtension, string facePartsFileNameExtension) { PersonCharacters = personCharacters; MappingDefaultName = mappingDefaultName; PersonBirthdayFormat = personBirthdayFormat; SortingMaximumPerKey = sortingMaximumPerKey; FaceConfidencePercent = faceConfidencePercent; FaceDistancePermyriad = faceDistancePermyriad; FacesFileNameExtension = facesFileNameExtension; SkipNotSkipDirectories = skipNotSkipDirectories; PersonBirthdayFirstYear = personBirthdayFirstYear; RangeDistanceTolerance = rangeDistanceTolerance[1]; SaveSortingWithoutPerson = saveSortingWithoutPerson; SortingMinimumToUseSigma = sortingMinimumToUseSigma; RangeDaysDeltaTolerance = rangeDaysDeltaTolerance[1]; PersonCharactersCopyCount = personCharactersCopyCount; FacePartsFileNameExtension = facePartsFileNameExtension; FacesHiddenFileNameExtension = facesHiddenFileNameExtension; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } }