namespace View_by_Distance.Shared.Models.Stateless.Methods;

public interface IDirectory
{

    char TestStatic_GetDirectory(string fileName) =>
        GetDirectory(fileName);
    static char GetDirectory(string fileName) => fileName.Split('-').Length > 2 ? '-' : fileName.Split('.')[0][^1];

    int TestStatic_GetDirectory(char directory) =>
        GetDirectory(directory);
    static int GetDirectory(char directory) => directory == '-' ? 10 : int.Parse(directory.ToString());

    List<string[]> TestStatic_GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter) =>
        GetFilesCollection(directory, directorySearchFilter, fileSearchFilter);
    static List<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter) =>
        XDirectory.GetFilesCollection(directory, directorySearchFilter, fileSearchFilter);

    IReadOnlyDictionary<string, List<string>> TestStatic_GetFilesKeyValuePairs(List<string[]> filesCollection) =>
        GetFilesKeyValuePairs(filesCollection);
    static IReadOnlyDictionary<string, List<string>> GetFilesKeyValuePairs(List<string[]> filesCollection) =>
        XDirectory.GetFilesKeyValuePairs(filesCollection);

    int TestStatic_LookForAbandoned(List<string[]> jsonFilesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension) =>
        LookForAbandoned(jsonFilesCollection, fileNamesToFiles, extension);
    static int LookForAbandoned(List<string[]> jsonFilesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension) =>
        XDirectory.LookForAbandoned(jsonFilesCollection, fileNamesToFiles, extension);

    int TestStatic_MaybeMove(string directory, string resultAllInOne, List<FilePair> filePairs, string jsonGroupDirectory, string extension) =>
        MaybeMove(directory, resultAllInOne, filePairs, jsonGroupDirectory, extension);
    static int MaybeMove(string directory, string resultAllInOne, List<FilePair> filePairs, string jsonGroupDirectory, string extension) =>
        XDirectory.MaybeMove(directory, resultAllInOne, filePairs, jsonGroupDirectory, extension);

    List<FilePair> TestStatic_GetFiles(List<string[]> filesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension, IReadOnlyDictionary<string, List<string>> compareFileNamesToFiles) =>
        GetFiles(filesCollection, fileNamesToFiles, extension, compareFileNamesToFiles);
    static List<FilePair> GetFiles(List<string[]> filesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension, IReadOnlyDictionary<string, List<string>> compareFileNamesToFiles) =>
        XDirectory.GetFiles(filesCollection, fileNamesToFiles, extension, compareFileNamesToFiles);

}