using ProjectOptika.Scripts.Entities.Enums; using ProjectOptika.Scripts.Entities; using ProjectOptika.Scripts.Repositories; namespace ProjectOptika.Scripts.Forms { public partial class FormEmployee : Form { private readonly IEmployeeRepository _employeeRepositories; private int? _employeeID; public int ID { set { try { var employee = _employeeRepositories.GetEmployeerByID(value); if (employee == null) throw new InvalidDataException(nameof(employee)); _employeeID = employee.ID; textBoxFirstName.Text = employee.FirstName; textBoxSecondName.Text = employee.SecondName; textBoxSurname.Text = employee.Surname; foreach(PositionEmployee element in Enum.GetValues(typeof(PositionEmployee))) { if ((element & employee.PositionEmployee) != 0) { checkedListBoxPositionEmployee.SetItemChecked(checkedListBoxPositionEmployee.Items.IndexOf(element), true); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormEmployee(IEmployeeRepository employeeRepositories) { InitializeComponent(); _employeeRepositories = employeeRepositories ?? throw new ArgumentNullException(nameof(employeeRepositories)); foreach (var i in Enum.GetValues(typeof(PositionEmployee))) { checkedListBoxPositionEmployee.Items.Add(i); } } private void ButtonSave_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(textBoxSecondName.Text) || string.IsNullOrEmpty(textBoxSurname.Text) || string.IsNullOrEmpty(textBoxFirstName.Text)) { throw new Exception("Имеются незаполненные данные"); } if (_employeeID.HasValue) { _employeeRepositories.UpdateEmployee(CreateEmployee(_employeeID.Value)); } else { _employeeRepositories.CreateEmployee(CreateEmployee(0)); } Close(); } catch (System.Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получении сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonCancel_Click(object sender, EventArgs e) { Close(); } private Employee CreateEmployee(int id) { PositionEmployee positionEmployee = PositionEmployee.None; foreach(var element in checkedListBoxPositionEmployee.CheckedItems) { positionEmployee |= (PositionEmployee)element; } return Employee.CreateEntity(id, positionEmployee, textBoxFirstName.Text, textBoxSecondName.Text, textBoxSurname.Text); } } }