Лабараторная 4(Отредактированная)
This commit is contained in:
parent
658b0bc060
commit
16d9bd2048
@ -14,6 +14,9 @@ namespace ProjectSellPC.Entites
|
||||
public int ChequeID { get; set; }
|
||||
[DisplayName("Количество")]
|
||||
public int Count { get; set; }
|
||||
// Временное свойство для отображения названия товара
|
||||
[Browsable(false)] // Скрываем свойство в DataGridView
|
||||
public string ProductName { get; set; }
|
||||
public static ProductInCheque CreateElement(int id, int count)
|
||||
{
|
||||
return new ProductInCheque { ProductID = id, Count = count };
|
||||
|
@ -17,16 +17,17 @@ namespace ProjectSellPC.Forms.Receipt
|
||||
private readonly IUnityContainer _container;
|
||||
private readonly IChequeRepository _ChequeRepository;
|
||||
private readonly IClientRepository _clientRepository;
|
||||
private readonly IProductRepository _productRepository; // Добавляем репозиторий товаров
|
||||
|
||||
public ChequeForm(IUnityContainer unityContainer, IChequeRepository ChequeRepository, IClientRepository clientRepository)
|
||||
public ChequeForm(IUnityContainer unityContainer, IChequeRepository ChequeRepository, IClientRepository clientRepository, IProductRepository productRepository)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_container = unityContainer ?? throw new ArgumentNullException(nameof(unityContainer));
|
||||
_ChequeRepository = ChequeRepository ?? throw new ArgumentNullException(nameof(ChequeRepository));
|
||||
_clientRepository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository));
|
||||
_productRepository = productRepository ?? throw new ArgumentNullException(nameof(productRepository)); // Инициализация репозитория товаров
|
||||
}
|
||||
|
||||
private void ChequeForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
@ -38,17 +39,52 @@ namespace ProjectSellPC.Forms.Receipt
|
||||
MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadList()
|
||||
{
|
||||
var checks = _ChequeRepository.ReadAll();
|
||||
|
||||
foreach (var check in checks)
|
||||
try
|
||||
{
|
||||
check.Client = _clientRepository.Read(check.ClientId);
|
||||
}
|
||||
// Получаем все чеки
|
||||
var cheques = _ChequeRepository.ReadAll();
|
||||
|
||||
ChequesDataGridView.DataSource = checks;
|
||||
// Загружаем информацию о клиентах
|
||||
foreach (var cheque in cheques)
|
||||
{
|
||||
cheque.Client = _clientRepository.Read(cheque.ClientId);
|
||||
|
||||
// Загружаем названия товаров для каждого чека
|
||||
foreach (var productInCheque in cheque.Products)
|
||||
{
|
||||
var product = _productRepository.Read(productInCheque.ProductID);
|
||||
if (product != null)
|
||||
{
|
||||
productInCheque.ProductName = product.Name; // Добавляем название товара
|
||||
}
|
||||
else
|
||||
{
|
||||
productInCheque.ProductName = "Неизвестный товар";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Привязываем данные к DataGridView
|
||||
ChequesDataGridView.DataSource = cheques.Select(c => new
|
||||
{
|
||||
Id = c.Id,
|
||||
ClientName = c.Client?.Name ?? "Неизвестно",
|
||||
PurchaseDate = c.PurchaseDate,
|
||||
Products = string.Join(", ", c.Products.Select(p => p.ProductName)) // Отображаем названия товаров
|
||||
}).ToList();
|
||||
|
||||
// Настройка столбцов DataGridView
|
||||
ChequesDataGridView.Columns["Id"].HeaderText = "ID";
|
||||
ChequesDataGridView.Columns["ClientName"].HeaderText = "Клиент";
|
||||
ChequesDataGridView.Columns["PurchaseDate"].HeaderText = "Дата покупки";
|
||||
ChequesDataGridView.Columns["Products"].HeaderText = "Товары";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void addButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
@ -18,14 +18,16 @@ namespace ProjectSellPC.Repos.Impements
|
||||
private readonly IConnectionString _connectionString;
|
||||
private readonly ILogger<ChequeRepo> _logger;
|
||||
private readonly IClientRepository _clientRepository;
|
||||
private readonly IProductRepository _productRepository; // Добавляем зависимость
|
||||
|
||||
public ChequeRepo(IConnectionString connectionString, ILoggerFactory loggerFactory, IClientRepository clientRepository)
|
||||
public ChequeRepo(IConnectionString connectionString, ILoggerFactory loggerFactory,
|
||||
IClientRepository clientRepository, IProductRepository productRepository)
|
||||
{
|
||||
_connectionString = connectionString ?? throw new ArgumentNullException(nameof(connectionString));
|
||||
_logger = loggerFactory.CreateLogger<ChequeRepo>();
|
||||
_clientRepository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository));
|
||||
_productRepository = productRepository ?? throw new ArgumentNullException(nameof(productRepository)); // Инициализация
|
||||
}
|
||||
|
||||
private IDbConnection CreateConnection() => new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
public void Create(Cheque cheque)
|
||||
{
|
||||
@ -142,6 +144,20 @@ namespace ProjectSellPC.Repos.Impements
|
||||
{
|
||||
var productQuery = "SELECT * FROM \"productincheque\" WHERE \"chequeid\" = @ChequeId";
|
||||
cheque.Products = connection.Query<ProductInCheque>(productQuery, new { ChequeId = cheque.Id }).ToList();
|
||||
|
||||
// Загружаем названия товаров
|
||||
foreach (var productInCheque in cheque.Products)
|
||||
{
|
||||
var product = _productRepository.Read(productInCheque.ProductID);
|
||||
if (product != null)
|
||||
{
|
||||
productInCheque.ProductName = product.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
productInCheque.ProductName = "Неизвестный товар";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return cheques;
|
||||
|
Loading…
x
Reference in New Issue
Block a user