Filter same id
RelationLogic LookForAbandoned
This commit is contained in:
72
Map/Models/Stateless/DecadeLogic.cs
Normal file
72
Map/Models/Stateless/DecadeLogic.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using View_by_Distance.Shared.Models;
|
||||
|
||||
namespace View_by_Distance.Map.Models.Stateless;
|
||||
|
||||
internal abstract class DecadeLogic
|
||||
{
|
||||
|
||||
internal static string GetDecade(MappingFromItem mappingFromItem)
|
||||
{
|
||||
string result;
|
||||
string year;
|
||||
if (mappingFromItem.DateTimeOriginal is null)
|
||||
{
|
||||
year = mappingFromItem.MinimumDateTime.Year.ToString();
|
||||
result = year[3] > '4' ? $"#{year[..3]}+" : $"#{year[..3]}-";
|
||||
}
|
||||
else
|
||||
{
|
||||
year = mappingFromItem.DateTimeOriginal.Value.Year.ToString();
|
||||
result = year[3] > '4' ? $"^{year[..3]}+" : $"^{year[..3]}-";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
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;
|
||||
string yearDirectoryName;
|
||||
string? personNameDirectory;
|
||||
string personNameDirectoryName;
|
||||
string? personKeyFormattedDirectory;
|
||||
string? personKeyFormattedDirectoryName;
|
||||
foreach (LocationContainer<MetadataExtractor.Directory> locationContainer in locationContainers)
|
||||
{
|
||||
fileInfo = new(locationContainer.File);
|
||||
if (!fileInfo.Exists)
|
||||
continue;
|
||||
dateTime = mappingFromItem.DateTimeOriginal is null ? mappingFromItem.MinimumDateTime : mappingFromItem.DateTimeOriginal.Value;
|
||||
if (fileInfo.CreationTime != dateTime)
|
||||
File.SetCreationTime(locationContainer.File, dateTime);
|
||||
if (!moveToDecade)
|
||||
continue;
|
||||
personNameDirectory = Path.GetDirectoryName(locationContainer.File);
|
||||
if (string.IsNullOrEmpty(personNameDirectory))
|
||||
continue;
|
||||
personNameDirectoryName = Path.GetFileName(personNameDirectory);
|
||||
yearDirectory = Path.GetDirectoryName(personNameDirectory);
|
||||
if (string.IsNullOrEmpty(yearDirectory))
|
||||
continue;
|
||||
yearDirectoryName = Path.GetFileName(yearDirectory);
|
||||
personKeyFormattedDirectory = Path.GetDirectoryName(yearDirectory);
|
||||
if (string.IsNullOrEmpty(personKeyFormattedDirectory))
|
||||
continue;
|
||||
personKeyFormattedDirectoryName = Path.GetFileName(personKeyFormattedDirectory);
|
||||
if (personKeyFormattedDirectoryName.Length != propertyConfiguration.PersonBirthdayFormat.Length)
|
||||
break;
|
||||
halfDecade = GetDecade(mappingFromItem);
|
||||
if (halfDecade == yearDirectoryName)
|
||||
continue;
|
||||
checkDirectory = Path.Combine(personKeyFormattedDirectory, halfDecade, personNameDirectoryName);
|
||||
if (!Directory.Exists(checkDirectory))
|
||||
_ = Directory.CreateDirectory(checkDirectory);
|
||||
File.Move(locationContainer.File, Path.Combine(checkDirectory, Path.GetFileName(locationContainer.File)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user