diff --git a/Date-Group/DateGroup.cs b/Date-Group/DateGroup.cs index 17aef6b..ed62a33 100644 --- a/Date-Group/DateGroup.cs +++ b/Date-Group/DateGroup.cs @@ -216,9 +216,9 @@ public class DateGroup string seasonValue; string directoryName; string topDirectoryName; + DateTime minimumDateTime; string[]? matches = null; string[] directorySegments; - DateTime? minimumDateTime = null; List destinationCollection; List directoryNames = new(); List topDirectorySegments = new(); @@ -260,9 +260,12 @@ public class DateGroup directoryNames.Clear(); destinationCollection = new(); _ = destinationDirectoryName.Clear(); - minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property); - day = minimumDateTime.Value.ToString("MM-dd"); - month = minimumDateTime.Value.ToString("MMMM"); + if (item.ImageFileHolder.LastWriteTime is not null && item.Property is null) + minimumDateTime = item.ImageFileHolder.LastWriteTime.Value; + else + minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property); + day = minimumDateTime.ToString("MM-dd"); + month = minimumDateTime.ToString("MMMM"); if (item.Property?.Id is null) { flag = '#'; @@ -277,19 +280,19 @@ public class DateGroup flag = '~'; else { - if (item.Property.DateTimeOriginal.HasValue && minimumDateTime.Value.DayOfYear != item.Property.DateTimeOriginal.Value.DayOfYear && Math.Abs(new TimeSpan(minimumDateTime.Value.Ticks - item.Property.DateTimeOriginal.Value.Ticks).TotalHours) > 8) + if (item.Property.DateTimeOriginal.HasValue && minimumDateTime.DayOfYear != item.Property.DateTimeOriginal.Value.DayOfYear && Math.Abs(new TimeSpan(minimumDateTime.Ticks - item.Property.DateTimeOriginal.Value.Ticks).TotalHours) > 8) flag = '^'; else flag = '='; } } - (season, seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(minimumDateTime.Value.DayOfYear); + (season, seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(minimumDateTime.DayOfYear); if ((from l in topDirectorySegments where l == "Christmas" select true).Any()) seasonValue = string.Empty; else seasonValue = $".{season}"; if (isWrongYear is null || !isWrongYear.Value) - year = $"{flag}{minimumDateTime.Value:yyyy}{seasonValue}"; + year = $"{flag}{minimumDateTime:yyyy}{seasonValue}"; else if (matches is null || matches.Length < 3) year = "----"; else @@ -300,7 +303,7 @@ public class DateGroup year = $"{flag}{matches[0][1..].Split('.')[0]}{seasonValue}"; } topDirectoryName = Path.GetFileName(topDirectory); - weekOfYear = calendar.GetWeekOfYear(minimumDateTime.Value, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); + weekOfYear = calendar.GetWeekOfYear(minimumDateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); if (_Configuration.ByHash) directoryNames.Add($"{year} {seasonName}"); else if (_Configuration.BySeason && topDirectoryName.Length == 1 && topDirectoryName[0] == '_') @@ -349,9 +352,9 @@ public class DateGroup if (item.ImageFileHolder.LastWriteTime is null) continue; if (item.Property is not null) - results.Add(new(item, item.Property.LastWriteTime.Ticks, minimumDateTime.Value.Ticks, destinationCollection.ToArray())); + results.Add(new(item, item.Property.LastWriteTime.Ticks, minimumDateTime.Ticks, destinationCollection.ToArray())); else - results.Add(new(item, item.ImageFileHolder.LastWriteTime.Value.Ticks, minimumDateTime.Value.Ticks, destinationCollection.ToArray())); + results.Add(new(item, item.ImageFileHolder.LastWriteTime.Value.Ticks, minimumDateTime.Ticks, destinationCollection.ToArray())); } return results; } diff --git a/Drag-Drop/Form.cs b/Drag-Drop/Form.cs index 4b49858..d6308dd 100644 --- a/Drag-Drop/Form.cs +++ b/Drag-Drop/Form.cs @@ -453,7 +453,7 @@ public partial class Form : System.Windows.Forms.Form { RenameFilesInDirectories(directories); string? parentDirectory = Path.GetDirectoryName(directories[0]); - if (parentDirectory is not null) + if (parentDirectory is not null && parentDirectory != Path.GetPathRoot(directories[0])) _ = IPath.DeleteEmptyDirectories(parentDirectory); } }