using View_by_Distance.Shared.Models;

namespace View_by_Distance.Drag_Drop;

public class Program
{
    /// <summary>
    ///  The main entry point for the application.
    /// </summary>
    [STAThread]
    private static void Main()
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new DragDropSearch());
    }

    private static Item[] GetFilterItems(Models.Configuration configuration, Container container)
    {
        List<Item> results = [];
        foreach (Item item in container.Items)
        {
            if (item.IsValidImageFormatExtension
                && !configuration.IgnoreExtensions.Contains(item.FilePath.ExtensionLowered))
                results.Add(item);
        }
        return results.ToArray();
    }

    public static List<Item> GetItemCollection(Models.Configuration configuration, Container[] containers)
    {
        List<Item> results = [];
        Item[] filteredItems;
        foreach (Container container in containers)
        {
            if (container.Items.Count == 0)
                continue;
            filteredItems = GetFilterItems(configuration, container);
            if (filteredItems.Length == 0)
                continue;
            foreach (Item item in filteredItems)
                results.Add(item);
        }
        return results;
    }

}