GavrilovDem/moduleExamen2/moduleExamen/Forms/OrderListForm.cs
2026-05-14 17:14:33 +04:00

125 lines
4.1 KiB
C#

using Microsoft.EntityFrameworkCore;
using moduleExamen.Data;
using moduleExamen.Helpers;
using moduleExamen.Models;
namespace moduleExamen.Forms
{
public partial class OrderListForm : Form
{
public OrderListForm()
{
InitializeComponent();
var iconPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "icon.ico");
if (File.Exists(iconPath))
Icon = new Icon(iconPath);
var logoPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "logo.png");
if (File.Exists(logoPath))
logoPictureBox.Image = Image.FromFile(logoPath);
addButton.Visible = SessionManager.IsAdmin;
deleteButton.Visible = SessionManager.IsAdmin;
LoadData();
}
private void BackButton_Click(object sender, EventArgs e)
{
Close();
}
private void LoadData()
{
try
{
using var context = new SportShopContext();
var orders = context.Orders
.Include(o => o.FioNavigation)
.Include(o => o.IdStatusNavigation)
.Include(o => o.OrderItems)
.OrderByDescending(o => o.DataStart)
.ToList();
orderGrid.Rows.Clear();
foreach (var o in orders)
{
var client = o.FioNavigation != null ? o.FioNavigation.Fio : "—";
var status = o.IdStatusNavigation != null ? o.IdStatusNavigation.Name : "—";
var dateEnd = o.DateEnd.HasValue ? o.DateEnd.Value.ToString("dd.MM.yyyy") : "—";
var rowIndex = orderGrid.Rows.Add(
o.Idzakaz,
o.Article,
client,
status,
o.Adrec,
o.DataStart.ToString("dd.MM.yyyy"),
dateEnd,
o.OrderItems.Count
);
orderGrid.Rows[rowIndex].Tag = o;
}
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки заказов: " + ex.Message);
}
}
private void OrderGrid_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || !SessionManager.IsAdmin) return;
var order = orderGrid.Rows[e.RowIndex].Tag as Order;
if (order == null) return;
var editForm = new OrderEditForm(order);
editForm.FormClosed += (s, args) => LoadData();
editForm.Show();
}
private void AddButton_Click(object sender, EventArgs e)
{
var editForm = new OrderEditForm(null);
editForm.FormClosed += (s, args) => LoadData();
editForm.Show();
}
private void DeleteButton_Click(object sender, EventArgs e)
{
if (orderGrid.CurrentRow == null) return;
var order = orderGrid.CurrentRow.Tag as Order;
if (order == null) return;
var result = MessageBox.Show("Удалить заказ \"" + order.Article + "\"?",
"Подтверждение", MessageBoxButtons.YesNo);
if (result != DialogResult.Yes) return;
try
{
using var context = new SportShopContext();
var dbOrder = context.Orders
.Include(o => o.OrderItems)
.FirstOrDefault(o => o.Idzakaz == order.Idzakaz);
if (dbOrder != null)
{
context.OrderItems.RemoveRange(dbOrder.OrderItems);
context.Orders.Remove(dbOrder);
context.SaveChanges();
}
LoadData();
}
catch (Exception ex)
{
MessageBox.Show("Ошибка удаления: " + ex.Message);
}
}
}
}