DishForm.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using System;
  2. using System.Data;
  3. using System.Linq;
  4. using System.Windows.Forms;
  5. using RestaurantApp.DAL;
  6. using RestaurantApp.Models;
  7. namespace RestaurantApp
  8. {
  9. public partial class DishForm : Form
  10. {
  11. private DishRepository repo = new DishRepository();
  12. public DishForm()
  13. {
  14. InitializeComponent();
  15. LoadCategories();
  16. LoadDishes();
  17. btnSearch.Click += (s, e) => LoadDishes();
  18. btnRefresh.Click += (s, e) => LoadDishes();
  19. btnAdd.Click += BtnAdd_Click;
  20. btnEdit.Click += BtnEdit_Click;
  21. btnDelete.Click += BtnDelete_Click;
  22. cmbCategory.SelectedIndexChanged += (s, e) => LoadDishes();
  23. chkAvailable.CheckedChanged += (s, e) => LoadDishes();
  24. dgvDishes.DoubleClick += (s, e) => BtnEdit_Click(s, e);
  25. }
  26. private void LoadCategories()
  27. {
  28. var dtCategories = repo.GetCategories();
  29. var list = dtCategories.AsEnumerable().Select(r => new
  30. {
  31. category_id = r.Field<int>("category_id"),
  32. name = r.Field<string>("name")
  33. }).ToList();
  34. list.Insert(0, new { category_id = 0, name = "Все категории" });
  35. cmbCategory.DataSource = list;
  36. cmbCategory.DisplayMember = "name";
  37. cmbCategory.ValueMember = "category_id";
  38. }
  39. private void LoadDishes()
  40. {
  41. int categoryId = (int)cmbCategory.SelectedValue;
  42. if (categoryId == 0) categoryId = 0;
  43. bool? available = chkAvailable.Checked ? (bool?)true : null;
  44. var dishes = repo.GetAll(txtSearch.Text, categoryId, available);
  45. dgvDishes.DataSource = dishes;
  46. if (dgvDishes.Columns.Count > 0)
  47. {
  48. dgvDishes.Columns["DishId"].HeaderText = "ID";
  49. dgvDishes.Columns["CategoryName"].HeaderText = "Категория";
  50. dgvDishes.Columns["Name"].HeaderText = "Название";
  51. dgvDishes.Columns["Description"].HeaderText = "Описание";
  52. dgvDishes.Columns["Price"].HeaderText = "Цена";
  53. dgvDishes.Columns["WeightG"].HeaderText = "Вес (г)";
  54. dgvDishes.Columns["CookTimeMin"].HeaderText = "Время (мин)";
  55. dgvDishes.Columns["IsAvailable"].HeaderText = "Доступно";
  56. }
  57. }
  58. private void BtnAdd_Click(object sender, EventArgs e)
  59. {
  60. var form = new DishEditForm();
  61. if (form.ShowDialog() == DialogResult.OK)
  62. {
  63. LoadDishes();
  64. }
  65. }
  66. private void BtnEdit_Click(object sender, EventArgs e)
  67. {
  68. if (dgvDishes.CurrentRow == null)
  69. {
  70. MessageBox.Show("Выберите блюдо для редактирования");
  71. return;
  72. }
  73. var dish = (Dish)dgvDishes.CurrentRow.DataBoundItem;
  74. var form = new DishEditForm(dish);
  75. if (form.ShowDialog() == DialogResult.OK)
  76. {
  77. LoadDishes();
  78. }
  79. }
  80. private void BtnDelete_Click(object sender, EventArgs e)
  81. {
  82. if (dgvDishes.CurrentRow == null)
  83. {
  84. MessageBox.Show("Выберите блюдо для удаления");
  85. return;
  86. }
  87. var dish = (Dish)dgvDishes.CurrentRow.DataBoundItem;
  88. if (MessageBox.Show($"Удалить блюдо \"{dish.Name}\"?", "Подтверждение",
  89. MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  90. {
  91. try
  92. {
  93. repo.Delete(dish.DishId);
  94. LoadDishes();
  95. }
  96. catch (Exception ex)
  97. {
  98. MessageBox.Show($"Ошибка удаления: {ex.Message}");
  99. }
  100. }
  101. }
  102. }
  103. }