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; }
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; }