/// <summary>Отмена последнего изменения</summary> public static bool Revert() { if (prevState == null || prevState.Project == null) { return(false); } // просто изменения if (prevState.IsDelete == false) { // Сохраняем на сервер if (!ServiceManager.ChangeProject(prevState.Project.GetAgrProject())) { MessageBox.Show("Не удалось сохранить изменения на сервер", "Внимание", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } var msg = string.Format("Отмена изменений в проекте: '{0}'", prevState.Project.ID); EventMessages.Insert(0, new EventMessage(DateTime.Now, prevState.Project.ProjectID, msg)); prevState = null; } else { EventMessages.Insert(0, new EventMessage(DateTime.Now, prevState.Project.ProjectID, "Востановление удаленного проекта не поддерживается")); } return(true); }
/// <summary>Изменение настроек проекта</summary> static void ChangeProjectPropety(int projectId, ProjectPropertyType type, object value, bool isSendToServer = false) { lock (projects) { var project = projects.SingleOrDefault(x => x.ProjectID == projectId); if (project == null) { return; } // копия состояния Project projectPreviesState = null; if (isSendToServer) { projectPreviesState = project.Clone(); } project.SetValue(type, value); if (isSendToServer) { // сохраняем изменения в буфер prevState = new ProjectUndoBuffer { Project = projectPreviesState }; // Сохраняем на сервер if (!ServiceManager.ChangeProject(project.GetAgrProject())) { MessageBox.Show("Не удалось сохранить изменения на сервер", "Внимание", MessageBoxButton.OK, MessageBoxImage.Error); return; } } var sValue = ""; if (value != null && !(value is IEnumerable)) { sValue = value.ToString(); } var msg = string.Format("Изменения в проекте: '{0}' тип изменения: '{1}' {2}", project.ID, Project.GetDescription(type), (string.IsNullOrEmpty(sValue) ? "" : "значение: '" + sValue + "'")); EventMessages.Insert(0, new EventMessage(DateTime.Now, project.ProjectID, msg)); // если не на этом компе изменилось то ставим if (!isSendToServer) { // Ставим что новый проект TrayIconManager.SetBaloonTip(string.Format("Изменения в проекте: '{0}'", project.ID), 5); TrayIconManager.SetMessageDefault(); } } }
/// <summary>Удаляем проект</summary> public static bool TryRemoveProject(int projectId) { LogManager.LogInfo(unit, string.Format("Удаляем проект с ID: {0}", projectId)); if (!ServiceManager.RemoveProject(projectId)) { return(false); } lock (projects) { var project = projects.SingleOrDefault(x => x.ProjectID == projectId); if (project != null) { prevState = new ProjectUndoBuffer { IsDelete = true, Project = project.Clone() } } ; } return(true); }