public static void Main() { var progWatch = Stopwatch.StartNew(); try { var appConfig = ConfigurationManager.AppSettings; XmlConfigurator.Configure(); // Строка соединения с БД. var сonnectionString = appConfig["connStr"]; // Сущности. var entities = appConfig["entities"].Split(','); var webDavProvider = new WebDavProvider(appConfig["serverUrl"], appConfig["nextCloudUserName"], appConfig["nextCloudPassword"]); var folderService = new FolderService(webDavProvider); var dbConnection = new SqlConnection(сonnectionString); var fileService = new FileService(webDavProvider); var dbService = new DBService(dbConnection); Utils.LogInfoAndWriteToConsole("Приложение стартовало."); var allFolders = new HashSet <string>(); foreach (var entity in entities) { var from = int.Parse(appConfig["fromNumber"]); var totalFiles = dbService.GetFilesCount(entity, from.ToString()); var entityFilesTotalSize = 0; if (totalFiles < from) { totalFiles = from + 1; } while (from < totalFiles) { Utils.LogInfoAndWriteToConsole($"Получаем файлы {entity}File из БД"); var watch = Stopwatch.StartNew(); var fileList = dbService.GetFilesFromDb(entity, from.ToString()).ToList(); watch.Stop(); if (fileList.Count > 0) { Utils.LogInfoAndWriteToConsole($"[ Получено {fileList.Count.ToString()} файлов {entity}File за {watch.Elapsed.Hours.ToString()} ч {watch.Elapsed.Minutes.ToString()} м {watch.Elapsed.Seconds.ToString()} с {watch.Elapsed.Milliseconds.ToString()} мс ]"); fileList.ToList().ForEach(file => entityFilesTotalSize += file.Data.Length); var folders = FillFolderList(fileList).ToList(); var notCreatedFolders = folders.Where(folder => !allFolders.Contains(folder)).ToList(); CreateFoldersAndUploadFiles(fileService, folderService, notCreatedFolders, fileList).Wait(); folders.ForEach(folder => allFolders.Add(folder)); from = fileList[fileList.Count - 1].Number + 1; } else { Utils.LogInfoAndWriteToConsole($"[ Получено 0 файлов {entity}File ]"); break; } } Utils.LogInfoAndWriteToConsole($">>> Файлы {entity}File успешно выгружены <<<"); Utils.LogInfoAndWriteToConsole($">>> Объем выгруженных файлов {entity}File: {entityFilesTotalSize / 1024.0:####0.######} КБ ({entityFilesTotalSize / (1024.0 * 1024.0):####0.######} МБ) <<<"); } progWatch.Stop(); Utils.LogInfoAndWriteToConsole($"Приложение успешно завершило работу за {progWatch.Elapsed.Hours.ToString()} ч {progWatch.Elapsed.Minutes.ToString()} м {progWatch.Elapsed.Seconds.ToString()} с {progWatch.Elapsed.Milliseconds.ToString()} мс"); } catch (Exception ex) { Utils.LogInfoAndWriteToConsole("Приложение завершило работу с ошибкой."); ExceptionHandler.LogExceptionToConsole(ex); } }
public FileService(WebDavProvider webDavProvider) { _webDavProvider = webDavProvider; }
public FolderService(WebDavProvider webDavProvider) { _webDavProvider = webDavProvider; }