namespace View_by_Distance.Shared.Models.Stateless.Methods;

public interface IProperty
{ // ...

    DateTime TestStatic_GetDateTime(Models.Property? property) =>
        GetDateTime(property);
    static DateTime GetDateTime(Models.Property? property) =>
        Property.GetDateTime(property);

    DateTime TestStatic_GetMinimumDateTime(Models.Property? property) =>
        GetMinimumDateTime(property);
    static DateTime GetMinimumDateTime(Models.Property? property) =>
        Property.GetMinimumDateTime(property);

    (int Season, string seasonName) TestStatic_GetSeason(int dayOfYear) =>
        GetSeason(dayOfYear);
    static (int Season, string seasonName) GetSeason(int dayOfYear) =>
        Property.GetSeason(dayOfYear);

    string TestStatic_GetDiffRootDirectory(string diffPropertyDirectory) =>
        GetDiffRootDirectory(diffPropertyDirectory);
    static string GetDiffRootDirectory(string diffPropertyDirectory) =>
        Property.GetDiffRootDirectory(diffPropertyDirectory);

    bool TestStatic_Any(Models.Container[] propertyHolderCollections) =>
        Any(propertyHolderCollections);
    static bool Any(Models.Container[] propertyHolderCollections) =>
        Property.Any(propertyHolderCollections);

    (bool?, string[]) TestStatic_IsWrongYear(string[] segments, string year) =>
        IsWrongYear(segments, year);
    static (bool?, string[]) IsWrongYear(string[] segments, string year) =>
        Property.IsWrongYear(segments, year);

    (bool?, string[]) TestStatic_IsWrongYear(Models.FileHolder fileHolder, DateTime? dateTimeOriginal, List<DateTime> dateTimes) =>
        IsWrongYear(fileHolder, dateTimeOriginal, dateTimes);
    static (bool?, string[]) IsWrongYear(Models.FileHolder fileHolder, DateTime? dateTimeOriginal, List<DateTime> dateTimes) =>
        Property.IsWrongYear(fileHolder, dateTimeOriginal, dateTimes);

    bool TestStatic_NameWithoutExtensionIsIdFormat(string fileNameWithoutExtension) =>
        NameWithoutExtensionIsIdFormat(fileNameWithoutExtension);
    static bool NameWithoutExtensionIsIdFormat(string fileNameWithoutExtension) =>
        Property.NameWithoutExtensionIsIdFormat(fileNameWithoutExtension);

    bool TestStatic_NameWithoutExtensionIsIdFormat(Models.FileHolder fileHolder) =>
        NameWithoutExtensionIsIdFormat(fileHolder);
    static bool NameWithoutExtensionIsIdFormat(Models.FileHolder fileHolder) =>
        NameWithoutExtensionIsIdFormat(fileHolder.NameWithoutExtension);

    List<DateTime> TestStatic_GetDateTimes(Models.Property property) =>
        GetDateTimes(property);
    static List<DateTime> GetDateTimes(Models.Property property) =>
        Property.GetDateTimes(property.CreationTime, property.LastWriteTime, property.DateTime, property.DateTimeDigitized, property.DateTimeFromName, property.DateTimeOriginal, property.GPSDateStamp);

    double TestStatic_GetStandardDeviation(IEnumerable<long> values, double average) =>
        GetStandardDeviation(values, average);
    static double GetStandardDeviation(IEnumerable<long> values, double average) =>
        Property.GetStandardDeviation(values, average);

    TimeSpan TestStatic_GetThreeStandardDeviationHigh(int minimum, Models.Container container) =>
        GetThreeStandardDeviationHigh(minimum, container);
    static TimeSpan GetThreeStandardDeviationHigh(int minimum, Models.Container container) =>
        Property.GetThreeStandardDeviationHigh(minimum, container);

    (int, List<DateTime>, List<Models.Item>) TestStatic_Get(Models.Container container, TimeSpan threeStandardDeviationHigh, int i) =>
        Get(container, threeStandardDeviationHigh, i);
    static (int, List<DateTime>, List<Models.Item>) Get(Models.Container container, TimeSpan threeStandardDeviationHigh, int i) =>
        Property.Get(container, threeStandardDeviationHigh, i);

    List<DateTime> TestStatic_GetDateTimes(DateTime creationTime, DateTime lastWriteTime, DateTime? dateTime, DateTime? dateTimeDigitized, DateTime? dateTimeFromName, DateTime? dateTimeOriginal, DateTime? gpsDateStamp) =>
        GetDateTimes(creationTime, lastWriteTime, dateTime, dateTimeDigitized, dateTimeFromName, dateTimeOriginal, gpsDateStamp);
    static List<DateTime> GetDateTimes(DateTime creationTime, DateTime lastWriteTime, DateTime? dateTime, DateTime? dateTimeDigitized, DateTime? dateTimeFromName, DateTime? dateTimeOriginal, DateTime? gpsDateStamp) =>
        Property.GetDateTimes(creationTime, lastWriteTime, dateTime, dateTimeDigitized, dateTimeFromName, dateTimeOriginal, gpsDateStamp);

}