using Microsoft.Extensions.Logging; using System.Globalization; namespace File_Folder_Helper.Day.Q42023; internal static class Helper20231016 { internal static void MoveDirectory(ILogger logger, string argsZero) { string weekOfYear; string checkDirectory; long ticks = DateTime.Now.AddHours(-84).Ticks; DirectoryInfo argsZeroDirectoryInfo = new(argsZero); Calendar calendar = new CultureInfo("en-US").Calendar; DirectoryInfo[] directoryInfoCollection = argsZeroDirectoryInfo.GetDirectories(); string fileShareDirectory = Path.GetDirectoryName(argsZero) ?? throw new Exception(); string archiveDirectory = Path.Combine(fileShareDirectory, "Archive"); if (!Directory.Exists(archiveDirectory)) throw new NotSupportedException(); foreach (DirectoryInfo directoryInfo in directoryInfoCollection) { foreach (DirectoryInfo directory in directoryInfo.GetDirectories()) { if (directory.CreationTime.Ticks > ticks) continue; weekOfYear = calendar.GetWeekOfYear(directory.CreationTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); checkDirectory = Path.Combine(archiveDirectory, directoryInfo.Name, $"{directory.CreationTime.Year}_Week_{weekOfYear}", directory.CreationTime.ToString("yyyy-MM-dd")); if (!Directory.Exists(checkDirectory)) continue; Directory.Move(directory.FullName, Path.Combine(checkDirectory, directory.Name)); logger.LogInformation("{directory.CreationTime} - {directory.Name}", directory.CreationTime, directory.Name); } } } }