/
DaNN26
/
SQLProvider
Обзор
Документация
Войти
/
DaNN26
/
SQLProvider
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
OrdersForm.cs
167 строк
5 KB
DaNN
Добавьте файлы проекта.
27 май 2026, 12:50
27 май 2026, 12:50
4fe37b9
Код
Авторство
О чём код?
using System; using System.Data; using System.Windows.Forms; namespace Demo { internal partial class OrdersForm : Form { private UserSession user; private int orderId; public OrdersForm(UserSession currentSession) { user = currentSession; InitializeComponent(); AppHelper.SetAppIcon(this); userLabel.Text = user.FullName; addButton.Visible = user.CanEditOrders; editButton.Visible = user.CanEditOrders; deleteButton.Visible = user.CanEditOrders; commandPanel.Visible = user.CanEditOrders; LoadOrders(); } private void LoadOrders() { try { ShowOrders(DatabaseHelper.GetData(GetOrdersSql())); } catch (Exception ex) { AppHelper.ShowError("Не удалось загрузить заказы.\n" + ex.Message); } } private void ShowOrders(DataTable table) { orderId = 0; ordersPanel.SuspendLayout(); ordersPanel.Controls.Clear(); foreach (DataRow row in table.Rows) { var card = new OrderCardControl(row); card.OrderSelected += OrderCard_OrderSelected; ordersPanel.Controls.Add(card); } ordersPanel.ResumeLayout(); } private string GetOrdersSql() { return "SELECT o.OrderId, " + "ISNULL(STUFF((SELECT N', ' + p.Article + N', ' + CAST(oi.Quantity AS NVARCHAR(10)) " + "FROM dbo.OrderItems oi INNER JOIN dbo.Products p ON p.ProductId = oi.ProductId " + "WHERE oi.OrderId = o.OrderId FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, ''), N'') AS Articles, " + "os.StatusName, pp.Address, " + "ISNULL(CONVERT(NVARCHAR(10), o.OrderDate, 104), N'') AS OrderDate, " + "ISNULL(CONVERT(NVARCHAR(10), o.DeliveryDate, 104), N'') AS DeliveryDate " + "FROM dbo.Orders o " + "INNER JOIN dbo.OrderStatuses os ON os.StatusId = o.StatusId " + "INNER JOIN dbo.PickupPoints pp ON pp.PickupPointId = o.PickupPointId " + "ORDER BY o.OrderId"; } private void OrderCard_OrderSelected(object sender, EventArgs e) { var card = sender as OrderCardControl; if (card != null) { orderId = card.OrderId; MarkCard(card); } } private void MarkCard(OrderCardControl selectedCard) { foreach (Control control in ordersPanel.Controls) { var card = control as OrderCardControl; if (card != null) { card.SetSelected(card == selectedCard); } } } private void AddButton_Click(object sender, EventArgs e) { using (var form = new OrderEditForm(0)) { if (form.ShowDialog() == DialogResult.OK) { LoadOrders(); } } } private void EditButton_Click(object sender, EventArgs e) { OpenSelectedOrder(); } private void OpenSelectedOrder() { if (orderId == 0) { AppHelper.ShowError("Выберите заказ."); return; } using (var form = new OrderEditForm(orderId)) { if (form.ShowDialog() == DialogResult.OK) { LoadOrders(); } } } private void DeleteButton_Click(object sender, EventArgs e) { if (orderId == 0) { AppHelper.ShowError("Выберите заказ."); return; } if (!DeleteConfirmed()) { return; } try { DatabaseHelper.ExecuteCommand("DELETE FROM dbo.Orders WHERE OrderId = " + orderId); LoadOrders(); } catch (Exception ex) { AppHelper.ShowError("Не удалось удалить заказ.\n" + ex.Message); } } private bool DeleteConfirmed() { var result = MessageBox.Show( "Удалить выбранный заказ?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); return result == DialogResult.Yes; } private void CloseButton_Click(object sender, EventArgs e) { Close(); } } }