EmployeeForm.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System;
  2. using System.Data;
  3. using System.Linq;
  4. using System.Windows.Forms;
  5. using RestaurantApp.DAL;
  6. using RestaurantApp.Models;
  7. namespace RestaurantApp
  8. {
  9. public partial class EmployeeForm : Form
  10. {
  11. private EmployeeRepository repo = new EmployeeRepository();
  12. public EmployeeForm()
  13. {
  14. InitializeComponent();
  15. LoadPositions();
  16. LoadEmployees();
  17. btnSearch.Click += (s, e) => LoadEmployees();
  18. btnRefresh.Click += (s, e) => LoadEmployees();
  19. btnAdd.Click += BtnAdd_Click;
  20. btnEdit.Click += BtnEdit_Click;
  21. btnDelete.Click += BtnDelete_Click;
  22. cmbPosition.SelectedIndexChanged += (s, e) => LoadEmployees();
  23. chkActive.CheckedChanged += (s, e) => LoadEmployees();
  24. dgvEmployees.DoubleClick += (s, e) => BtnEdit_Click(s, e);
  25. }
  26. private void LoadPositions()
  27. {
  28. var dtPositions = repo.GetPositions();
  29. var list = dtPositions.AsEnumerable().Select(r => new
  30. {
  31. position_id = r.Field<int>("position_id"),
  32. title = r.Field<string>("title")
  33. }).ToList();
  34. list.Insert(0, new { position_id = 0, title = "Все должности" });
  35. cmbPosition.DataSource = list;
  36. cmbPosition.DisplayMember = "title";
  37. cmbPosition.ValueMember = "position_id";
  38. }
  39. private void LoadEmployees()
  40. {
  41. int positionId = (int)cmbPosition.SelectedValue;
  42. string positionFilter = positionId > 0 ? cmbPosition.Text : "";
  43. bool? active = chkActive.Checked ? (bool?)true : null;
  44. var employees = repo.GetAll(txtSearch.Text, active);
  45. // Фильтрация по должности на клиенте
  46. if (positionId > 0)
  47. {
  48. employees = employees.FindAll(e => e.PositionId == positionId);
  49. }
  50. dgvEmployees.DataSource = employees;
  51. if (dgvEmployees.Columns.Count > 0)
  52. {
  53. dgvEmployees.Columns["EmployeeId"].HeaderText = "ID";
  54. dgvEmployees.Columns["FullName"].HeaderText = "ФИО";
  55. dgvEmployees.Columns["PositionTitle"].HeaderText = "Должность";
  56. dgvEmployees.Columns["Phone"].HeaderText = "Телефон";
  57. dgvEmployees.Columns["Email"].HeaderText = "Email";
  58. dgvEmployees.Columns["HireDate"].HeaderText = "Дата приема";
  59. dgvEmployees.Columns["Salary"].HeaderText = "Оклад";
  60. dgvEmployees.Columns["IsActive"].HeaderText = "Активен";
  61. dgvEmployees.Columns["PositionId"].Visible = false;
  62. dgvEmployees.Columns["FirstName"].Visible = false;
  63. dgvEmployees.Columns["LastName"].Visible = false;
  64. dgvEmployees.Columns["MiddleName"].Visible = false;
  65. }
  66. }
  67. private void BtnAdd_Click(object sender, EventArgs e)
  68. {
  69. var form = new EmployeeEditForm();
  70. if (form.ShowDialog() == DialogResult.OK)
  71. {
  72. LoadEmployees();
  73. }
  74. }
  75. private void BtnEdit_Click(object sender, EventArgs e)
  76. {
  77. if (dgvEmployees.CurrentRow == null)
  78. {
  79. MessageBox.Show("Выберите сотрудника для редактирования");
  80. return;
  81. }
  82. var employee = (Employee)dgvEmployees.CurrentRow.DataBoundItem;
  83. var form = new EmployeeEditForm(employee);
  84. if (form.ShowDialog() == DialogResult.OK)
  85. {
  86. LoadEmployees();
  87. }
  88. }
  89. private void BtnDelete_Click(object sender, EventArgs e)
  90. {
  91. if (dgvEmployees.CurrentRow == null)
  92. {
  93. MessageBox.Show("Выберите сотрудника");
  94. return;
  95. }
  96. var employee = (Employee)dgvEmployees.CurrentRow.DataBoundItem;
  97. if (MessageBox.Show($"Уволить сотрудника {employee.FullName}?", "Подтверждение",
  98. MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  99. {
  100. try
  101. {
  102. repo.Delete(employee.EmployeeId);
  103. LoadEmployees();
  104. MessageBox.Show("Сотрудник уволен");
  105. }
  106. catch (Exception ex)
  107. {
  108. MessageBox.Show($"Ошибка: {ex.Message}");
  109. }
  110. }
  111. }
  112. }
  113. }