using System.Text.Json.Serialization; using View_by_Distance.Shared.Models; namespace View_by_Distance.Property.Models; public class Closest { protected readonly double? _Average; protected readonly int? _FaceLocationIndex; protected readonly bool? _IsWrongYear; protected readonly double? _Minimum; protected readonly DateTime _MinimumDateTime; protected readonly PersonBirthday? _PersonBirthday; public double? Average => _Average; public int? FaceLocationIndex => _FaceLocationIndex; public bool? IsWrongYear => _IsWrongYear; public double? Minimum => _Minimum; public DateTime MinimumDateTime => _MinimumDateTime; public PersonBirthday? PersonBirthday => _PersonBirthday; [JsonConstructor] public Closest(double? average, int? faceLocationIndex, bool? isWrongYear, double? minimum, DateTime minimumDateTime, PersonBirthday? personBirthday) { _Average = average; _FaceLocationIndex = faceLocationIndex; _IsWrongYear = isWrongYear; _Minimum = minimum; _MinimumDateTime = minimumDateTime; _PersonBirthday = personBirthday; } public Closest(int? faceLocationIndex, DateTime minimumDateTime, bool? isWrongYear) : this(null, faceLocationIndex, isWrongYear, null, minimumDateTime, null) { } public Closest(int? faceLocationIndex, DateTime minimumDateTime, bool? isWrongYear, PersonBirthday? personBirthday, List faceDistances) : this(faceDistances.Average(), faceLocationIndex, isWrongYear, faceDistances.Min(), minimumDateTime, personBirthday) { } public static Closest Get(List collection) => (from l in collection orderby l.Minimum < 0.05, l.Average select l).First(); }