using View_by_Distance.Shared.Models; using View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Drag_Drop; static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { ApplicationConfiguration.Initialize(); Application.Run(new Form()); } private static Item[] GetFilterItems(Models.Configuration configuration, Container container) { List results = new(); foreach (Item item in container.Items) { if (item.ImageFileHolder is not null && (item.Abandoned is null || !item.Abandoned.Value) && item.ValidImageFormatExtension && !configuration.IgnoreExtensions.Contains(item.ImageFileHolder.ExtensionLowered)) results.Add(item); } return results.ToArray(); } private static bool IsIgnoreRelativePath(Models.Configuration configuration, string directory) { bool result = false; string? checkDirectory = Path.GetFullPath(directory); for (int i = 0; i < int.MaxValue; i++) { if (configuration.IgnoreRelativePaths.Contains(Path.GetFileName(checkDirectory))) { result = true; break; } checkDirectory = Path.GetDirectoryName(checkDirectory); if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == configuration.PropertyConfiguration.RootDirectory) break; } return result; } public static List GetCollection(Models.Configuration configuration, Container[] containers) { List results = new(); bool? isWrongYear; Item[] filteredItems; DateTime minimumDateTime; MappingFromItem mappingFromItem; foreach (Container container in containers) { if (!container.Items.Any()) continue; if (configuration.IgnoreRelativePaths.Any(l => container.SourceDirectory.Contains(l)) && IsIgnoreRelativePath(configuration, container.SourceDirectory)) continue; filteredItems = GetFilterItems(configuration, container); if (!filteredItems.Any()) continue; foreach (Item item in filteredItems) { if (item.Property?.Id is null || item.ImageFileHolder is null) continue; minimumDateTime = IProperty.GetMinimumDateTime(item.Property); (isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime); mappingFromItem = new(item.Property.Id.Value, item.ImageFileHolder, isWrongYear, minimumDateTime, item.RelativePath, item.ImageFileHolder); results.Add(mappingFromItem); } } return results; } }