Changed GetDimensions to handle a stream at the end and one exit Switched to using Action? over IDlibDotNet for Tick method Switched to using AsReadOnly over new() Moved Meta Base to Shared
53 lines
2.4 KiB
C#
53 lines
2.4 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace View_by_Distance.Shared.Models;
|
|
|
|
public record MappingFromItem(DateTime[] ContainerDateTimes,
|
|
DateTime? DateTimeOriginal,
|
|
int Id,
|
|
bool? IsArchive,
|
|
FilePath FilePath,
|
|
bool? IsWrongYear,
|
|
ReadOnlyCollection<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.ExifDirectory?.FilePath?.Id is null)
|
|
throw new NotSupportedException();
|
|
if (resizedFileHolder is null)
|
|
throw new NotSupportedException();
|
|
ExifDirectory exifDirectory = item.ExifDirectory;
|
|
string? model = Stateless.Methods.IMetaBase.GetModel(exifDirectory);
|
|
DateTime minimumDateTime = Stateless.Methods.IDate.GetMinimum(exifDirectory);
|
|
DateTime? dateTime = Stateless.Methods.IDate.GetDateTimeOriginal(exifDirectory);
|
|
ReadOnlyCollection<DateTime> dateTimes = Stateless.Methods.IDate.GetDateTimes(exifDirectory);
|
|
ReadOnlyCollection<string> keywords = Stateless.Methods.IMetaBase.GetKeywords(exifDirectory);
|
|
(bool? isWrongYear, _) = Stateless.Methods.IProperty.IsWrongYear(item.FilePath, dateTime, dateTimes.ToList());
|
|
result = new(containerDateTimes, dateTime, exifDirectory.FilePath.Id.Value, item.IsArchive, item.FilePath, isWrongYear, keywords, minimumDateTime, model, item.RelativePath, resizedFileHolder);
|
|
return result;
|
|
}
|
|
|
|
}
|
|
|
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
[JsonSerializable(typeof(MappingFromItem))]
|
|
public partial class MappingFromItemGenerationContext : JsonSerializerContext
|
|
{
|
|
} |