70 lines
3.3 KiB
C#

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<MappingFromPhotoPrism>? 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<MappingFromPhotoPrism>? 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<MappingFromPhotoPrism>? 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);
}
}