Beispiel #1
0
        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 успешно сохранен");
        }
Beispiel #2
0
        public static bool LoadSyncTasks()
        {
            SyncTasksModel model = XmlParser.LoadTasks(UserServer);

            SyncTasks = model.SyncTasks;
            SetLogPath(model.LogPath, UserServer);

            bool result = model.LogPath != "";

            return(result);
        }
Beispiel #3
0
        public static void SaveSyncTasks()
        {
            SyncTasksModel model = new SyncTasksModel
            {
                LogPath    = LogPath,
                SyncTasks  = SyncTasks,
                UserServer = UserServer
            };

            XmlParser.SaveTasks(model);
        }
Beispiel #4
0
        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);
        }