using ProjectFamilyBudget.Entities; using ProjectFamilyBudget.Entities.Enums; using ProjectFamilyBudget.Repositories; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ProjectFamilyBudget.Forms { public partial class FormPeople : Form { private readonly IPeople _people; private int? _peopleId; public int Id { set { try { var people = _people.ReadPeopleById(value); if (people == null) { throw new InvalidDataException(nameof(people)); } textBoxPeopleName.Text = people.Name; comboBoxMember.SelectedItem = people.MemberType; _peopleId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormPeople(IPeople people, IFamily family) { InitializeComponent(); _people = people ?? throw new ArgumentNullException(nameof(people)); comboBoxFamily.DataSource = Enum.GetValues(typeof(int)); comboBoxMember.DataSource = family.ReadFamily(); comboBoxMember.DisplayMember = "Name"; comboBoxMember.ValueMember = "Id"; } private void buttonSave_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(textBoxPeopleName.Text) || (comboBoxFamily.SelectedIndex < 0) || (comboBoxMember.SelectedIndex < 0)) { throw new Exception("Имеются незаполненные поля"); } if (_peopleId.HasValue) { _people.UpdatePeople(CreatePeople(_peopleId.Value)); } else { _people.CreatePeople(CreatePeople(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void buttonCansel_Click(object sender, EventArgs e) => Close(); private People CreatePeople(int id) => People.CreatePeople(id, textBoxPeopleName.Text, Convert.ToInt32(numericUpDownAge.Value), familyId: (int)comboBoxFamily.SelectedValue, (FamilyMemberType)comboBoxMember.SelectedItem!); } }