private void FillDepartmentsTreeView() { GlobalVars.Log.Info("MainForm: Заполнение DepartmentsTreeView"); TreeView_Departments.Nodes.Clear(); using (var db = new TestDBEntities()) { var rootDepartments = db.Department.Where(x => x.ParentDepartmentID == null); foreach (var rootDepartment in rootDepartments) { var rootNode = new TreeNode($"{rootDepartment.Code} / {rootDepartment.Name}") { Name = rootDepartment.ID.ToString() }; TreeView_Departments.Nodes.Add(rootNode); FillDepartmentsChildTreeView(rootNode, rootDepartment); } } Label_DepartmentInfoID.Text = ""; Label_DepartmentInfoName.Text = ""; Label_DepartmentInfoCodeName.Text = ""; Button_DeleteDepartment.Enabled = false; Button_EditDepartment.Enabled = false; DataGridView_Employers.DataSource = null; DataGridView_Employers.Columns.Clear(); }
private void FillDataGridViewEmployers() { GlobalVars.Log.Info("MainForm: Заполнение DataGridViewEmployers"); var selectedDepartmentId = new Guid(TreeView_Departments.SelectedNode.Name); using (var db = new TestDBEntities()) { var department = db.Department.First(x => x.ID == selectedDepartmentId); Label_DepartmentInfoID.Text = department.ID.ToString(); Label_DepartmentInfoName.Text = department.Name; Label_DepartmentInfoCodeName.Text = department.Code; Button_DeleteDepartment.Enabled = true; Button_EditDepartment.Enabled = true; DataGridView_Employers.DataSource = db.Empoyee.Where(x => x.DepartmentID == selectedDepartmentId).ToList(); DataGridView_Employers.Columns["Department"].Visible = false; DataGridView_Employers.Columns["DepartmentID"].Visible = false; if (DataGridView_Employers.Columns["Age"] == null) { DataGridView_Employers.Columns.Add("Age", "Age"); } foreach (DataGridViewRow row in DataGridView_Employers.Rows) { row.Cells["Age"].Value = new DateTime(DateTime.Now.Subtract(Convert.ToDateTime(row.Cells["DateOfBirth"].Value.ToString())).Ticks).Year - 1; } foreach (DataGridViewColumn column in DataGridView_Employers.Columns) { column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; } } }
private void Button_RemoveEmployee_Click(object sender, EventArgs e) { GlobalVars.Log.Info("MainForm: Удаление сотрудника"); if (DataGridView_Employers.SelectedRows.Count != 0) { var employeeId = Convert.ToDecimal(DataGridView_Employers.SelectedRows[0].Cells["ID"].Value); using (var db = new TestDBEntities()) { var employee = db.Empoyee.First(x => x.ID == employeeId); if (MessageBox.Show($"Вы действительно хотите удалить сотрудника {employee.FirstName} {employee.SurName} {employee.Patronymic} из базы?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { db.Empoyee.Remove(employee); db.SaveChanges(); FillDataGridViewEmployers(); } } } }
private void Button_DeleteDepartment_Click(object sender, EventArgs e) { GlobalVars.Log.Info("MainForm: Удаление отдела"); using (var db = new TestDBEntities()) { var selectedDepartmentId = new Guid(TreeView_Departments.SelectedNode.Name); var selectedDepartment = db.Department.First(x => x.ID == selectedDepartmentId); if (MessageBox.Show($"Вы действительно хотите удалить отдел \"{selectedDepartment.Code} / {selectedDepartment.Name}\"", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { var departmentsDorDelete = new List <Department>(); RecursiveDeleteDepartmentEmployers(departmentsDorDelete, selectedDepartment, db); db.Department.RemoveRange(departmentsDorDelete); db.SaveChanges(); FillDepartmentsTreeView(); DataGridView_Employers.DataSource = null; DataGridView_Employers.Columns.Clear(); } } }
private void EmployeeInfoEdit_Load(object sender, EventArgs e) { GlobalVars.Log.Info("EmployeeInfoEdit: Загрузка информации о сотруднике"); using (var db = new TestDBEntities()) { var departments = db.Department.ToList(); foreach (var department in departments) { ComboBox_Department.Items.Add($"{department.Code} / {department.Name}"); } if (_employeeId != -1) { var employee = db.Empoyee.First(x => x.ID == _employeeId); TextBox_FirstName.Text = employee.FirstName; TextBox_SurName.Text = employee.SurName; TextBox_Patronymic.Text = employee.Patronymic; DateTimePicker_BirthDate.Value = employee.DateOfBirth; TextBox_DocSeries.Text = employee.DocSeries; TextBox_DocNumber.Text = employee.DocNumber; TextBox_Position.Text = employee.Position; ComboBox_Department.SelectedIndex = departments.FindIndex(x => x.ID == employee.DepartmentID); } else if (_selectedDepartmentId != null) { ComboBox_Department.SelectedIndex = departments.FindIndex(x => x.ID == _selectedDepartmentId); } else { ComboBox_Department.SelectedIndex = -1; } } }
private void DepartmentInfoEditForm_Load(object sender, EventArgs e) { GlobalVars.Log.Info("DepartmentInfoEditForm: Загрузка информации об отделе."); using (var db = new TestDBEntities()) { var departments = db.Department.ToList(); ComboBox_ParentDepartment.Items.Add("Нет"); foreach (var department in departments) { ComboBox_ParentDepartment.Items.Add($"{department.Code} / {department.Name}"); } ComboBox_ParentDepartment.SelectedIndex = 0; if (_departmentId != null) { var department = db.Department.First(x => x.ID == _departmentId); MaskedTextBox_ID.Text = department.ID.ToString(); TextBox_Name.Text = department.Name; TextBox_CodeName.Text = department.Code; if (department.ParentDepartmentID != null) { ComboBox_ParentDepartment.SelectedIndex = departments.FindIndex(x => x.ID == department.ParentDepartmentID) + 1; } } else { MaskedTextBox_ID.Text = Guid.NewGuid().ToString(); } } }
private void RecursiveDeleteDepartmentEmployers(List <Department> departmentlist, Department department, TestDBEntities db) { GlobalVars.Log.Info("MainForm: Рекурсивное удаление сотрудников из удаляемого отдела"); foreach (var childDepartament in department.ChildDepartaments) { RecursiveDeleteDepartmentEmployers(departmentlist, childDepartament, db); } db.Empoyee.RemoveRange(db.Empoyee.Where(x => x.DepartmentID == department.ID)); departmentlist.Add(department); }
private void Button_Save_Click(object sender, EventArgs e) { GlobalVars.Log.Info("EmployeeInfoEdit: Сохранение информации о сотруднике"); if (TextBox_FirstName.Text == "" || TextBox_SurName.Text == "" || TextBox_Position.Text == "" || ComboBox_Department.SelectedIndex == -1) { MessageBox.Show("Не все обязательные поля заполнены!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (DateTimePicker_BirthDate.Value > DateTime.Now) { MessageBox.Show("Дата рождения не может быть больше текущей даты!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { try { using (var db = new TestDBEntities()) { var departments = db.Department.ToList(); if (_employeeId == -1) { db.Empoyee.Add(new Empoyee { FirstName = TextBox_FirstName.Text, SurName = TextBox_SurName.Text, Patronymic = TextBox_Patronymic.Text, DateOfBirth = DateTimePicker_BirthDate.Value, DocSeries = TextBox_DocSeries.Text, DocNumber = TextBox_DocNumber.Text, Position = TextBox_Position.Text, DepartmentID = departments[ComboBox_Department.SelectedIndex].ID }); } else { var employee = db.Empoyee.First(x => x.ID == _employeeId); employee.FirstName = TextBox_FirstName.Text; employee.SurName = TextBox_SurName.Text; employee.Patronymic = TextBox_Patronymic.Text; employee.DateOfBirth = DateTimePicker_BirthDate.Value; employee.DocSeries = TextBox_DocSeries.Text; employee.DocNumber = TextBox_DocNumber.Text; employee.Position = TextBox_Position.Text; employee.DepartmentID = departments[ComboBox_Department.SelectedIndex].ID; } db.SaveChanges(); } this.Close(); } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { GlobalVars.Log.Info(ex, "EmployeeInfoEdit: Ошибка при сохранении информации о сотруднике"); MessageBox.Show($"Возникла ошибка. Возможно некоторые поля заполнены неправильно.\n\n{ex.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
private void Button_Save_Click(object sender, EventArgs e) { GlobalVars.Log.Info("DepartmentInfoEditForm: Соранение информации об отделе."); if (MaskedTextBox_ID.Text == "" || TextBox_Name.Text == "") { MessageBox.Show("Не все обязательные поля заполнены!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (!Guid.TryParse(MaskedTextBox_ID.Text, out var res)) { MessageBox.Show("Идентификатор введен неправильно!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (ComboBox_ParentDepartment.SelectedIndex == -1) { MessageBox.Show("Отдела, выбранного в качестве родительского, не существует!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { try { using (var db = new TestDBEntities()) { var departments = db.Department.ToList(); if (_departmentId == null) { var department = new Department { ID = Guid.Parse(MaskedTextBox_ID.Text), Code = TextBox_CodeName.Text, Name = TextBox_Name.Text }; if (ComboBox_ParentDepartment.SelectedIndex > 0) { department.ParentDepartmentID = departments[ComboBox_ParentDepartment.SelectedIndex - 1].ID; } db.Department.Add(department); } else { var department = db.Department.First(x => x.ID == _departmentId); department.ID = Guid.Parse(MaskedTextBox_ID.Text); department.Code = TextBox_CodeName.Text; department.Name = TextBox_Name.Text; if (ComboBox_ParentDepartment.SelectedIndex > 0) { department.ParentDepartmentID = departments[ComboBox_ParentDepartment.SelectedIndex - 1].ID; } else { department.ParentDepartmentID = null; } } db.SaveChanges(); } this.Close(); } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { GlobalVars.Log.Error(ex, "DepartmentInfoEditForm: Ошибка при сохранении информации об отделе."); MessageBox.Show($"Возникла ошибка. Возможно некоторые поля заполнены неправильно.\n\n{ex.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }