UpdateDateVerifyAndGetTicksDirectories

SaveOrCopyContents
This commit is contained in:
2023-09-10 00:23:08 -07:00
parent f99802b7f4
commit aa7469989a
3 changed files with 131 additions and 201 deletions

View File

@ -3,6 +3,88 @@ namespace File_Folder_Helper.Helpers;
internal static class HelperTooLong
{
private static void MoveFiles(string yearName, string personKeyFormattedDirectory, string personNameDirectory, string personNameDirectoryName)
{
string? checkFile;
string? checkDirectory;
string[] files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
checkDirectory = Path.Combine(personKeyFormattedDirectory, yearName, personNameDirectoryName);
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
checkFile = Path.Combine(checkDirectory, Path.GetFileName(file));
if (File.Exists(checkFile))
continue;
File.Move(file, checkFile);
}
}
private static void MaybeMoveFiles(Models.AppSettings appSettings, string[] ticksDirectories)
{
string yearName;
string yearDirectoryName;
string[] yearDirectories;
string personKeyFormatted;
string ticksDirectoryName;
string personNameDirectoryName;
string[] personNameDirectories;
string[] personKeyFormattedDirectories;
foreach (string ticksDirectory in ticksDirectories)
{
ticksDirectoryName = Path.GetFileName(ticksDirectory);
if (!long.TryParse(ticksDirectoryName, out long directoryTicks))
break;
yearName = new DateTime(directoryTicks).Year.ToString();
personKeyFormattedDirectories = Directory.GetDirectories(ticksDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string personKeyFormattedDirectory in personKeyFormattedDirectories)
{
personKeyFormatted = Path.GetFileName(personKeyFormattedDirectory);
if (personKeyFormatted.Length != appSettings.PersonBirthdayFormat.Length)
break;
yearDirectories = Directory.GetDirectories(personKeyFormattedDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string yearDirectory in yearDirectories)
{
personNameDirectories = Directory.GetDirectories(yearDirectory, "*", SearchOption.TopDirectoryOnly);
if (personNameDirectories.Length > 1)
break;
if (personNameDirectories.Length == 0)
continue;
personNameDirectoryName = Path.GetFileName(personNameDirectories[0]);
if (!personNameDirectoryName.StartsWith("X+") && personNameDirectoryName.Length != 1)
break;
yearDirectoryName = Path.GetFileName(yearDirectory);
if (yearDirectoryName == yearName)
continue;
MoveFiles(yearName, personKeyFormattedDirectory, personNameDirectories[0], personNameDirectoryName);
}
}
}
}
internal static void UpdateDateVerifyAndGetTicksDirectories(Models.AppSettings appSettings, string directory)
{
string ticksDirectoryName;
DirectoryInfo directoryInfo;
string[] ticksDirectories = Directory.GetDirectories(directory, "*", SearchOption.TopDirectoryOnly);
foreach (string ticksDirectory in ticksDirectories)
{
ticksDirectoryName = Path.GetFileName(ticksDirectory);
if (ticksDirectoryName.Length < 3)
break;
if (!long.TryParse(ticksDirectoryName, out long directoryTicks))
break;
directoryInfo = new(ticksDirectory);
if (directoryInfo.CreationTime.Ticks != directoryTicks)
Directory.SetCreationTime(ticksDirectory, new DateTime(directoryTicks));
if (directoryInfo.LastWriteTime.Ticks != directoryTicks)
Directory.SetLastWriteTime(ticksDirectory, new DateTime(directoryTicks));
}
MaybeMoveFiles(appSettings, ticksDirectories);
for (int i = 1; i < 10; i++)
_ = HelperDeleteEmptyDirectories.DeleteEmptyDirectories(directory);
}
internal static void TooLong(string workingDirectory, bool delete)
{
string[] files;