public async void UpdateVisibleEmployees(DepartmentCS department) { try { var employees = await _serviceManager.GetEmployeesByDepartment(department.ID); var selectedRows = MainForm.EmployeeDataGridView.SelectedRows[0].Index; //!! index вне пределов массива, если таблица пустая MainForm.EmployeeDataGridView.Rows.Clear(); MainForm.EmployeeDataGridView.SelectEmployeeToGrid(employees.ToArray()); MainForm.EmployeeDataGridView.ClearSelection(); MainForm.EmployeeDataGridView.Rows[selectedRows].Selected = true; } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка обновления данных"); } }
private void MenuTray_DeleteMenuItem_DropDownOpened(object sender, EventArgs e) { DepartmentCS selectedDepartment = null; if (DepartmentStructureTreeView.SelectedNode != null) { selectedDepartment = (DepartmentCS)DepartmentStructureTreeView.SelectedNode.Tag; deleteDepartmentToolStripMenuItem.Text = $"Удаление подразделение \"{selectedDepartment.ToString()}\""; deleteDepartmentToolStripMenuItem.Enabled = true; } else { deleteDepartmentToolStripMenuItem.Text = "Подразделение не выбрано"; deleteDepartmentToolStripMenuItem.Enabled = false; } EmployeeCS selectedEmpl = null; if (EmployeeDataGridView.SelectedRows.Count > 0 && EmployeeDataGridView.SelectedRows[0].Index != EmployeeDataGridView.Rows.Count - 1) { selectedEmpl = (EmployeeCS)EmployeeDataGridView.SelectedRows[0].Tag; deleteEmployeeToolStripMenuItem.Text = $"Удаление сотрудника \"{selectedEmpl.SurName} {selectedEmpl.FirstName} - {selectedEmpl.Position}\""; deleteEmployeeToolStripMenuItem.Enabled = true; } else { deleteEmployeeToolStripMenuItem.Text = "Сотрудник не выбран"; deleteEmployeeToolStripMenuItem.Enabled = false; } }
/// <summary> /// Вывести список сотрудников на контрол DataGridView, настроенный через SetUpGrid. Не очищает имеющиеся элементы. /// </summary> /// <param name="grid"></param> /// <param name="department"></param> public async void SelectEmployeeToGrid(DepartmentCS department) { try { MainForm.EmployeeDataGridView.Rows.Clear(); var employees = await _serviceManager.GetEmployeesByDepartment(department.ID); MainForm.EmployeeDataGridView.SelectEmployeeToGrid(employees.ToArray()); } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка в загрузке сотрудников"); } }
public void EditDepartment(DepartmentCS oldVersion, DepartmentCS newVersion) { TreeNode nodeToChange = null, parentNode = null; nodeToChange = this.Nodes.FindByTag(oldVersion); if (newVersion.ParentDepartmentID.HasValue) { parentNode = this.Nodes.FindByTag(new DepartmentCS() { ID = newVersion.ParentDepartmentID.Value }); } if (nodeToChange == null) { return; } if (oldVersion.ParentDepartmentID != newVersion.ParentDepartmentID) { this.Nodes.Remove(nodeToChange); if (newVersion.ParentDepartmentID == null) { this.Nodes.Add(nodeToChange); } else { parentNode.Nodes.Add(nodeToChange); } } nodeToChange.Text = newVersion.ToString(); nodeToChange.Tag = newVersion; this.SelectedNode = nodeToChange; }
private void GetSubDepartments(List <DepartmentCS> allDeps, DepartmentCS rootDep) { allDeps.Add(rootDep); foreach (var dep in rootDep.ChildDepartments) { GetSubDepartments(allDeps, dep); } }
public async Task EditDepartment(DepartmentCS department) { _client = new DALServiceClient(); var t = _mapper.Map <Department_dto>(department); await _client.EditDepartmentAsync(t, CurrentConnectionString); _client.Close(); }
public async Task <Guid> AddDepartment(DepartmentCS department) { _client = new DALServiceClient(); var t = _mapper.Map <Department_dto>(department); var result = await _client.AddDepartmentAsync(t, CurrentConnectionString); _client.Close(); return(result); }
private void LoccalyUpdateDepartments(DepartmentCS oldVersion, DepartmentCS newVersion) { // обновление внутренней структуры данных var oldDep = GetDepartmentList().Single(dep => dep.ID == oldVersion.ID); oldDep.Name = newVersion.Name; oldDep.Code = newVersion.Code; // обновление отображения данных MainForm.DepartmentStructureTreeView.EditDepartment(oldVersion, newVersion); }
public static TreeNode FindByTag(this TreeNodeCollection nc, DepartmentCS department) { TreeNode result = null; foreach (TreeNode node in nc) { result = SearchIn(node, department); if (result != null) { break; } } return(result); }
private System.Windows.Forms.TreeNode GetSubNodes(DepartmentCS department) { var node = new System.Windows.Forms.TreeNode() { Name = department.Name, Tag = department, Text = department.ToString() }; foreach (var subDep in department.ChildDepartments) { node.Nodes.Add(GetSubNodes(subDep)); } return(node); }
private void LocallyAddDepartment(DepartmentCS department) { // обновление внутренней структуры данных if (department.ParentDepartmentID == null) { _departmentStructure.Add(department); } else { GetDepartmentList().Single(dep => dep.ID == department.ParentDepartmentID). ChildDepartments.Add(department); } // обновление отображения данных MainForm.DepartmentStructureTreeView.AddDepartment(department); }
private void LocallyDeleteDepartment(DepartmentCS department) { // обновление внутренней структуры данных if (department.ParentDepartmentID != null) { GetDepartmentList().Single(dep => dep.ID == department.ParentDepartmentID) .ChildDepartments.Remove(department); } else { GetDepartmentList().Remove(department); } // обновление отображения данных MainForm.DepartmentStructureTreeView.Nodes.Remove(MainForm.DepartmentStructureTreeView.SelectedNode); }
private static TreeNode SearchIn(TreeNode node, DepartmentCS department) { var t = (DepartmentCS)node.Tag; if (t.ID == department.ID) //ParentDepartmentID { return(node); } foreach (TreeNode subNode in node.Nodes) { var result = SearchIn(subNode, department); if (result != null) { return(result); } } return(null); }
public async void AddEmployeeShowDialog(DepartmentCS toDepartment) { try { if (AddEmployeeForm == null) { AddEmployeeForm = new AddEmployeeForm(); } this.AddEmployeeForm.DepartmentList = this.GetDepartmentList(); this.AddEmployeeForm.SelectedDepartment = toDepartment; this.AddEmployeeForm.Text = "Добавление сотрудника"; if (AddEmployeeForm.ShowDialog() == DialogResult.OK) { var t = (EmployeeCS)AddEmployeeForm.RepresentedValue; t.ID = await _serviceManager.AddEmployee(t); // обновление интерфейса если нужно var selectedDep = (DepartmentCS)MainForm.DepartmentStructureTreeView.SelectedNode.Tag; if (t.DepartmentID == selectedDep.ID) { UpdateVisibleEmployees(selectedDep); } } } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка в добавлении сотрудников"); } }
public async void EditDepartmentShowDialog(DepartmentCS department) { try { if (AddDepartmentForm == null) { AddDepartmentForm = new AddDepartmentForm(); } var allDeps = this.GetDepartmentList(); allDeps.Remove(department); // чтобы нельзя было указать родительским самого себя this.AddDepartmentForm.DepartmentList = allDeps; this.AddDepartmentForm.RepresentedValue = department; this.AddDepartmentForm.Text = "Редактирование подразделения"; if (AddDepartmentForm.ShowDialog() == DialogResult.OK) { var editedDepartment = (DepartmentCS)this.AddDepartmentForm.RepresentedValue; editedDepartment.ID = department.ID; await _serviceManager.EditDepartment(editedDepartment); LoccalyUpdateDepartments(department, editedDepartment); } } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка в редактировании подразделения"); } }
public void AddDepartment(DepartmentCS newDepartment) { var newNode = new System.Windows.Forms.TreeNode() { Name = newDepartment.Name, Tag = newDepartment, Text = newDepartment.ToString() }; if (newDepartment.ParentDepartmentID == null) { this.Nodes.Add(newNode); } else { TreeNode node = this.Nodes.FindByTag(new DepartmentCS() { ID = newDepartment.ParentDepartmentID.Value }); node.Nodes.Add(newNode); } this.SelectedNode = newNode; }
public async void AddDepartmentShowDialog(DepartmentCS toDepartment) { try { if (AddDepartmentForm == null) { AddDepartmentForm = new AddDepartmentForm(); } this.AddDepartmentForm.DepartmentList = this.GetDepartmentList(); this.AddDepartmentForm.SelectedDepartment = toDepartment; this.AddDepartmentForm.Text = "Новое подразделение"; if (AddDepartmentForm.ShowDialog() == DialogResult.OK) { var t = (DepartmentCS)AddDepartmentForm.RepresentedValue; t.ID = await _serviceManager.AddDepartment(t); // обновление интерфейса если нужно LocallyAddDepartment(t); } } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка в добавлении подразделения"); } }
public async void DeleteDepartment(DepartmentCS department) { try { await _serviceManager.DeleteDepartment(department); LocallyDeleteDepartment(department); } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка в удалении подразделения"); } }