예제 #1
0
        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, "Ошибка обновления данных");
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        /// <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, "Ошибка в загрузке сотрудников");
            }
        }
예제 #4
0
        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;
        }
예제 #5
0
 private void GetSubDepartments(List <DepartmentCS> allDeps, DepartmentCS rootDep)
 {
     allDeps.Add(rootDep);
     foreach (var dep in rootDep.ChildDepartments)
     {
         GetSubDepartments(allDeps, dep);
     }
 }
예제 #6
0
        public async Task EditDepartment(DepartmentCS department)
        {
            _client = new DALServiceClient();
            var t = _mapper.Map <Department_dto>(department);
            await _client.EditDepartmentAsync(t, CurrentConnectionString);

            _client.Close();
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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);
        }
예제 #11
0
 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);
 }
예제 #12
0
        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);
        }
예제 #13
0
        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);
        }
예제 #14
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, "Ошибка в добавлении сотрудников");
            }
        }
예제 #15
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, "Ошибка в редактировании подразделения");
            }
        }
예제 #16
0
        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;
        }
예제 #17
0
        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, "Ошибка в добавлении подразделения");
            }
        }
예제 #18
0
        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, "Ошибка в удалении подразделения");
            }
        }