using System.Globalization; using View_by_Distance.Shared.Models; namespace View_by_Distance.Metadata.Models.Stateless.Methods; internal static class Base { internal static string? GetMaker(ExifDirectoryBase[]? exifBaseDirectories) { string? result = null; if (exifBaseDirectories is not null) { string value; foreach (ExifDirectoryBase exifDirectoryBase in exifBaseDirectories) { value = exifDirectoryBase?.Make is null ? string.Empty : exifDirectoryBase.Make.ToString().Trim(); if (string.IsNullOrEmpty(value)) result = null; else { result = $"{value[0].ToString().ToUpper()}{value[1..].ToLower()}"; break; } } } return result; } internal static string? GetModel(ExifDirectoryBase[]? exifBaseDirectories) { string? result = null; if (exifBaseDirectories is not null) { string value; foreach (ExifDirectoryBase exifDirectoryBase in exifBaseDirectories) { value = exifDirectoryBase?.Model is null ? string.Empty : exifDirectoryBase.Model.ToString().Trim(); if (string.IsNullOrEmpty(value)) result = null; else { result = value; break; } } } return result; } #pragma warning restore CA1416 internal static DateTime? GetDateTime(string dateTimeFormat, string? value) { DateTime? result; string alternateFormat = "ddd MMM dd HH:mm:ss yyyy"; if (value is not null && DateTime.TryParse(value, out DateTime dateTime)) result = dateTime; else if (value is not null && value.Length == dateTimeFormat.Length && DateTime.TryParseExact(value, dateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) result = dateTime; else if (value is not null && value.Length == alternateFormat.Length && DateTime.TryParseExact(value, alternateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) result = dateTime; else result = null; return result; } #pragma warning disable CA1416 }