Drag-Drop-Move

This commit is contained in:
2023-05-03 18:12:50 -07:00
parent 07ecbeb76c
commit e6acce3852
24 changed files with 853 additions and 160 deletions

View File

@ -7,16 +7,16 @@ internal abstract class Container
private record FilePair(string Path, string? Directory, bool IsUnique, List<string> Collection, Models.Item Item) { }
internal static DateTime[] GetContainerDateTimes(Models.Item[] filteredItems)
internal static DateTime[] GetContainerDateTimes(IEnumerable<Models.Item> items)
{
DateTime[] results;
DateTime? containerMinimumDateTime;
DateTime? containerMaximumDateTime;
containerMinimumDateTime = (from l in filteredItems select l.ImageFileHolder.LastWriteTime).Min();
containerMinimumDateTime = (from l in items select l.ImageFileHolder.LastWriteTime).Min();
if (containerMinimumDateTime is null)
containerMaximumDateTime = null;
else
containerMaximumDateTime = (from l in filteredItems select l.ImageFileHolder.LastWriteTime).Max();
containerMaximumDateTime = (from l in items select l.ImageFileHolder.LastWriteTime).Max();
if (containerMinimumDateTime is null || containerMaximumDateTime is null)
results = Array.Empty<DateTime>();
else
@ -94,10 +94,7 @@ internal abstract class Container
filePairs = IDirectory.GetFiles(filesCollection, fileNamesToFiles, extension, compareFileNamesToFiles);
renamed += IDirectory.MaybeMove(propertyConfiguration.RootDirectory, propertyConfiguration.ResultAllInOne, filePairs, aPropertySingletonDirectory, extension);
if (renamed == 0)
{
_ = IPath.DeleteEmptyDirectories(aPropertySingletonDirectory);
break;
}
}
if (filePairs is null || jsonFilesCollection is null || compareFileNamesToFiles is null)
throw new NullReferenceException(nameof(filePairs));
@ -228,7 +225,7 @@ internal abstract class Container
return (collection.Count, results.ToArray());
}
internal static List<int> GetFilteredDistinct(Properties.IPropertyConfiguration propertyConfiguration, Models.Container[] containers)
internal static List<int> GetFilteredDistinctIds(Properties.IPropertyConfiguration propertyConfiguration, Models.Container[] containers)
{
List<int> results = new();
Models.Item[] filteredItems;
@ -251,4 +248,37 @@ internal abstract class Container
return results;
}
internal static List<Models.Item> GetItems(Properties.IPropertyConfiguration propertyConfiguration, Models.Container[] containers, bool distinctItems, bool filterItems)
{
List<Models.Item> results = new();
List<int> distinct = new();
IEnumerable<Models.Item> filteredItems;
foreach (Models.Container container in containers)
{
if (!container.Items.Any())
continue;
if (!filterItems)
filteredItems = container.Items;
else
{
filteredItems = GetFilterItems(propertyConfiguration, container);
if (!filteredItems.Any())
continue;
}
foreach (Models.Item item in filteredItems)
{
if (item.Property?.Id is null || item.ResizedFileHolder is null)
continue;
if (distinctItems)
{
if (distinct.Contains(item.Property.Id.Value))
continue;
distinct.Add(item.Property.Id.Value);
}
results.Add(item);
}
}
return results;
}
}