using ProjectFamilyBudget.Entities; 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 FormPeopleExpense : Form { private readonly IPeopleExpense _peopleEpxense; public FormPeopleExpense(IPeopleExpense peopleEpxense, IPeople people, IExpense expense) { InitializeComponent(); _peopleEpxense = peopleEpxense ?? throw new ArgumentNullException(nameof(peopleEpxense)); comboBoxPeople.DataSource = people.ReadPeople(); comboBoxPeople.DisplayMember = "FullName"; comboBoxPeople.ValueMember = "Id"; ColumnExpense.DataSource = expense.ReadExpense(); ColumnExpense.DisplayMember = "Name"; ColumnExpense.ValueMember = "Id"; } private void buttonSave_Click(object sender, EventArgs e) { try { if ((dataGridView.RowCount < 1) || (comboBoxPeople.SelectedIndex < 0)) { throw new Exception("Имеются незаполненные поля"); } _peopleEpxense.CreatePeopleExpense(PeopleExpense.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, dateTimePicker.Value, CreateListPeopleExpenseFromDataGrid())); Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void buttonCansel_Click(object sender, EventArgs e) => Close(); private List CreateListPeopleExpenseFromDataGrid() { var list = new List(); foreach (DataGridViewRow row in dataGridView.Rows) { if (row.Cells["ColumnExpense"].Value == null || row.Cells["ColumnSum"].Value == null) { continue; } list.Add(ExpensePeopleExpense.CreateElement(0, Convert.ToInt32(row.Cells["ColumnExpense"].Value) , Convert.ToInt32(row.Cells["ColumnSum"].Value))); } return list.GroupBy(x => x.ExpenseId, x => x.Sum, (id, counts) => ExpensePeopleExpense.CreateElement(0, id, counts.Sum())).ToList(); } } }