48 lines
2.1 KiB
C#
48 lines
2.1 KiB
C#
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace View_by_Distance.Shared.Models;
|
|
|
|
public record MappingFromItem(DateTime[] ContainerDateTimes,
|
|
DateTime? DateTimeDigitized,
|
|
DateTime? DateTimeOriginal,
|
|
int Id,
|
|
FilePath FilePath,
|
|
bool? IsWrongYear,
|
|
string[] Keywords,
|
|
DateTime MinimumDateTime,
|
|
string? Model,
|
|
string RelativePath,
|
|
FileHolder ResizedFileHolder)
|
|
{
|
|
|
|
public override string ToString()
|
|
{
|
|
string result = JsonSerializer.Serialize(this, MappingFromItemGenerationContext.Default.MappingFromItem);
|
|
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.FilePath, item.Property.DateTimeOriginal, dateTimes);
|
|
result = new(containerDateTimes, item.Property.DateTimeDigitized, item.Property.DateTimeOriginal, item.Property.Id.Value, item.FilePath, isWrongYear, item.Property.Keywords ?? [], minimumDateTime, item.Property.Model, item.RelativePath, resizedFileHolder);
|
|
return result;
|
|
}
|
|
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
[JsonSerializable(typeof(MappingFromItem))]
|
|
public partial class MappingFromItemGenerationContext : JsonSerializerContext
|
|
{
|
|
} |