2022-07-24 12:35:00 -07:00

50 lines
2.2 KiB
C#

namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class FileSystem
{ // ...
internal static List<Models.FileSystem> GetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, string[] files, bool all)
{
List<Models.FileSystem> results = new();
Models.Face face;
DirectoryInfo directoryInfo;
Models.FileSystem fileSystem;
Models.FaceFileSystem faceFileSystem;
IEnumerator<string> subDirectoryFiles;
List<Models.FaceFileSystem> faceFileSystemCollection = new();
for (int i = 0; i < directories.Length; i++)
{
subDirectoryFiles = Directory.EnumerateFiles(directories[i], "*.json", SearchOption.TopDirectoryOnly).GetEnumerator();
if (!subDirectoryFiles.MoveNext())
{
directoryInfo = new(directories[i]);
fileSystem = new DirectoryFileSystem(directoryInfo);
results.Add(fileSystem);
}
else
{
for (int j = 0; j < int.MaxValue; j++)
{
face = Face.GetFace(subDirectoryFiles.Current);
faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, subDirectoryFiles.Current, face);
if (!all)
results.Add(faceFileSystem);
else
faceFileSystemCollection.Add(faceFileSystem);
if (!all || !subDirectoryFiles.MoveNext())
break;
}
}
}
for (int i = 0; i < files.Length; i++)
{
face = Face.GetFace(files[i]);
faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, files[i], face);
results.Add(faceFileSystem);
}
if (all)
results.AddRange(faceFileSystemCollection);
return results;
}
}