58 lines
2.5 KiB
C#
58 lines
2.5 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace View_by_Distance.Shared.Models;
|
|
|
|
public class MappingFromItem : Properties.IMappingFromItem
|
|
{
|
|
|
|
public DateTime[] ContainerDateTimes { init; get; }
|
|
public DateTime? DateTimeDigitized { init; get; }
|
|
public DateTime? DateTimeOriginal { init; get; }
|
|
public int Id { init; get; }
|
|
public FileHolder ImageFileHolder { init; get; }
|
|
public bool? IsWrongYear { init; get; }
|
|
public DateTime MinimumDateTime { init; get; }
|
|
public string? Model { init; get; }
|
|
public string RelativePath { init; get; }
|
|
public FileHolder ResizedFileHolder { init; get; }
|
|
|
|
[JsonConstructor]
|
|
public MappingFromItem(DateTime[] containerDateTimes, DateTime? dateTimeDigitized, DateTime? dateTimeOriginal, int id, FileHolder imageFileHolder, bool? isWrongYear, DateTime minimumDateTime, string? model, string relativePath, FileHolder resizedFileHolder)
|
|
{
|
|
ContainerDateTimes = containerDateTimes;
|
|
DateTimeDigitized = dateTimeDigitized;
|
|
DateTimeOriginal = dateTimeOriginal;
|
|
Id = id;
|
|
ImageFileHolder = imageFileHolder;
|
|
IsWrongYear = isWrongYear;
|
|
MinimumDateTime = minimumDateTime;
|
|
Model = model;
|
|
RelativePath = relativePath;
|
|
ResizedFileHolder = resizedFileHolder;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
|
return result;
|
|
}
|
|
|
|
public DateTime GetDateTimeOriginalThenMinimumDateTime() =>
|
|
DateTimeOriginal is not null ? DateTimeOriginal.Value : MinimumDateTime;
|
|
|
|
internal static MappingFromItem GetMappingFromItem(DateTime[] containerDateTimes, Item item, FileHolder? resizedFileHolder)
|
|
{
|
|
MappingFromItem result;
|
|
if (item.Property?.Id is null)
|
|
throw new NotSupportedException();
|
|
if (resizedFileHolder is null)
|
|
throw new NotSupportedException();
|
|
List<DateTime> dateTimes = item.Property.GetDateTimes();
|
|
DateTime minimumDateTime = Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
|
(bool? isWrongYear, _) = Stateless.Methods.IProperty.IsWrongYear(item.ImageFileHolder, item.Property.DateTimeOriginal, dateTimes);
|
|
result = new(containerDateTimes, item.Property.DateTimeDigitized, item.Property.DateTimeOriginal, item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.Property.Model, item.RelativePath, resizedFileHolder);
|
|
return result;
|
|
}
|
|
|
|
} |