Files
view-by-distance-mklink-con…/Shared/Models/MappingFromItem.cs
Mike Phares 30d8a270f9 Removed Obsolete A_Property Methods
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
2025-06-30 16:42:34 -07:00

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
{
}