Example #1
0
        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, "Ошибка в редактировании подразделения");
            }
        }