using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public class MappingFromItem : Properties.IMappingFromItem { public int Id { init; get; } public FileHolder ImageFileHolder { init; get; } public bool? IsWrongYear { init; get; } public DateTime MinimumDateTime { init; get; } public FileHolder ResizedFileHolder { init; get; } [JsonConstructor] public MappingFromItem(int id, FileHolder imageFileHolder, bool? isWrongYear, DateTime minimumDateTime, FileHolder resizedFileHolder) { Id = id; ImageFileHolder = imageFileHolder; IsWrongYear = isWrongYear; MinimumDateTime = minimumDateTime; ResizedFileHolder = resizedFileHolder; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } } public class MappingFromLocation : Properties.IMappingFromLocation { public double Confidence { init; get; } public string DeterministicHashCodeKey { init; get; } public int NormalizedPixelPercentage { init; get; } [JsonConstructor] public MappingFromLocation(double confidence, string deterministicHashCodeKey, int normalizedPixelPercentage) { Confidence = confidence; DeterministicHashCodeKey = deterministicHashCodeKey; NormalizedPixelPercentage = normalizedPixelPercentage; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } } public class MappingFromPerson : Properties.IMappingFromPerson { public int? ApproximateYears { init; get; } public int? By { init; get; } public string DisplayDirectoryName { init; get; } public PersonBirthday? PersonBirthday { init; get; } public string SegmentB { init; get; } [JsonConstructor] public MappingFromPerson(int? approximateYears, int? by, string displayDirectoryName, PersonBirthday? personBirthday, string segmentB) { ApproximateYears = approximateYears; By = by; DisplayDirectoryName = displayDirectoryName; PersonBirthday = personBirthday; SegmentB = segmentB; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } } public class Mapping : Properties.IMapping { protected MappingFromPerson _MappingFromPerson; public MappingFromItem MappingFromItem { init; get; } public MappingFromLocation MappingFromLocation { init; get; } public MappingFromPerson MappingFromPerson => _MappingFromPerson; [JsonConstructor] public Mapping(MappingFromItem mappingFromItem, MappingFromLocation mappingFromLocation, MappingFromPerson mappingFromPerson) { MappingFromItem = mappingFromItem; MappingFromLocation = mappingFromLocation; _MappingFromPerson = mappingFromPerson; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } public void UpdateMappingFromPerson(int? approximateYears, int? by, string displayDirectoryName, PersonBirthday personBirthday, string segmentB) => _MappingFromPerson = new(approximateYears, by, displayDirectoryName, personBirthday, segmentB); }