78 lines
3.1 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|