OrderListForm.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.ComponentModel;
  2. using System.Windows.Forms;
  3. namespace TradeApp.WinForms.V08;
  4. public sealed partial class OrderListForm : Form
  5. {
  6. private readonly DatabaseClient _db;
  7. private readonly AppUser _user;
  8. private readonly BindingList<OrderView> _orders = [];
  9. public OrderListForm(DatabaseClient db, AppUser user)
  10. {
  11. _db = db;
  12. _user = user;
  13. InitializeComponent();
  14. addButton.Enabled = _user.CanEditOrders;
  15. editButton.Enabled = _user.CanEditOrders;
  16. deleteButton.Enabled = _user.CanEditOrders;
  17. }
  18. private void OrderListForm_Load(object? sender, EventArgs e)
  19. {
  20. ordersGrid.DataSource = _orders;
  21. Reload();
  22. }
  23. private void AddButton_Click(object? sender, EventArgs e) => EditOrder(null);
  24. private void EditButton_Click(object? sender, EventArgs e) => EditOrder(SelectedOrder());
  25. private void RefreshButton_Click(object? sender, EventArgs e) => Reload();
  26. private void DeleteButton_Click(object? sender, EventArgs e) => DeleteSelected();
  27. private void OrdersGrid_CellDoubleClick(object? sender, DataGridViewCellEventArgs e)
  28. {
  29. if (e.RowIndex < 0 || SelectedOrder() is not OrderView order)
  30. {
  31. return;
  32. }
  33. using var form = new OrderDetailsForm(order);
  34. form.ShowDialog(this);
  35. }
  36. private void Reload()
  37. {
  38. _orders.Clear();
  39. foreach (var order in _db.LoadOrders())
  40. {
  41. _orders.Add(order);
  42. }
  43. }
  44. private void DeleteSelected()
  45. {
  46. var order = SelectedOrder();
  47. if (order is null)
  48. {
  49. return;
  50. }
  51. if (MessageBox.Show("Удалить заказ?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
  52. {
  53. return;
  54. }
  55. _db.DeleteOrder(order.OrderId);
  56. Reload();
  57. }
  58. private OrderView? SelectedOrder()
  59. {
  60. return ordersGrid.CurrentRow?.DataBoundItem as OrderView;
  61. }
  62. private void EditOrder(OrderView? order)
  63. {
  64. using var form = new OrderEditForm(_db, order);
  65. if (form.ShowDialog(this) == DialogResult.OK)
  66. {
  67. Reload();
  68. }
  69. }
  70. }