示例#1
0
        /// <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();
                }
            }
        }
示例#2
0
        /// <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);
            }
        }