125 lines
4.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|