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 distinctFilteredIds, string directory, string directoryName) { string fileNameWithoutExtension; bool nameWithoutExtensionIsIdFormat; List renameCollection = []; bool nameWithoutExtensionIsPaddedIdFormat; short sortOrderOnlyLengthIndex = IDirectory.GetSortOrderOnlyLengthIndex(propertyConfiguration.Offset); string[] distinctFilteredIdsValues = distinctFilteredIds.Select(l => l.ToString()).ToArray(); string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories); foreach (string file in files) { fileNameWithoutExtension = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(file))); nameWithoutExtensionIsIdFormat = IProperty.NameWithoutExtensionIsIdFormat(fileNameWithoutExtension); nameWithoutExtensionIsPaddedIdFormat = IDirectory.NameWithoutExtensionIsPaddedIdFormat(fileNameWithoutExtension, sortOrderOnlyLengthIndex); if (!nameWithoutExtensionIsIdFormat && !nameWithoutExtensionIsPaddedIdFormat) continue; if (distinctFilteredIdsValues.Contains(fileNameWithoutExtension)) 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 distinctFilteredIds) { 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, distinctFilteredIds, directory, directoryName); } } }