using System.Text.Json;
using System.Text.Json.Serialization;

namespace View_by_Distance.Shared.Models;

public record Property(DateTime CreationTime,
                       DateTime? DateTime,
                       DateTime? DateTimeDigitized,
                       DateTime? DateTimeFromName,
                       DateTime? DateTimeOriginal,
                       long FileSize,
                       DateTime? GPSDateStamp,
                       int? Height,
                       int? Id,
                       string[]? Keywords,
                       DateTime LastWriteTime,
                       string? Make,
                       string? Model,
                       string? Orientation,
                       int? Width)
{

    public override string ToString()
    {
        string result = JsonSerializer.Serialize(this, PropertyGenerationContext.Default.Property);
        return result;
    }

    public List<DateTime> GetDateTimes() => Stateless.Methods.Property.GetDateTimes(CreationTime, LastWriteTime, DateTime, DateTimeDigitized, DateTimeFromName, DateTimeOriginal, GPSDateStamp);

}

[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(Property))]
public partial class PropertyGenerationContext : JsonSerializerContext
{
}