public static void SaveTasks(SyncTasksModel model) { XDocument syncTasks = new XDocument(); XElement tasks = new XElement("Задачи", new XAttribute("Файл_логов", model.LogPath)); foreach (SyncTask task in model.SyncTasks) { XElement xSyncTask = new XElement("Задача"); XElement localPaths = new XElement("Папки_на_компьютере"); foreach (string path in task.LocalPaths) { localPaths.Add(new XElement("Папка", path)); } xSyncTask.Add(localPaths); xSyncTask.Add(new XElement("Папка_на_сервере", task.ServerDirectoryUri.ToString())); xSyncTask.Add(new XElement("Дата_создания", task.CreateDate.ToString())); XElement lastDate = new XElement("Дата_последней_синхронизации"); if (task.LastSyncDate == null) { lastDate.Value = ""; } else { lastDate.Value = task.LastSyncDate.ToString(); } xSyncTask.Add(lastDate); xSyncTask.Add(new XElement("Количество_версий", task.BackupCount.ToString())); XElement xTimer = new XElement("Таймер"); xTimer.Add(new XElement("Синхронизация", task.SyncTimer.IsEnabled)); xTimer.Add(new XElement("Дата_начала_синхнонизации", task.SyncTimer.StartDate)); xTimer.Add(new XElement("Тип_синхронизации", task.SyncTimer.Type)); xTimer.Add(new XElement("Период_синхронизации", task.SyncTimer.Period)); xSyncTask.Add(xTimer); tasks.Add(xSyncTask); } syncTasks.Add(tasks); try { string path = Settings.FilesSavePath + model.UserServer + ".xml"; if (!Directory.Exists(Settings.FilesSavePath)) { Directory.CreateDirectory(Settings.FilesSavePath); } syncTasks.Save(path); } catch (Exception e) { LogController.Error(logger, e, $"Не удалось сохранить файл {model.UserServer}.xml"); } LogController.Info(logger, $"Файл {model.UserServer}.xml успешно сохранен"); }
public static bool LoadSyncTasks() { SyncTasksModel model = XmlParser.LoadTasks(UserServer); SyncTasks = model.SyncTasks; SetLogPath(model.LogPath, UserServer); bool result = model.LogPath != ""; return(result); }
public static void SaveSyncTasks() { SyncTasksModel model = new SyncTasksModel { LogPath = LogPath, SyncTasks = SyncTasks, UserServer = UserServer }; XmlParser.SaveTasks(model); }
public static SyncTasksModel LoadTasks(string userServer) { SyncTasksModel model = new SyncTasksModel { UserServer = userServer }; try { string filePath = Settings.FilesSavePath + userServer + ".xml"; XDocument syncTasks = XDocument.Load(filePath); string logPath = syncTasks.Root.Attribute("Файл_логов").Value; List <SyncTask> tasks = new List <SyncTask>(); foreach (XElement task in syncTasks.Root.Elements("Задача")) { List <string> paths = new List <string>(); foreach (XElement path in task.Element("Папки_на_компьютере").Elements("Папка")) { paths.Add(path.Value); } Uri serverDirectoryUri = new Uri(task.Element("Папка_на_сервере").Value); DateTime createDate = DateTime.MinValue; if (DateTime.TryParse(task.Element("Дата_создания").Value, out DateTime cdate)) { createDate = cdate; } DateTime?lastSyncDate = null; if (DateTime.TryParse(task.Element("Дата_последней_синхронизации").Value, out DateTime ldate)) { lastSyncDate = ldate; } int backupCount = int.Parse(task.Element("Количество_версий").Value); SyncTimer syncTimer = new SyncTimer(); XElement timer = task.Element("Таймер"); if (bool.TryParse(timer.Element("Синхронизация").Value, out bool isEnabled)) { syncTimer.IsEnabled = isEnabled; } if (DateTime.TryParse(timer.Element("Дата_начала_синхнонизации").Value, out DateTime startDate)) { syncTimer.StartDate = startDate; } else { syncTimer.StartDate = DateTime.MinValue; } string timerType = timer.Element("Тип_синхронизации").Value; switch (timerType) { case "EveryDay": syncTimer.Type = SyncTimerType.EveryDay; break; case "Custom": syncTimer.Type = SyncTimerType.Custom; break; case "Once": default: syncTimer.Type = SyncTimerType.Once; break; } if (TimeSpan.TryParse(timer.Element("Период_синхронизации").Value, out TimeSpan period)) { syncTimer.Period = period; } SyncTask syncTask = new SyncTask(paths, serverDirectoryUri, createDate, syncTimer, lastSyncDate, backupCount); tasks.Add(syncTask); } model.SyncTasks = tasks; model.LogPath = logPath; LogController.Info(logger, $"Файл {userServer}.xml успешно загружен"); } catch (Exception e) { LogController.Error(logger, e, $"Не удалось загрузить файл {userServer}.xml"); } return(model); }