Ejemplo n.º 1
0
        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, "Ошибка в добавлении сотрудников");
            }
        }