using File_Watcher.Models; namespace File_Watcher.Helpers; internal static partial class HelperWaferCounter { internal static bool MoveFile(AppSettings appSettings, ILogger logger) { string[] files; string checkFile; FileInfo fileInfo; string checkDirectory; string[] directories = Directory.GetDirectories(appSettings.FileWatcherConfiguration.WatchDirectory, "*", SearchOption.TopDirectoryOnly); foreach (string directory in directories) { checkDirectory = !appSettings.WaferCounterConfiguration.MatchPath ? appSettings.WaferCounterConfiguration.Destination : Path.Combine(appSettings.WaferCounterConfiguration.Destination, Path.GetFileName(directory)); try { if (!Directory.Exists(checkDirectory)) _ = Directory.CreateDirectory(checkDirectory); files = Directory.GetFiles(directory, "*", SearchOption.TopDirectoryOnly); foreach (string file in files) { fileInfo = new(file); if (new TimeSpan(DateTime.Now.Ticks - fileInfo.LastWriteTime.Ticks).TotalMilliseconds < appSettings.FileWatcherConfiguration.MillisecondsDelay) continue; checkFile = Path.Combine(checkDirectory, Path.GetFileName(file)); if (File.Exists(checkFile)) continue; try { File.Move(file, checkFile); } catch (Exception ex) { logger.LogError(ex, "Inner loop error!"); } } } catch (Exception ex) { logger.LogError(ex, "Loop error!"); } } return true; } }