Modul/moduleExamen2/moduleExamen/Forms/OrderEditForm.cs
2026-05-14 17:33:34 +04:00

134 lines
4.2 KiB
C#

using moduleExamen.Data;
using moduleExamen.Models;
namespace moduleExamen.Forms
{
public partial class OrderEditForm : Form
{
private Order editingOrder;
private bool isEditing;
public OrderEditForm(Order order)
{
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);
editingOrder = order;
isEditing = order != null;
if (isEditing)
{
Text = "Sport Farm - Редактирование заказа";
idLabel.Text = "Заказ #" + order.Idzakaz;
}
else
{
Text = "Sport Farm - Добавление заказа";
idLabel.Text = "Новый заказ";
}
LoadStatuses();
if (isEditing) FillFields();
}
private void DateEndCheckBox_CheckedChanged(object sender, EventArgs e)
{
dateEndPicker.Enabled = dateEndCheckBox.Checked;
}
private void CancelButton_Click(object sender, EventArgs e)
{
Close();
}
private void LoadStatuses()
{
try
{
using var context = new SportShopContext();
statusComboBox.DataSource = context.Statuses.ToList();
statusComboBox.DisplayMember = "Name";
statusComboBox.ValueMember = "IdStatus";
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки статусов: " + ex.Message);
}
}
private void FillFields()
{
if (editingOrder == null) return;
articleTextBox.Text = editingOrder.Article;
statusComboBox.SelectedValue = editingOrder.IdStatus;
addressTextBox.Text = editingOrder.Adrec;
dateStartPicker.Value = editingOrder.DataStart.ToDateTime(TimeOnly.MinValue);
if (editingOrder.DateEnd.HasValue)
{
dateEndCheckBox.Checked = true;
dateEndPicker.Value = editingOrder.DateEnd.Value.ToDateTime(TimeOnly.MinValue);
}
}
private void SaveButton_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(articleTextBox.Text))
{
MessageBox.Show("Введите артикул заказа.");
return;
}
if (string.IsNullOrWhiteSpace(addressTextBox.Text))
{
MessageBox.Show("Введите адрес пункта выдачи.");
return;
}
try
{
using var context = new SportShopContext();
Order order;
if (isEditing)
{
order = context.Orders.First(o => o.Idzakaz == editingOrder.Idzakaz);
}
else
{
order = new Order();
order.Fio = 1;
context.Orders.Add(order);
}
order.Article = articleTextBox.Text.Trim();
order.IdStatus = (int)statusComboBox.SelectedValue;
order.Adrec = addressTextBox.Text.Trim();
order.DataStart = DateOnly.FromDateTime(dateStartPicker.Value);
if (dateEndCheckBox.Checked)
order.DateEnd = DateOnly.FromDateTime(dateEndPicker.Value);
else
order.DateEnd = null;
context.SaveChanges();
MessageBox.Show("Заказ сохранён.");
Close();
}
catch (Exception ex)
{
MessageBox.Show("Ошибка сохранения: " + ex.Message);
}
}
}
}