OrderEditForm.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using RestaurantApp.DAL;
  2. using RestaurantApp.Models;
  3. using System;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Windows.Forms;
  8. namespace RestaurantApp
  9. {
  10. public partial class OrderEditForm : Form
  11. {
  12. private OrderRepository repo = new OrderRepository();
  13. private EmployeeRepository empRepo = new EmployeeRepository();
  14. private ClientRepository clientRepo = new ClientRepository();
  15. public OrderEditForm()
  16. {
  17. InitializeComponent();
  18. LoadData();
  19. chkNoClient.CheckedChanged += (s, e) =>
  20. {
  21. cmbClient.Enabled = !chkNoClient.Checked;
  22. if (chkNoClient.Checked) cmbClient.SelectedIndex = -1;
  23. };
  24. btnSave.Click += BtnSave_Click;
  25. btnCancel.Click += (s, e) => DialogResult = DialogResult.Cancel;
  26. }
  27. private void LoadData()
  28. {
  29. // Загружаем столы
  30. var tables = repo.GetTables();
  31. cmbTable.DisplayMember = "info";
  32. cmbTable.ValueMember = "table_id";
  33. cmbTable.DataSource = tables;
  34. // Загружаем официантов
  35. var waiters = empRepo.GetWaiters();
  36. cmbWaiter.DisplayMember = "FullName";
  37. cmbWaiter.ValueMember = "EmployeeId";
  38. cmbWaiter.DataSource = waiters;
  39. // Загружаем клиентов
  40. var clients = clientRepo.GetAll();
  41. var clientList = clients.Select(c => new { c.ClientId, FullName = $"{c.LastName} {c.FirstName} ({c.Phone})" }).ToList();
  42. cmbClient.DisplayMember = "FullName";
  43. cmbClient.ValueMember = "ClientId";
  44. cmbClient.DataSource = clientList;
  45. // Выбираем текущего пользователя как официанта
  46. if (!string.IsNullOrEmpty(Program.CurrentRole) && Program.CurrentRole == "waiter")
  47. {
  48. var currentWaiter = waiters.FirstOrDefault(w => w.FullName == Program.CurrentUser);
  49. if (currentWaiter != null)
  50. cmbWaiter.SelectedValue = currentWaiter.EmployeeId;
  51. }
  52. }
  53. private void BtnSave_Click(object sender, EventArgs e)
  54. {
  55. if (cmbTable.SelectedItem == null)
  56. {
  57. MessageBox.Show("Выберите стол");
  58. return;
  59. }
  60. if (cmbWaiter.SelectedItem == null)
  61. {
  62. MessageBox.Show("Выберите официанта");
  63. return;
  64. }
  65. var order = new Order
  66. {
  67. TableId = (int)cmbTable.SelectedValue,
  68. EmployeeId = (int)cmbWaiter.SelectedValue,
  69. ClientId = chkNoClient.Checked ? (int?)null : (int?)cmbClient.SelectedValue,
  70. DiscountPct = numDiscount.Value
  71. };
  72. try
  73. {
  74. int orderId = repo.InsertOrder(order);
  75. DialogResult = DialogResult.OK;
  76. Close();
  77. }
  78. catch (Exception ex)
  79. {
  80. MessageBox.Show($"Ошибка: {ex.Message}");
  81. }
  82. }
  83. }
  84. }