예제 #1
0
        private void ButtonChangeClick(object sender, EventArgs e)
        {
            //1. Открывается форма изменения
            if (_selectedVariable == null)
            {
                return;
            }
            var f = new AddChangeVariable(_esCopy, _filePath, _dbCopyFileName, "Изменение переменной", false)
            {
                VarName   = _selectedVariable.Name,
                VarDomain = _selectedVariable.Domains,
                VarType   = _selectedVariable.VarTypes,
                Question  = _selectedVariable.Question
            };

            if (f.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            //2. Если ОК, то выполняется проверка на совпадение
            var same = _esCopy.Variables.Where(x => x.Name.ToLower() == f.VarName.ToLower() &&
                                               x.Domains == f.VarDomain && x.VarTypes == f.VarType && x.Question == f.Question).Select(x => x);

            if (same.Any())
            {
                MessageBox.Show(string.Format("Переменная с таким именем уже существует."));
                return;
            }
            //3. Если переменная используется в правилах, то нельзя менять ее домен
            var error = VariableIsInRule(_selectedVariable);

            if (error != string.Empty && _selectedVariable.Domains != f.VarDomain)
            {
                MessageBox.Show(error, string.Format("Нельзя изменить домен переменной"),
                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }
            //4. Если переменная используется в заключении правил, то нельзя менять ее тип на запрашиваемый
            error = VariablesInConclusion(_selectedVariable);
            if (error != string.Empty && f.VarType.Name == "Запрашиваемая")
            {
                MessageBox.Show(error, string.Format("Нельзя изменить тип переменной на запрашиваемый"),
                                MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }
            //5. Если все ок, то новая переменная добавляется в копию БД
            _selectedVariable.Name     = f.VarName;
            _selectedVariable.Domains  = f.VarDomain;
            _selectedVariable.VarTypes = f.VarType;
            _selectedVariable.Question = f.Question;
            _esCopy.SubmitChanges();
            FillListViewVariables();
            if (!_somethingChanged)
            {
                Text += "*";
            }
            _somethingChanged = true;
        }
예제 #2
0
        private void ButtonAddClick(object sender, EventArgs e)
        {
            //1. Открывается форма добавления
            var f = new AddChangeVariable(_esCopy, _filePath, _dbCopyFileName, "Добавление переменной", true)
            {
                VarName = "", VarType = new VarTypes {
                    Id = 1
                }, Question = ""
            };

            f.EventAddAgain += FOnEventAddAgain;
            f.ShowDialog();
            f.EventAddAgain -= FOnEventAddAgain;
        }