78 lines
3.1 KiB
C#

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;
using TradeAndProcurementEnterprice.Entities;
using TradeAndProcurementEnterprice.Repositories;
using TradeAndProcurementEnterprice.Repositories.Implementations;
namespace TradeAndProcurementEnterprice.Forms
{
public partial class FormContract : Form
{
private readonly IContractRepository _contractRepository;
public FormContract(IContractRepository contractRepository, IAgentsRepository agentsRepository,
IPurchasingCompanyRepository purchasingCompanyRepository, IProductRepository productRepository)
{
InitializeComponent();
_contractRepository = contractRepository ??
throw new ArgumentNullException(nameof(contractRepository));
comboBoxPurchasingCompany.DataSource = purchasingCompanyRepository.ReadCompanies();
comboBoxPurchasingCompany.DisplayMember = "Name";
comboBoxPurchasingCompany.ValueMember = "Id";
comboBoxAgent.DataSource = agentsRepository.ReadAgents();
comboBoxAgent.DisplayMember = "FullName";
comboBoxAgent.ValueMember = "Id";
ColumnProduct.DataSource = productRepository.ReadProducts();
ColumnProduct.DisplayMember = "Name";
ColumnProduct.ValueMember = "Article";
}
private void ButtonSave_Click(object sender, EventArgs e)
{
try
{
if (comboBoxAgent.SelectedIndex < 0 || comboBoxPurchasingCompany.SelectedIndex < 0 || dataGridViewProduct.RowCount < 1)
{
throw new Exception("Имеются незаполненные поля!");
}
_contractRepository.CreateContract(Contract.CreateOperation(0,
(int)comboBoxPurchasingCompany.SelectedValue!, (int)comboBoxAgent.SelectedValue!, CreateListProductSalesFromDataGrid()));
Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка при сохранении!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void ButtonCancel_Click(object sender, EventArgs e) => Close();
private List<ProductSales> CreateListProductSalesFromDataGrid()
{
var list = new List<ProductSales>();
foreach (DataGridViewRow row in dataGridViewProduct.Rows)
{
if (row.Cells["ColumnProduct"].Value == null || row.Cells["ColumnQuantity"].Value == null)
{
continue;
}
list.Add(ProductSales.CreateElement(0, Convert.ToInt32(row.Cells["ColumnProduct"].Value), Convert.ToInt32(row.Cells["ColumnQuantity"].Value)));
}
return list.GroupBy(x => x.ProductArticle, x => x.ProductQuantity, (id, quantity) =>
ProductSales.CreateElement(0, id, quantity.Sum())).ToList();
}
}
}