using View_by_Distance.Shared.Models; using View_by_Distance.Shared.Models.Stateless.Methods; namespace View_by_Distance.Map.Models.Stateless; internal abstract class LookForAbandonedLogic { internal static void LookForAbandoned(Property.Models.Configuration propertyConfiguration, List distinctFilteredFileNameFirstSegments, string directory, string directoryName) { FilePath filePath; FileHolder fileHolder; string fileNameFirstSegment; List renameCollection = []; string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories); foreach (string file in files) { fileHolder = IFileHolder.Get(file); filePath = FilePath.Get(propertyConfiguration, fileHolder, index: null); fileNameFirstSegment = fileHolder.NameWithoutExtension.Split('.')[0]; if (!filePath.IsIntelligentIdFormat && filePath.SortOrder is null) continue; if (distinctFilteredFileNameFirstSegments.Contains(fileNameFirstSegment)) continue; renameCollection.Add(file); } if (renameCollection.Count > 0) { if (directoryName.Length == 2) IDirectory.MoveFiles(renameCollection, directoryName, $"{directoryName[0]}abd{directoryName[^1]}"); else if (directoryName.Length == 4) IDirectory.MoveFiles(renameCollection, directoryName, $"{directoryName[..2]}abd{directoryName[^2..]}"); else throw new NotSupportedException(); } } internal static void LookForAbandoned(Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, List distinctFilteredFileNameFirstSegments) { string[] directories = Directory.GetDirectories(bResultsFullGroupDirectory, "*", SearchOption.TopDirectoryOnly); foreach (string directory in directories) { string? directoryName = Path.GetFileName(directory); if (string.IsNullOrEmpty(directoryName) || (directoryName.Length != 2 && directoryName.Length != 4)) continue; LookForAbandoned(propertyConfiguration, distinctFilteredFileNameFirstSegments, directory, directoryName); } } }