/// <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 void TryCheckChangies() { try { bool isError; bool isReload; var date = DateTime.Now; LogManager.LogInfo(unit, string.Format("Загрузить обновления от: {0}", dateLastRequest)); var changedProjects = ServiceManager.GetChangies(dateLastRequest, out isReload, out isError); if (isError) { return; } // Запрос на перечитывание if (isReload) { ReloadProjectsAsync(); return; } dateLastRequest = date; if (changedProjects == null) { return; } var isNeedUpdate = false; foreach (var p in changedProjects) { Project pExist = null; lock (projects) pExist = projects.SingleOrDefault(x => x.ProjectID == p.ProjectID); if (pExist != null) // Если есть такой проект добавляем изменения { var changies = Project.GetChangies(pExist, p); foreach (var c in changies) { isNeedUpdate = true; ChangeProjectPropety(pExist.ProjectID, c.Key, c.Value, false); } } else { isNeedUpdate = true; projects.Add(p); var msg = string.Format("Добавлен новый проект: '{0}' от {1} заказчик: {2} {3}/{4} ", p.ID, p.TimeBegin, p.Customer, p.Product, p.Options); EventMessages.Insert(0, new EventMessage(DateTime.Now, p.ProjectID, msg)); // Ставим что новый проект TrayIconManager.SetBaloonTip("Новый проект", 5); TrayIconManager.SetMessageDefault(); } } if (isNeedUpdate) { UpdateProjects(); } } catch (Exception ex) { LogManager.LogError(unit, "Ошибка обновления", ex); } }