PIAPS_CW/WinFormsApp/FormMain.cs

200 lines
8.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Contracts.BindingModels;
using Contracts.BusinessLogicContracts;
using DataModels.Enums;
using DataModels.Models;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinFormsApp
{
public partial class FormMain : Form
{
private readonly ILogger _logger;
private readonly ISupplyLogic _supplyLogic;
private readonly IProductLogic _productLogic;
private readonly ISupplierLogic _supplierLogic;
private readonly IReportLogic _reportLogic;
public FormMain(ILogger<FormMain> logger, ISupplierLogic supplierLogic, ISupplyLogic supplyLogic, IProductLogic productLogic, IReportLogic reportLogic)
{
InitializeComponent();
_supplierLogic = supplierLogic;
_supplyLogic = supplyLogic;
_productLogic = productLogic;
_logger = logger;
_reportLogic = reportLogic;
}
private void FormMain_Load(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
_logger.LogInformation("Загрузка поставок");
try
{
var list = _supplyLogic.ReadList(null);
if (list != null)
{
dataGridView.DataSource = list;
dataGridView.Columns["SupplierId"].Visible = false;
dataGridView.Columns["Products"].Visible = false;
}
_logger.LogInformation("Загрузка поставок");
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка загрузки поставок");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void товарыToolStripMenuItem_Click_1(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormProducts));
if (service is FormProducts form)
{
form.ShowDialog();
}
}
private void поставщикиToolStripMenuItem_Click_1(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormSuppliers));
if (service is FormSuppliers form)
{
form.ShowDialog();
}
}
private void buttonCreateSupply_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormSupply));
if (service is FormSupply form)
{
form.ShowDialog();
}
}
private void buttonSupplyStatusArriving_Click(object sender, EventArgs e)
{
if (dataGridView.SelectedRows.Count == 1)
{
Guid id = (Guid)dataGridView.SelectedRows[0].Cells["Id"].Value;
_logger.LogInformation("Поставка No{id}. Меняется статус", id);
try
{
var operationResult = _supplyLogic.StatusUpdate(new SupplyBindingModel
{
Id = id,
Status = (SupplyStatus)dataGridView.SelectedRows[0].Cells["Status"].Value
}, SupplyStatus.Arriving);
if (!operationResult)
{
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
}
LoadData();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка передачи заказа в работу");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
private void buttonSupplyStatusCompleted_Click(object sender, EventArgs e)
{
if (dataGridView.SelectedRows.Count == 1)
{
Guid id = (Guid)dataGridView.SelectedRows[0].Cells["Id"].Value;
_logger.LogInformation("Поставка No{id}. Меняется статус", id);
try
{
var operationResult = _supplyLogic.StatusUpdate(new SupplyBindingModel
{
Id = id,
Status = (SupplyStatus)dataGridView.SelectedRows[0].Cells["Status"].Value,
DateArriving = (DateTime?)dataGridView.SelectedRows[0].Cells["DateArriving"].Value,
DateComplete = (DateTime?)dataGridView.SelectedRows[0].Cells["DateComplete"].Value,
}, SupplyStatus.Completed);
if (!operationResult)
{
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
}
LoadData();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка передачи заказа в работу");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
private void buttonCreateReport_Click(object sender, EventArgs e)
{
if (dataGridView.SelectedRows.Count != 1)
{
MessageBox.Show("Выберите одну поставку для формирования отчета", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
_reportLogic.SaveSuppliesToPdfFile(new ReportBindingModel
{
FileName = $"supplyreport{dataGridView.SelectedRows[0].Cells["Id"].Value}.pdf",
Date = (DateTime)dataGridView.SelectedRows[0].Cells["Date"].Value,
SupplyId = (Guid)dataGridView.SelectedRows[0].Cells["Id"].Value
});
_logger.LogInformation("Сохранение отчета о поставке");
MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка сохранения отчета о поставке");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void buttonPrintReport_Click(object sender, EventArgs e)
{
if (dataGridView.SelectedRows.Count != 1) return;
var service = Program.ServiceProvider?.GetService(typeof(FormPreviewPDF));
if (service is FormPreviewPDF form)
{
var src = $"supplyreport{dataGridView.SelectedRows[0].Cells["Id"].Value}.pdf";
if (!File.Exists(src))
{
MessageBox.Show("Отчёт о поставке не был найден. Сначала сформируйте отчёт по выбранной поставке.", "Ошибка");
return;
}
form.src = System.IO.Path.GetFullPath(src);
if (form.ShowDialog() == DialogResult.OK)
{
IronPrint.Printer.PrintAsync(src);
}
}
}
private void buttonRefresh_Click(object sender, EventArgs e)
{
LoadData();
}
}
}