70 lines
2.6 KiB
C#

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<ExpensePeopleExpense> CreateListPeopleExpenseFromDataGrid()
{
var list = new List<ExpensePeopleExpense>();
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();
}
}
}