using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Shared.Models; public class Mapping : Properties.IMapping { protected int? _By; protected MappingFromPerson? _MappingFromPerson; public string? _SegmentC; protected SortingContainer? _SortingContainer; public int? By => _By; public FilePath FilePath { init; get; } public MappingFromFilterPost MappingFromFilterPost { init; get; } public MappingFromFilterPre MappingFromFilterPre { init; get; } public MappingFromItem MappingFromItem { init; get; } public MappingFromLocation? MappingFromLocation { init; get; } public MappingFromPerson? MappingFromPerson => _MappingFromPerson; public List? MappingFromPhotoPrismCollection { init; get; } public string? SegmentC => _SegmentC; public SortingContainer? SortingContainer => _SortingContainer; [JsonConstructor] public Mapping(int? by, FilePath filePath, MappingFromFilterPost mappingFromFilterPost, MappingFromFilterPre mappingFromFilterPre, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, MappingFromPerson? mappingFromPerson, List? mappingFromPhotoPrismCollection, string? segmentC, SortingContainer? sortingContainer) { _By = by; FilePath = filePath; _SegmentC = segmentC; MappingFromFilterPost = mappingFromFilterPost; MappingFromFilterPre = mappingFromFilterPre; MappingFromItem = mappingFromItem; MappingFromLocation = mappingFromLocation; _MappingFromPerson = mappingFromPerson; MappingFromPhotoPrismCollection = mappingFromPhotoPrismCollection; _SortingContainer = sortingContainer; } public static Mapping Get(FilePath filePath, MappingFromFilterPost mappingFromFilterPost, MappingFromFilterPre mappingFromFilterPre, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, List? mappingFromPhotoPrismCollection) => new(null, filePath, mappingFromFilterPost, mappingFromFilterPre, mappingFromItem, mappingFromLocation, null, mappingFromPhotoPrismCollection, null, null); public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } public void UpdateMappingFromUnknownPerson(bool saveIndividually, SortingContainer sortingContainer) { _By = Stateless.IMapLogic.Sorting; _SortingContainer = sortingContainer; _SegmentC = !saveIndividually ? null : sortingContainer.Sorting.DistancePermyriad.ToString(); } public void UpdateMappingFromPerson(int? approximateYears, string displayDirectoryName, long personKey, string segmentB) { _SortingContainer = null; _By = Stateless.IMapLogic.Mapping; _MappingFromPerson = new(approximateYears, displayDirectoryName, personKey, segmentB); } public void UpdateMappingFromPerson(int? approximateYears, string displayDirectoryName, long personKey, string segmentB, string? segmentC, SortingContainer sortingContainer) { _SegmentC = segmentC; _By = Stateless.IMapLogic.Sorting; _SortingContainer = sortingContainer; _MappingFromPerson = new(approximateYears, displayDirectoryName, personKey, segmentB); } }