EmployeeEditForm.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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 EmployeeEditForm : Form
  10. {
  11. private EmployeeRepository repo = new EmployeeRepository();
  12. private Employee employee;
  13. private bool isEdit = false;
  14. public EmployeeEditForm()
  15. {
  16. InitializeComponent();
  17. isEdit = false;
  18. employee = new Employee();
  19. this.Text = "Новый сотрудник";
  20. LoadPositions();
  21. dtpHireDate.Value = DateTime.Now;
  22. chkActive.Checked = true;
  23. btnSave.Click += BtnSave_Click;
  24. btnCancel.Click += (s, e) => DialogResult = DialogResult.Cancel;
  25. }
  26. public EmployeeEditForm(Employee existingEmployee)
  27. {
  28. InitializeComponent();
  29. isEdit = true;
  30. employee = existingEmployee;
  31. this.Text = "Редактирование сотрудника";
  32. LoadPositions();
  33. LoadData();
  34. btnSave.Click += BtnSave_Click;
  35. btnCancel.Click += (s, e) => DialogResult = DialogResult.Cancel;
  36. }
  37. private void LoadPositions()
  38. {
  39. var dtPositions = repo.GetPositions();
  40. var list = dtPositions.AsEnumerable().Select(r => new
  41. {
  42. position_id = r.Field<int>("position_id"),
  43. title = r.Field<string>("title")
  44. }).ToList();
  45. cmbPosition.DataSource = list;
  46. cmbPosition.DisplayMember = "title";
  47. cmbPosition.ValueMember = "position_id";
  48. }
  49. private void LoadData()
  50. {
  51. cmbPosition.SelectedValue = employee.PositionId;
  52. txtLastName.Text = employee.LastName;
  53. txtFirstName.Text = employee.FirstName;
  54. txtMiddleName.Text = employee.MiddleName;
  55. txtPhone.Text = employee.Phone;
  56. txtEmail.Text = employee.Email;
  57. dtpHireDate.Value = employee.HireDate;
  58. numSalary.Value = employee.Salary;
  59. chkActive.Checked = employee.IsActive;
  60. }
  61. private void SaveData()
  62. {
  63. employee.PositionId = (int)cmbPosition.SelectedValue;
  64. employee.LastName = txtLastName.Text.Trim();
  65. employee.FirstName = txtFirstName.Text.Trim();
  66. employee.MiddleName = txtMiddleName.Text.Trim();
  67. employee.Phone = txtPhone.Text.Trim();
  68. employee.Email = txtEmail.Text.Trim();
  69. employee.HireDate = dtpHireDate.Value;
  70. employee.Salary = numSalary.Value;
  71. employee.IsActive = chkActive.Checked;
  72. if (string.IsNullOrWhiteSpace(employee.LastName))
  73. throw new Exception("Введите фамилию");
  74. if (string.IsNullOrWhiteSpace(employee.FirstName))
  75. throw new Exception("Введите имя");
  76. if (employee.Salary <= 0)
  77. throw new Exception("Оклад должен быть больше 0");
  78. if (isEdit)
  79. repo.Update(employee);
  80. else
  81. repo.Insert(employee);
  82. }
  83. private void BtnSave_Click(object sender, EventArgs e)
  84. {
  85. try
  86. {
  87. SaveData();
  88. DialogResult = DialogResult.OK;
  89. Close();
  90. }
  91. catch (Exception ex)
  92. {
  93. MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  94. }
  95. }
  96. }
  97. }