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 FormIncome : Form { private readonly IIncome _income; private int? _incomeId; public int Id { set { try { var income = _income.ReadIncomeById(value); if (income == null) { throw new InvalidDataException(nameof(income)); } textBoxName.Text = income.Name; comboBoxIncomeType.SelectedItem = income.IncomeType; textBoxCategory.Text = income.IncomeCategory; _incomeId = value; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } public FormIncome(IIncome income) { InitializeComponent(); _income = income ?? throw new ArgumentNullException(nameof(income)); comboBoxIncomeType.DataSource = Enum.GetValues(typeof(IncomeExpenseType)); } private void buttonSave_Click(object sender, EventArgs e) { try { if (string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxCategory.Text) || (comboBoxIncomeType.SelectedIndex < 0)) { throw new Exception("Имеются незаполненные поля"); } if (_incomeId.HasValue) { _income.UpdateIncome(CreateIncome(_incomeId.Value)); } else { _income.CreateIncome(CreateIncome(0)); } Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void buttonCansel_Click(object sender, EventArgs e) => Close(); private Income CreateIncome(int id) => Income.CreateEntity(id, (IncomeExpenseType)comboBoxIncomeType.SelectedItem! ,textBoxName.Text, textBoxCategory.Text); } }