コード例 #1
0
ファイル: CAASmsEventTypeForm.cs プロジェクト: jecus/Cas
        /// <summary>
        /// Возвращает значение, показывающее были ли изменения в данном элементе управления
        /// </summary>
        /// <returns></returns>
        private bool GetChangeStatus(CAASmsEventType obj)
        {
            if (textBoxDescription.Text != obj.Description || textBoxName.Text != obj.FullName)
            {
                return(true);
            }

            //Проверка на содержание объекта в коллекции
            IEnumerable <CAASmsConditionControl> conds = flowLayoutPanelConditions.Controls.OfType <CAASmsConditionControl>();

            if (conds.Select(scc => _smsEventType.EventConditions.GetItemById(scc.EventCondition.ItemId)).Any(r => r == null))
            {
                return(true);
            }
            //Проверка на null-значение объекта находящагося в коллекции при не-null-значении объекта в контроле
            if (conds.Any(cond => _smsEventType.EventConditions.GetItemById(cond.EventCondition.ItemId).Value == null &&
                          cond.ConditionValue != null))
            {
                return(true);
            }

            //Проверка эквивалентность значений объектов в коллекции и контролах
            if (conds.Any(cond => !_smsEventType.EventConditions.GetItemById(cond.EventCondition.ItemId).Value.Equals(cond.ConditionValue != null)))
            {
                return(true);
            }


            IEnumerable <EventTypeRiskLevelChangeRecord> records =
                listViewCompliance.Items
                .OfType <ListViewItem>()
                .Where(lvi => lvi.Tag != null && lvi.Tag is EventTypeRiskLevelChangeRecord)
                .Select(lvi => lvi.Tag as EventTypeRiskLevelChangeRecord);

            foreach (var changeRecord in records)
            {
                var r = _smsEventType.ChangeRecords.GetItemById(changeRecord.ItemId);
                if (r == null || !r.Equals(changeRecord))
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #2
0
ファイル: CAASmsEventTypeForm.cs プロジェクト: jecus/Cas
        /// <summary>
        /// Применить к объекту сделанные изменения на контроле.
        /// Если не все данные удовлетворяют формату ввода (например при вводе чисел), свойства объекта не изменяются, возвращается false
        /// Вызов base.ApplyChanges() обязателен
        /// </summary>
        /// <returns></returns>
        private void ApplyChanges(CAASmsEventType obj)
        {
            obj.Description = textBoxDescription.Text;
            obj.FullName    = textBoxName.Text;

            obj.EventConditions.Clear();
            foreach (var CAAsmsConditionControl in flowLayoutPanelConditions.Controls.OfType <CAASmsConditionControl>())
            {
                CAAsmsConditionControl.ApplyChanges();
                obj.EventConditions.Add(CAAsmsConditionControl.EventCondition);
            }

            IEnumerable <CAAEventTypeRiskLevelChangeRecord> records =
                listViewCompliance.Items
                .OfType <ListViewItem>()
                .Where(lvi => lvi.Tag != null && lvi.Tag is CAAEventTypeRiskLevelChangeRecord)
                .Select(lvi => lvi.Tag as CAAEventTypeRiskLevelChangeRecord);

            obj.ChangeRecords.Clear();
            obj.ChangeRecords.AddRange(records);
        }
コード例 #3
0
ファイル: CAASmsEventTypeForm.cs プロジェクト: jecus/Cas
 ///<summary>
 /// Конструктор по умолчанию
 ///</summary>
 public CAASmsEventTypeForm(CAASmsEventType smsEventType) : this()
 {
     _smsEventType = smsEventType;
     SetHeaders();
     FillControls();
 }