LocationContainerDistanceGroupMinimum

This commit is contained in:
2023-09-21 20:43:28 -07:00
parent 5633430bfb
commit f540cac462
11 changed files with 190 additions and 104 deletions

View File

@ -6,11 +6,20 @@ namespace View_by_Distance.Map.Models.Stateless;
internal abstract class DecadeLogic
{
internal static string GetDecade(MappingFromItem mappingFromItem)
internal static string GetDecade(MappingFromItem? mappingFromItem, DateOnly? dateOnly)
{
string result;
string year;
if (mappingFromItem.DateTimeOriginal is null)
if (mappingFromItem is null && dateOnly is null)
throw new NotSupportedException();
if (dateOnly is not null)
{
year = dateOnly.Value.Year.ToString();
result = year[3] > '4' ? $"#{year[..3]}+" : $"#{year[..3]}-";
}
else if (mappingFromItem is null)
throw new NotSupportedException();
else if (mappingFromItem.DateTimeOriginal is null)
{
year = mappingFromItem.MinimumDateTime.Year.ToString();
result = year[3] > '4' ? $"#{year[..3]}+" : $"#{year[..3]}-";
@ -26,7 +35,6 @@ internal abstract class DecadeLogic
internal static void SetCreationTimeMaybeMoveToDecade(Property.Models.Configuration propertyConfiguration, bool moveToDecade, MappingFromItem mappingFromItem, ReadOnlyCollection<LocationContainer<MetadataExtractor.Directory>> locationContainers)
{
DateTime dateTime;
FileInfo fileInfo;
string halfDecade;
string checkDirectory;
string? yearDirectory;
@ -37,11 +45,10 @@ internal abstract class DecadeLogic
string? personKeyFormattedDirectoryName;
foreach (LocationContainer<MetadataExtractor.Directory> locationContainer in locationContainers)
{
fileInfo = new(locationContainer.File);
if (!fileInfo.Exists)
if (!File.Exists(locationContainer.File))
continue;
dateTime = mappingFromItem.DateTimeOriginal is null ? mappingFromItem.MinimumDateTime : mappingFromItem.DateTimeOriginal.Value;
if (fileInfo.CreationTime != dateTime)
if (locationContainer.CreationDateOnly.Year != dateTime.Year || locationContainer.CreationDateOnly.Month != dateTime.Month || locationContainer.CreationDateOnly.Day != dateTime.Day)
File.SetCreationTime(locationContainer.File, dateTime);
if (!moveToDecade)
continue;
@ -59,7 +66,7 @@ internal abstract class DecadeLogic
personKeyFormattedDirectoryName = Path.GetFileName(personKeyFormattedDirectory);
if (personKeyFormattedDirectoryName.Length != propertyConfiguration.PersonBirthdayFormat.Length)
break;
halfDecade = GetDecade(mappingFromItem);
halfDecade = GetDecade(mappingFromItem, null);
if (halfDecade == yearDirectoryName)
continue;
checkDirectory = Path.Combine(personKeyFormattedDirectory, halfDecade, personNameDirectoryName);