diff --git a/SushiBar/SushiBar/Forms/FormComponent.Designer.cs b/SushiBar/SushiBar/Forms/FormComponent.Designer.cs index ad848b9..762ad23 100644 --- a/SushiBar/SushiBar/Forms/FormComponent.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormComponent.Designer.cs @@ -28,55 +28,75 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormComponent)); label1 = new Label(); textBoxName = new TextBox(); textBoxCost = new TextBox(); label2 = new Label(); - buttonSave = new Button(); - buttonCancel = new Button(); + ButtonSave = new Button(); + ButtonCancel = new Button(); SuspendLayout(); // // label1 // - resources.ApplyResources(label1, "label1"); + label1.AutoSize = true; + label1.Location = new Point(12, 9); label1.Name = "label1"; + label1.Size = new Size(77, 20); + label1.TabIndex = 0; + label1.Text = "Название"; // // textBoxName // - resources.ApplyResources(textBoxName, "textBoxName"); + textBoxName.Location = new Point(95, 6); textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(246, 27); + textBoxName.TabIndex = 1; // // textBoxCost // - resources.ApplyResources(textBoxCost, "textBoxCost"); + textBoxCost.Location = new Point(95, 39); textBoxCost.Name = "textBoxCost"; + textBoxCost.Size = new Size(246, 27); + textBoxCost.TabIndex = 3; // // label2 // - resources.ApplyResources(label2, "label2"); + label2.AutoSize = true; + label2.ImeMode = ImeMode.NoControl; + label2.Location = new Point(12, 42); label2.Name = "label2"; + label2.Size = new Size(45, 20); + label2.TabIndex = 2; + label2.Text = "Цена"; // - // buttonSave + // ButtonSave // - resources.ApplyResources(buttonSave, "buttonSave"); - buttonSave.Name = "buttonSave"; - buttonSave.UseVisualStyleBackColor = true; - buttonSave.Click += buttonSave_Click; + ButtonSave.Location = new Point(95, 85); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(121, 29); + ButtonSave.TabIndex = 4; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; // - // buttonCancel + // ButtonCancel // - resources.ApplyResources(buttonCancel, "buttonCancel"); - buttonCancel.Name = "buttonCancel"; - buttonCancel.UseVisualStyleBackColor = true; - buttonCancel.Click += buttonCancel_Click; + ButtonCancel.ImeMode = ImeMode.NoControl; + ButtonCancel.Location = new Point(222, 85); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(119, 29); + ButtonCancel.TabIndex = 5; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; // // FormComponent // - resources.ApplyResources(this, "$this"); + AllowDrop = true; AutoScaleMode = AutoScaleMode.None; - Controls.Add(buttonCancel); - Controls.Add(buttonSave); + ClientSize = new Size(353, 126); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); Controls.Add(textBoxCost); Controls.Add(label2); Controls.Add(textBoxName); @@ -84,6 +104,7 @@ MaximizeBox = false; Name = "FormComponent"; ShowInTaskbar = false; + Text = "Компонент"; TopMost = true; Load += FormComponent_Load; ResumeLayout(false); @@ -96,7 +117,7 @@ private TextBox textBoxName; private TextBox textBoxCost; private Label label2; - private Button buttonSave; - private Button buttonCancel; + private Button ButtonSave; + private Button ButtonCancel; } } \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormComponent.cs b/SushiBar/SushiBar/Forms/FormComponent.cs index 1c22dbe..7225978 100644 --- a/SushiBar/SushiBar/Forms/FormComponent.cs +++ b/SushiBar/SushiBar/Forms/FormComponent.cs @@ -1,17 +1,81 @@ -using System; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.SearchModels; +using Microsoft.Extensions.Logging; + namespace SushiBar.Forms { - public partial class FormComponent + public partial class FormComponent : Form { - private void buttonSave_Click(object sender, EventArgs e) + private readonly ILogger _logger; + private readonly IComponentLogic _logic; + private int? _id; + public int Id { set { _id = value; } } + public FormComponent(ILogger logger, IComponentLogic logic) { - ButtonSave_Click(sender, e); + InitializeComponent(); + _logger = logger; + _logic = logic; } - - private void buttonCancel_Click(object sender, EventArgs e) + private void FormComponent_Load(object sender, EventArgs e) { - ButtonCancel_Click(sender, e); - + if (_id.HasValue) + { + try + { + _logger.LogInformation("Получение компонента"); + var view = _logic.ReadElement(new ComponentSearchModel + { + Id = _id.Value + }); + if (view != null) + { + textBoxName.Text = view.ComponentName; + textBoxCost.Text = view.Cost.ToString(); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения компонента"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + private void ButtonSave_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(textBoxName.Text)) + { + MessageBox.Show("Заполните название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + _logger.LogInformation("Сохранение компонента"); + try + { + var model = new ComponentBindingModel + { + Id = _id ?? 0, + ComponentName = textBoxName.Text, + Cost = Convert.ToDouble(textBoxCost.Text) + }; + var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); + DialogResult = DialogResult.OK; + Close(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения компонента"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); } } } diff --git a/SushiBar/SushiBar/Forms/FormComponent.resx b/SushiBar/SushiBar/Forms/FormComponent.resx index 4cf9735..7321b10 100644 --- a/SushiBar/SushiBar/Forms/FormComponent.resx +++ b/SushiBar/SushiBar/Forms/FormComponent.resx @@ -117,178 +117,172 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - buttonSave - - - System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this - - - System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - - 222, 85 - - - 95, 39 - - - buttonCancel - - - 8, 20 - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - FormComponent - - - System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 2 + + 4 - - System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ButtonSave - - 800, 450 - - - 5 + + $this 2 - - 222, 85 + + + 12, 9 + + + 5 $this - - 0 + + 2 - - 68, 6 - - - FormComponent - - - 4 - - - 1 - - - 5 - - + $this - - 12, 9 - - - 3 - - - $this - - - 5 - - - textBox1 - - - 1 - - - 1 - - - 95, 85 - - - $this - - - textBoxCost - - - 3 - - - 1 - - - 4 - - - $this - - - button1 - - - button2 - - - 0 - - - 95, 85 - - - $this - - - System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 12, 42 - System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1 + + + $this + + + 222, 85 + + + textBoxCost + + + System.Windows.Forms.Label, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + $this + + + 5 + + + 1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 800, 450 + + + 222, 85 + + + 95, 85 + + + 5 + + + 1 + + + 0 + + + FormComponent + + + 0 + + + 12, 42 + + + 4 + + + 95, 39 + + + Button1 + + + 0 + + + $this + + + $this + + + $this + + + label1 + textBoxName + + 1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + 8, 20 + + + 4 + + + textBox1 + + + System.Windows.Forms.Form, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Button2 + label2 - - 4 + + System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 68, 6 + + + 3 + + + System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + FormComponent + + + System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 95, 85 95, 6 @@ -296,10 +290,10 @@ 0 - - ru - - - True - + + ButtonCancel + + + System.Windows.Forms.Button, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormComponent.ru.resx b/SushiBar/SushiBar/Forms/FormComponent.ru.resx index 14672e4..201be59 100644 --- a/SushiBar/SushiBar/Forms/FormComponent.ru.resx +++ b/SushiBar/SushiBar/Forms/FormComponent.ru.resx @@ -147,19 +147,19 @@ Цена - + 121, 29 - + Сохранить - + NoControl - + 119, 29 - + Отмена diff --git a/SushiBar/SushiBar/Forms/FormComponentLogic.cs b/SushiBar/SushiBar/Forms/FormComponentLogic.cs deleted file mode 100644 index 7225978..0000000 --- a/SushiBar/SushiBar/Forms/FormComponentLogic.cs +++ /dev/null @@ -1,81 +0,0 @@ -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; -using SushiBarContracts.SearchModels; -using Microsoft.Extensions.Logging; - -namespace SushiBar.Forms -{ - public partial class FormComponent : Form - { - private readonly ILogger _logger; - private readonly IComponentLogic _logic; - private int? _id; - public int Id { set { _id = value; } } - public FormComponent(ILogger logger, IComponentLogic logic) - { - InitializeComponent(); - _logger = logger; - _logic = logic; - } - private void FormComponent_Load(object sender, EventArgs e) - { - if (_id.HasValue) - { - try - { - _logger.LogInformation("Получение компонента"); - var view = _logic.ReadElement(new ComponentSearchModel - { - Id = _id.Value - }); - if (view != null) - { - textBoxName.Text = view.ComponentName; - textBoxCost.Text = view.Cost.ToString(); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка получения компонента"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - private void ButtonSave_Click(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(textBoxName.Text)) - { - MessageBox.Show("Заполните название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - _logger.LogInformation("Сохранение компонента"); - try - { - var model = new ComponentBindingModel - { - Id = _id ?? 0, - ComponentName = textBoxName.Text, - Cost = Convert.ToDouble(textBoxCost.Text) - }; - var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); - if (!operationResult) - { - throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); - } - MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); - DialogResult = DialogResult.OK; - Close(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка сохранения компонента"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonCancel_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormComponents.Designer.cs b/SushiBar/SushiBar/Forms/FormComponents.Designer.cs index b68809c..bba1970 100644 --- a/SushiBar/SushiBar/Forms/FormComponents.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormComponents.Designer.cs @@ -29,10 +29,10 @@ private void InitializeComponent() { dataGridView = new DataGridView(); - buttonAdd = new Button(); - buttonUpd = new Button(); - buttonDel = new Button(); - buttonRef = new Button(); + ButtonAdd = new Button(); + ButtonUpd = new Button(); + ButtonDel = new Button(); + ButtonRef = new Button(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); SuspendLayout(); // @@ -48,58 +48,64 @@ dataGridView.Size = new Size(694, 408); dataGridView.TabIndex = 0; // - // buttonAdd + // ButtonAdd // - buttonAdd.Location = new Point(700, 12); - buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(180, 29); - buttonAdd.TabIndex = 1; - buttonAdd.Text = "Добавить"; - buttonAdd.UseVisualStyleBackColor = true; - buttonAdd.Click += buttonAdd_Click; + ButtonAdd.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonAdd.Location = new Point(700, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(180, 29); + ButtonAdd.TabIndex = 1; + ButtonAdd.Text = "Добавить"; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; // - // buttonUpd + // ButtonUpd // - buttonUpd.Location = new Point(700, 47); - buttonUpd.Name = "buttonUpd"; - buttonUpd.Size = new Size(180, 29); - buttonUpd.TabIndex = 2; - buttonUpd.Text = "Изменить"; - buttonUpd.UseVisualStyleBackColor = true; - buttonUpd.Click += buttonUpd_Click; + ButtonUpd.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonUpd.Location = new Point(700, 47); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(180, 29); + ButtonUpd.TabIndex = 2; + ButtonUpd.Text = "Изменить"; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; // - // buttonDel + // ButtonDel // - buttonDel.Location = new Point(700, 82); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(180, 29); - buttonDel.TabIndex = 3; - buttonDel.Text = "Удалить"; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += buttonDel_Click; + ButtonDel.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonDel.Location = new Point(700, 82); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(180, 29); + ButtonDel.TabIndex = 3; + ButtonDel.Text = "Удалить"; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; // // buttonRef // - buttonRef.Location = new Point(700, 117); - buttonRef.Name = "buttonRef"; - buttonRef.Size = new Size(180, 29); - buttonRef.TabIndex = 4; - buttonRef.Text = "Обновить"; - buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += buttonRef_Click; + ButtonRef.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonRef.Location = new Point(700, 117); + ButtonRef.Name = "ButtonRef"; + ButtonRef.Size = new Size(180, 29); + ButtonRef.TabIndex = 4; + ButtonRef.Text = "Обновить"; + ButtonRef.UseVisualStyleBackColor = true; + ButtonRef.Click += ButtonRef_Click; // // FormComponents // + AllowDrop = true; AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(892, 408); - Controls.Add(buttonRef); - Controls.Add(buttonDel); - Controls.Add(buttonUpd); - Controls.Add(buttonAdd); + Controls.Add(ButtonRef); + Controls.Add(ButtonDel); + Controls.Add(ButtonUpd); + Controls.Add(ButtonAdd); Controls.Add(dataGridView); Name = "FormComponents"; Text = "Компоненты"; + WindowState = FormWindowState.Maximized; Load += FormComponents_Load; ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); ResumeLayout(false); @@ -108,9 +114,9 @@ #endregion private DataGridView dataGridView; - private Button buttonAdd; - private Button buttonUpd; - private Button buttonDel; - private Button buttonRef; + private Button ButtonAdd; + private Button ButtonUpd; + private Button ButtonDel; + private Button ButtonRef; } } \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormComponents.cs b/SushiBar/SushiBar/Forms/FormComponents.cs index a2b5925..7943174 100644 --- a/SushiBar/SushiBar/Forms/FormComponents.cs +++ b/SushiBar/SushiBar/Forms/FormComponents.cs @@ -1,35 +1,98 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; +using Microsoft.Extensions.Logging; namespace SushiBar.Forms { - public partial class FormComponents + public partial class FormComponents : Form { - private void buttonAdd_Click(object sender, EventArgs e) + private readonly ILogger _logger; + private readonly IComponentLogic _logic; + public FormComponents(ILogger logger, IComponentLogic logic) { - ButtonAdd_Click(sender, e); + InitializeComponent(); + _logger = logger; + _logic = logic; } - - private void buttonUpd_Click(object sender, EventArgs e) + private void FormComponents_Load(object sender, EventArgs e) { - ButtonUpd_Click(sender, e); + LoadData(); } - - private void buttonDel_Click(object sender, EventArgs e) + private void LoadData() { - ButtonDel_Click(sender, e); + try + { + var list = _logic.ReadList(null); + if (list != null) + { + dataGridView.DataSource = list; + dataGridView.Columns["Id"].Visible = false; + dataGridView.Columns["ComponentName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + _logger.LogInformation("Загрузка компонентов"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки компонентов"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - - private void buttonRef_Click(object sender, EventArgs e) + private void ButtonAdd_Click(object sender, EventArgs e) { - ButtonRef_Click(sender, e); + var service = Program.ServiceProvider?.GetService(typeof(FormComponent)); + if (service is FormComponent form) + { + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var service = Program.ServiceProvider?.GetService(typeof(FormComponent)); + if (service is FormComponent form) + { + form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Удаление компонента"); + try + { + if (!_logic.Delete(new ComponentBindingModel + { + Id = id + })) + { + throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления компонента"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + private void ButtonRef_Click(object sender, EventArgs e) + { + LoadData(); } } } diff --git a/SushiBar/SushiBar/Forms/FormComponentsLogic.cs b/SushiBar/SushiBar/Forms/FormComponentsLogic.cs deleted file mode 100644 index 7943174..0000000 --- a/SushiBar/SushiBar/Forms/FormComponentsLogic.cs +++ /dev/null @@ -1,98 +0,0 @@ -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; -using Microsoft.Extensions.Logging; - -namespace SushiBar.Forms -{ - public partial class FormComponents : Form - { - private readonly ILogger _logger; - private readonly IComponentLogic _logic; - public FormComponents(ILogger logger, IComponentLogic logic) - { - InitializeComponent(); - _logger = logger; - _logic = logic; - } - private void FormComponents_Load(object sender, EventArgs e) - { - LoadData(); - } - private void LoadData() - { - try - { - var list = _logic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["Id"].Visible = false; - dataGridView.Columns["ComponentName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка компонентов"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки компонентов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonAdd_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormComponent)); - if (service is FormComponent form) - { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } - } - private void ButtonUpd_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - var service = Program.ServiceProvider?.GetService(typeof(FormComponent)); - if (service is FormComponent form) - { - form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } - } - } - private void ButtonDel_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Удаление компонента"); - try - { - if (!_logic.Delete(new ComponentBindingModel - { - Id = id - })) - { - throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка удаления компонента"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - } - private void ButtonRef_Click(object sender, EventArgs e) - { - LoadData(); - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormCreateOrder.Designer.cs b/SushiBar/SushiBar/Forms/FormCreateOrder.Designer.cs index 22d1beb..fe3e32e 100644 --- a/SushiBar/SushiBar/Forms/FormCreateOrder.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormCreateOrder.Designer.cs @@ -28,35 +28,35 @@ /// private void InitializeComponent() { - buttonSave = new Button(); - buttonCancel = new Button(); + ButtonSave = new Button(); + ButtonCancel = new Button(); label1 = new Label(); label2 = new Label(); label3 = new Label(); - textBoxCount = new TextBox(); - textBoxSum = new TextBox(); - comboBoxSushi = new ComboBox(); + TextBoxCount = new TextBox(); + TextBoxSum = new TextBox(); + ComboBoxSushi = new ComboBox(); SuspendLayout(); // - // buttonSave + // ButtonSave // - buttonSave.Location = new Point(185, 112); - buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(100, 30); - buttonSave.TabIndex = 0; - buttonSave.Text = "Сохранить"; - buttonSave.UseVisualStyleBackColor = true; - buttonSave.Click += buttonSave_Click; + ButtonSave.Location = new Point(185, 112); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(100, 30); + ButtonSave.TabIndex = 0; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; // - // buttonCancel + // ButtonCancel // - buttonCancel.Location = new Point(291, 112); - buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(100, 30); - buttonCancel.TabIndex = 1; - buttonCancel.Text = "Отмена"; - buttonCancel.UseVisualStyleBackColor = true; - buttonCancel.Click += buttonCancel_Click; + ButtonCancel.Location = new Point(291, 112); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(100, 30); + ButtonCancel.TabIndex = 1; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; // // label1 // @@ -85,48 +85,50 @@ label3.TabIndex = 4; label3.Text = "Сумма:"; // - // textBoxCount + // TextBoxCount // - textBoxCount.Location = new Point(119, 46); - textBoxCount.Name = "textBoxCount"; - textBoxCount.Size = new Size(272, 27); - textBoxCount.TabIndex = 5; - textBoxCount.TextChanged += textBoxCount_TextChanged; + TextBoxCount.Location = new Point(119, 46); + TextBoxCount.Name = "TextBoxCount"; + TextBoxCount.Size = new Size(272, 27); + TextBoxCount.TabIndex = 5; + TextBoxCount.TextChanged += TextBoxCount_TextChanged; // - // textBoxSum + // TextBoxSum // - textBoxSum.Location = new Point(119, 79); - textBoxSum.Name = "textBoxSum"; - textBoxSum.ReadOnly = true; - textBoxSum.Size = new Size(272, 27); - textBoxSum.TabIndex = 6; + TextBoxSum.Location = new Point(119, 79); + TextBoxSum.Name = "TextBoxSum"; + TextBoxSum.ReadOnly = true; + TextBoxSum.Size = new Size(272, 27); + TextBoxSum.TabIndex = 6; // - // comboBoxSushi + // ComboBoxSushi // - comboBoxSushi.FormattingEnabled = true; - comboBoxSushi.Location = new Point(119, 12); - comboBoxSushi.Name = "comboBoxSushi"; - comboBoxSushi.Size = new Size(272, 28); - comboBoxSushi.TabIndex = 7; - comboBoxSushi.SelectedIndexChanged += comboBoxSushi_SelectedIndexChanged; + ComboBoxSushi.FormattingEnabled = true; + ComboBoxSushi.Location = new Point(119, 12); + ComboBoxSushi.Name = "ComboBoxSushi"; + ComboBoxSushi.Size = new Size(272, 28); + ComboBoxSushi.TabIndex = 7; + ComboBoxSushi.SelectedIndexChanged += ComboBoxSushi_SelectedIndexChanged; // // FormCreateOrder // + AllowDrop = true; AutoScaleMode = AutoScaleMode.None; ClientSize = new Size(403, 152); - Controls.Add(comboBoxSushi); - Controls.Add(textBoxSum); - Controls.Add(textBoxCount); + Controls.Add(ComboBoxSushi); + Controls.Add(TextBoxSum); + Controls.Add(TextBoxCount); Controls.Add(label3); Controls.Add(label2); Controls.Add(label1); - Controls.Add(buttonCancel); - Controls.Add(buttonSave); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); MaximizeBox = false; MinimizeBox = false; Name = "FormCreateOrder"; ShowInTaskbar = false; Text = "Заказ"; + TopMost = true; Load += FormCreateOrder_Load; ResumeLayout(false); PerformLayout(); @@ -134,13 +136,13 @@ #endregion - private Button buttonSave; - private Button buttonCancel; + private Button ButtonSave; + private Button ButtonCancel; private Label label1; private Label label2; private Label label3; - private TextBox textBoxCount; - private TextBox textBoxSum; - private ComboBox comboBoxSushi; + private TextBox TextBoxCount; + private TextBox TextBoxSum; + private ComboBox ComboBoxSushi; } } \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormCreateOrder.cs b/SushiBar/SushiBar/Forms/FormCreateOrder.cs index 216ce4f..b447051 100644 --- a/SushiBar/SushiBar/Forms/FormCreateOrder.cs +++ b/SushiBar/SushiBar/Forms/FormCreateOrder.cs @@ -1,35 +1,113 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using Microsoft.Extensions.Logging; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.SearchModels; +using SushiBarContracts.ViewModels; namespace SushiBar.Forms { - public partial class FormCreateOrder + public partial class FormCreateOrder : Form { - private void buttonSave_Click(object sender, EventArgs e) + private readonly ILogger _logger; + private readonly ISushiLogic _logicS; + private readonly IOrderLogic _logicO; + public FormCreateOrder(ILogger logger, ISushiLogic logicS, IOrderLogic logicO) { - ButtonSave_Click(sender, e); + InitializeComponent(); + _logger = logger; + _logicS = logicS; + _logicO = logicO; } - - private void buttonCancel_Click(object sender, EventArgs e) + private void FormCreateOrder_Load(object sender, EventArgs e) { - ButtonCancel_Click(sender, e); + try + { + _logger.LogInformation("Загрузка суши для заказа"); + List? _list = _logicS.ReadList(null); + if (_list != null) + { + ComboBoxSushi.DisplayMember = "SushiName"; + ComboBoxSushi.ValueMember = "Id"; + ComboBoxSushi.DataSource = _list; + ComboBoxSushi.SelectedItem = null; + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки суши"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - - private void textBoxCount_TextChanged(object sender, EventArgs e) + private void CalcSum() { - TextBoxCount_TextChanged(sender, e); + if (ComboBoxSushi.SelectedValue != null && !string.IsNullOrEmpty(TextBoxCount.Text)) + { + try + { + int id = Convert.ToInt32(ComboBoxSushi.SelectedValue); + var sushi = _logicS.ReadElement(new SushiSearchModel + { + Id = id + }); + int count = Convert.ToInt32(TextBoxCount.Text); + TextBoxSum.Text = Math.Round(count * (sushi?.Price ?? 0), 2).ToString(); + _logger.LogInformation("Расчет суммы заказа"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка расчета суммы заказа"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } } - - private void comboBoxSushi_SelectedIndexChanged(object sender, EventArgs e) + private void TextBoxCount_TextChanged(object sender, EventArgs e) { - ComboBoxSushi_SelectedIndexChanged(sender, e); + CalcSum(); + } + private void ComboBoxSushi_SelectedIndexChanged(object sender, EventArgs e) + { + CalcSum(); + } + private void ButtonSave_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(TextBoxCount.Text)) + { + MessageBox.Show("Заполните поле Количество", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (ComboBoxSushi.SelectedValue == null) + { + MessageBox.Show("Выберите изделие", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + _logger.LogInformation("Создание заказа"); + try + { + var operationResult = _logicO.CreateOrder(new OrderBindingModel + { + SushiId = Convert.ToInt32(ComboBoxSushi.SelectedValue), + Count = Convert.ToInt32(TextBoxCount.Text), + Sum = Convert.ToDouble(TextBoxSum.Text) + }); + if (!operationResult) + { + throw new Exception("Ошибка при создании заказа. Дополнительная информация в логах."); + } + MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); + DialogResult = DialogResult.OK; + Close(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); } } } diff --git a/SushiBar/SushiBar/Forms/FormCreateOrderLogic.cs b/SushiBar/SushiBar/Forms/FormCreateOrderLogic.cs deleted file mode 100644 index 4801e2e..0000000 --- a/SushiBar/SushiBar/Forms/FormCreateOrderLogic.cs +++ /dev/null @@ -1,115 +0,0 @@ -using Microsoft.Extensions.Logging; -using Microsoft.VisualBasic.Logging; -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; -using SushiBarContracts.SearchModels; -using SushiBarContracts.ViewModels; -using System.Windows.Forms; - -namespace SushiBar.Forms -{ - public partial class FormCreateOrder : Form - { - private readonly ILogger _logger; - private readonly ISushiLogic _logicS; - private readonly IOrderLogic _logicO; - public FormCreateOrder(ILogger logger, ISushiLogic logicS, IOrderLogic logicO) - { - InitializeComponent(); - _logger = logger; - _logicS = logicS; - _logicO = logicO; - } - private void FormCreateOrder_Load(object sender, EventArgs e) - { - try - { - _logger.LogInformation("Загрузка суши для заказа"); - List? _list = _logicS.ReadList(null); - if (_list != null) - { - comboBoxSushi.DisplayMember = "SushiName"; - comboBoxSushi.ValueMember = "Id"; - comboBoxSushi.DataSource = _list; - comboBoxSushi.SelectedItem = null; - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки суши"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void CalcSum() - { - if (comboBoxSushi.SelectedValue != null && !string.IsNullOrEmpty(textBoxCount.Text)) - { - try - { - int id = Convert.ToInt32(comboBoxSushi.SelectedValue); - var sushi = _logicS.ReadElement(new SushiSearchModel - { - Id = id - }); - int count = Convert.ToInt32(textBoxCount.Text); - textBoxSum.Text = Math.Round(count * (sushi?.Price ?? 0), 2).ToString(); - _logger.LogInformation("Расчет суммы заказа"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка расчета суммы заказа"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } - } - private void TextBoxCount_TextChanged(object sender, EventArgs e) - { - CalcSum(); - } - private void ComboBoxSushi_SelectedIndexChanged(object sender, EventArgs e) - { - CalcSum(); - } - private void ButtonSave_Click(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(textBoxCount.Text)) - { - MessageBox.Show("Заполните поле Количество", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - if (comboBoxSushi.SelectedValue == null) - { - MessageBox.Show("Выберите изделие", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - _logger.LogInformation("Создание заказа"); - try - { - var operationResult = _logicO.CreateOrder(new OrderBindingModel - { - SushiId = Convert.ToInt32(comboBoxSushi.SelectedValue), - Count = Convert.ToInt32(textBoxCount.Text), - Sum = Convert.ToDouble(textBoxSum.Text) - }); - if (!operationResult) - { - throw new Exception("Ошибка при создании заказа. Дополнительная информация в логах."); - } - MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); - DialogResult = DialogResult.OK; - Close(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка создания заказа"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonCancel_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormMain.Designer.cs b/SushiBar/SushiBar/Forms/FormMain.Designer.cs index 95b8398..2c33225 100644 --- a/SushiBar/SushiBar/Forms/FormMain.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormMain.Designer.cs @@ -30,10 +30,13 @@ { dataGridView = new DataGridView(); menuStrip1 = new MenuStrip(); - ToolStripMenuItem = new ToolStripMenuItem(); + toolStripMenuItem = new ToolStripMenuItem(); sushiToolStripMenuItem = new ToolStripMenuItem(); componentsToolStripMenuItem = new ToolStripMenuItem(); - clientsToolStripMenuItem = new ToolStripMenuItem(); + отчётыToolStripMenuItem1 = new ToolStripMenuItem(); + sushisReportToolStripMenuItem = new ToolStripMenuItem(); + componentsReportПоСушиToolStripMenuItem = new ToolStripMenuItem(); + orderReportToolStripMenuItem = new ToolStripMenuItem(); отчётыToolStripMenuItem = new ToolStripMenuItem(); sushisToolStripMenuItem = new ToolStripMenuItem(); componentSushisToolStripMenuItem = new ToolStripMenuItem(); @@ -49,46 +52,74 @@ // // dataGridView // + dataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridView.Dock = DockStyle.Left; dataGridView.Location = new Point(0, 28); dataGridView.Name = "dataGridView"; dataGridView.RowHeadersWidth = 51; dataGridView.RowTemplate.Height = 29; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridView.Size = new Size(1303, 696); + dataGridView.Size = new Size(992, 422); dataGridView.TabIndex = 0; // // menuStrip1 // menuStrip1.ImageScalingSize = new Size(20, 20); - menuStrip1.Items.AddRange(new ToolStripItem[] { ToolStripMenuItem, отчётыToolStripMenuItem }); + menuStrip1.Items.AddRange(new ToolStripItem[] { toolStripMenuItem, отчётыToolStripMenuItem1 }); menuStrip1.Location = new Point(0, 0); menuStrip1.Name = "menuStrip1"; menuStrip1.Size = new Size(1501, 28); menuStrip1.TabIndex = 1; menuStrip1.Text = "menuStrip1"; // - // ToolStripMenuItem + // toolStripMenuItem // - ToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { sushiToolStripMenuItem, componentsToolStripMenuItem, clientsToolStripMenuItem }); - ToolStripMenuItem.Name = "ToolStripMenuItem"; - ToolStripMenuItem.Size = new Size(117, 24); - ToolStripMenuItem.Text = "Справочники"; + toolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { sushiToolStripMenuItem, componentsToolStripMenuItem }); + toolStripMenuItem.Name = "toolStripMenuItem"; + toolStripMenuItem.Size = new Size(117, 24); + toolStripMenuItem.Text = "Справочники"; // // sushiToolStripMenuItem // sushiToolStripMenuItem.Name = "sushiToolStripMenuItem"; sushiToolStripMenuItem.Size = new Size(224, 26); sushiToolStripMenuItem.Text = "Суши"; - sushiToolStripMenuItem.Click += sushiToolStripMenuItem_Click; + sushiToolStripMenuItem.Click += SushiToolStripMenuItem_Click; // // componentsToolStripMenuItem // componentsToolStripMenuItem.Name = "componentsToolStripMenuItem"; componentsToolStripMenuItem.Size = new Size(224, 26); componentsToolStripMenuItem.Text = "Компоненты"; - componentsToolStripMenuItem.Click += componentsToolStripMenuItem_Click; + componentsToolStripMenuItem.Click += ComponentsToolStripMenuItem_Click; + // + // отчётыToolStripMenuItem1 + // + отчётыToolStripMenuItem1.DropDownItems.AddRange(new ToolStripItem[] { sushisReportToolStripMenuItem, componentsReportПоСушиToolStripMenuItem, orderReportToolStripMenuItem }); + отчётыToolStripMenuItem1.Name = "отчётыToolStripMenuItem1"; + отчётыToolStripMenuItem1.Size = new Size(73, 24); + отчётыToolStripMenuItem1.Text = "Отчёты"; + // + // sushisReportToolStripMenuItem + // + sushisReportToolStripMenuItem.Name = "sushisReportToolStripMenuItem"; + sushisReportToolStripMenuItem.Size = new Size(243, 26); + sushisReportToolStripMenuItem.Text = "Список суши"; + sushisReportToolStripMenuItem.Click += sushisReportToolStripMenuItem_Click; + // + // componentsReportПоСушиToolStripMenuItem + // + componentsReportПоСушиToolStripMenuItem.Name = "componentsReportПоСушиToolStripMenuItem"; + componentsReportПоСушиToolStripMenuItem.Size = new Size(243, 26); + componentsReportПоСушиToolStripMenuItem.Text = "Компоненты по суши"; + componentsReportПоСушиToolStripMenuItem.Click += componentsReportПоСушиToolStripMenuItem_Click; + // + // orderReportToolStripMenuItem + // + orderReportToolStripMenuItem.Name = "orderReportToolStripMenuItem"; + orderReportToolStripMenuItem.Size = new Size(243, 26); + orderReportToolStripMenuItem.Text = "Список заказов"; + orderReportToolStripMenuItem.Click += orderReportToolStripMenuItem_Click; // // clientsToolStripMenuItem // @@ -99,89 +130,82 @@ // // отчётыToolStripMenuItem // - отчётыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { sushisToolStripMenuItem, componentSushisToolStripMenuItem, ordersToolStripMenuItem }); отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; - отчётыToolStripMenuItem.Size = new Size(73, 24); - отчётыToolStripMenuItem.Text = "Отчёты"; + отчётыToolStripMenuItem.Size = new Size(32, 19); // // sushisToolStripMenuItem // sushisToolStripMenuItem.Name = "sushisToolStripMenuItem"; - sushisToolStripMenuItem.Size = new Size(276, 26); - sushisToolStripMenuItem.Text = "Список суши"; - sushisToolStripMenuItem.Click += sushisToolStripMenuItem_Click; + sushisToolStripMenuItem.Size = new Size(32, 19); // // componentSushisToolStripMenuItem // componentSushisToolStripMenuItem.Name = "componentSushisToolStripMenuItem"; - componentSushisToolStripMenuItem.Size = new Size(276, 26); - componentSushisToolStripMenuItem.Text = "Компоненты по изделиям"; - componentSushisToolStripMenuItem.Click += componentSushisToolStripMenuItem_Click; + componentSushisToolStripMenuItem.Size = new Size(32, 19); // // ordersToolStripMenuItem // ordersToolStripMenuItem.Name = "ordersToolStripMenuItem"; - ordersToolStripMenuItem.Size = new Size(276, 26); - ordersToolStripMenuItem.Text = "Список заказов"; - ordersToolStripMenuItem.Click += ordersToolStripMenuItem_Click; + ordersToolStripMenuItem.Size = new Size(32, 19); // // buttonCreateOrder // buttonCreateOrder.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonCreateOrder.Location = new Point(1309, 57); + buttonCreateOrder.Location = new Point(998, 31); buttonCreateOrder.Name = "buttonCreateOrder"; buttonCreateOrder.Size = new Size(180, 30); buttonCreateOrder.TabIndex = 8; buttonCreateOrder.Text = "Создать заказ"; buttonCreateOrder.UseVisualStyleBackColor = true; - buttonCreateOrder.Click += buttonCreateOrder_Click; + buttonCreateOrder.Click += ButtonCreateOrder_Click; // // buttonTakeOrderInWork // buttonTakeOrderInWork.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonTakeOrderInWork.Location = new Point(1309, 93); + buttonTakeOrderInWork.Location = new Point(998, 67); buttonTakeOrderInWork.Name = "buttonTakeOrderInWork"; buttonTakeOrderInWork.Size = new Size(180, 30); buttonTakeOrderInWork.TabIndex = 9; buttonTakeOrderInWork.Text = "Отдать на выполнение"; buttonTakeOrderInWork.UseVisualStyleBackColor = true; - buttonTakeOrderInWork.Click += buttonTakeOrderInWork_Click; + buttonTakeOrderInWork.Click += ButtonTakeOrderInWork_Click; // // buttonOrderReady // buttonOrderReady.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonOrderReady.Location = new Point(1309, 129); + buttonOrderReady.Location = new Point(998, 103); buttonOrderReady.Name = "buttonOrderReady"; buttonOrderReady.Size = new Size(180, 30); buttonOrderReady.TabIndex = 10; buttonOrderReady.Text = "Заказ готов"; buttonOrderReady.UseVisualStyleBackColor = true; - buttonOrderReady.Click += buttonOrderReady_Click; + buttonOrderReady.Click += ButtonOrderReady_Click; // // buttonIssuedOrder // buttonIssuedOrder.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonIssuedOrder.Location = new Point(1309, 165); + buttonIssuedOrder.Location = new Point(998, 139); buttonIssuedOrder.Name = "buttonIssuedOrder"; buttonIssuedOrder.Size = new Size(180, 30); buttonIssuedOrder.TabIndex = 11; buttonIssuedOrder.Text = "Заказ Выдан"; buttonIssuedOrder.UseVisualStyleBackColor = true; - buttonIssuedOrder.Click += buttonIssuedOrder_Click; + buttonIssuedOrder.Click += ButtonIssuedOrder_Click; // // buttonRef // buttonRef.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonRef.Location = new Point(1309, 201); + buttonRef.Location = new Point(998, 175); buttonRef.Name = "buttonRef"; buttonRef.Size = new Size(180, 30); buttonRef.TabIndex = 12; buttonRef.Text = "Обновить список"; buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += buttonRef_Click; + buttonRef.Click += ButtonRef_Click; // // FormMain // + AllowDrop = true; AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(1501, 724); @@ -195,6 +219,7 @@ MainMenuStrip = menuStrip1; Name = "FormMain"; Text = "Сушибар"; + WindowState = FormWindowState.Maximized; Load += FormMain_Load; ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); menuStrip1.ResumeLayout(false); @@ -207,18 +232,21 @@ private DataGridView dataGridView; private MenuStrip menuStrip1; - private ToolStripMenuItem ToolStripMenuItem; + private Button buttonCreateOrder; + private Button buttonTakeOrderInWork; + private Button buttonOrderReady; + private Button buttonIssuedOrder; + private Button buttonRef; + private ToolStripMenuItem toolStripMenuItem; private ToolStripMenuItem sushiToolStripMenuItem; private ToolStripMenuItem componentsToolStripMenuItem; private ToolStripMenuItem отчётыToolStripMenuItem; private ToolStripMenuItem sushisToolStripMenuItem; private ToolStripMenuItem componentSushisToolStripMenuItem; private ToolStripMenuItem ordersToolStripMenuItem; - private Button buttonCreateOrder; - private Button buttonTakeOrderInWork; - private Button buttonOrderReady; - private Button buttonIssuedOrder; - private Button buttonRef; - private ToolStripMenuItem clientsToolStripMenuItem; + private ToolStripMenuItem отчётыToolStripMenuItem1; + private ToolStripMenuItem sushisReportToolStripMenuItem; + private ToolStripMenuItem componentsReportПоСушиToolStripMenuItem; + private ToolStripMenuItem orderReportToolStripMenuItem; } } \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormMain.cs b/SushiBar/SushiBar/Forms/FormMain.cs index 2f700f3..3553e15 100644 --- a/SushiBar/SushiBar/Forms/FormMain.cs +++ b/SushiBar/SushiBar/Forms/FormMain.cs @@ -1,55 +1,171 @@ -namespace SushiBar.Forms +using Microsoft.Extensions.Logging; +using SushiBarBusinessLogic.BusinessLogics; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; + +namespace SushiBar.Forms { - public partial class FormMain + public partial class FormMain : Form { - private void buttonCreateOrder_Click(object sender, EventArgs e) + private readonly ILogger _logger; + private readonly IOrderLogic _orderLogic; + private readonly IReportLogic _reportLogic; + public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic) { - ButtonCreateOrder_Click(sender, e); + InitializeComponent(); + _logger = logger; + _orderLogic = orderLogic; + _reportLogic = reportLogic; + } + private void FormMain_Load(object sender, EventArgs e) + { + LoadData(); + } + private void LoadData() + { + try + { + var list = _orderLogic.ReadList(null); + if (list != null) + { + dataGridView.DataSource = list; + dataGridView.Columns["SushiId"].Visible = false; + dataGridView.Columns["SushiName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + _logger.LogInformation("Загрузка заказов"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки суши"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ComponentsToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); + if (service is FormComponents form) + { + form.ShowDialog(); + } + } + private void SushiToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormSushis)); + if (service is FormSushis form) + { + form.ShowDialog(); + } + } + private void ButtonCreateOrder_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); + if (service is FormCreateOrder form) + { + form.ShowDialog(); + LoadData(); + } + } + private void ButtonTakeOrderInWork_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Заказ №{id}. Меняется статус на 'В работе'", id); + try + { + var operationResult = _orderLogic.TakeOrderInWork(new OrderBindingModel { Id = id }); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка передачи заказа в работу"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + private void ButtonOrderReady_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Заказ №{id}. Меняется статус на 'Готов'", id); + try + { + var operationResult = _orderLogic.FinishOrder(new OrderBindingModel { Id = id }); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка отметки о готовности заказа"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + private void ButtonIssuedOrder_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Заказ №{id}. Меняется статус на 'Выдан'", id); + try + { + var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel { Id = id }); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + _logger.LogInformation("Заказ №{id} выдан", id); + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка отметки о выдачи заказа"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + private void ButtonRef_Click(object sender, EventArgs e) + { + LoadData(); } - private void buttonTakeOrderInWork_Click(object sender, EventArgs e) + private void sushisReportToolStripMenuItem_Click(object sender, EventArgs e) { - ButtonTakeOrderInWork_Click(sender, e); + using var dialog = new SaveFileDialog { Filter = "docx|*.docx" }; + if (dialog.ShowDialog() == DialogResult.OK) + { + _reportLogic.SaveSushisToWordFile(new ReportBindingModel + { + FileName = dialog.FileName + }); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } } - private void buttonOrderReady_Click(object sender, EventArgs e) + private void componentsReportПоСушиToolStripMenuItem_Click(object sender, EventArgs e) { - ButtonOrderReady_Click(sender, e); + var service = Program.ServiceProvider?.GetService(typeof(FormReportSushiComponents)); + if (service is FormReportSushiComponents form) + { + form.ShowDialog(); + } } - private void buttonIssuedOrder_Click(object sender, EventArgs e) + private void orderReportToolStripMenuItem_Click(object sender, EventArgs e) { - ButtonIssuedOrder_Click(sender, e); - } - - private void buttonRef_Click(object sender, EventArgs e) - { - ButtonRef_Click(sender, e); - } - - private void sushiToolStripMenuItem_Click(object sender, EventArgs e) - { - SushiToolStripMenuItem_Click(sender, e); - } - - private void componentsToolStripMenuItem_Click(object sender, EventArgs e) - { - ComponentsToolStripMenuItem_Click(sender, e); - } - - private void componentSushisToolStripMenuItem_Click(object sender, EventArgs e) - { - ComponentSushisToolStripMenuItem_Click(sender, e); - } - - private void ordersToolStripMenuItem_Click(object sender, EventArgs e) - { - OrdersToolStripMenuItem_Click(sender, e); - } - - private void sushisToolStripMenuItem_Click(object sender, EventArgs e) - { - SushisToolStripMenuItem_Click(sender, e); + var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders)); + if (service is FormReportOrders form) + { + form.ShowDialog(); + } } private void clientsToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/SushiBar/SushiBar/Forms/FormMainLogic.cs b/SushiBar/SushiBar/Forms/FormMainLogic.cs deleted file mode 100644 index 8ac21b3..0000000 --- a/SushiBar/SushiBar/Forms/FormMainLogic.cs +++ /dev/null @@ -1,179 +0,0 @@ -using Microsoft.Extensions.Logging; -using SushiBarBusinessLogic.BusinessLogics; -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; -using SushiBarDataModels.Enums; -using System.Windows.Forms; - -namespace SushiBar.Forms -{ - public partial class FormMain : Form - { - private readonly ILogger _logger; - private readonly IOrderLogic _orderLogic; - private IReportLogic _reportLogic; - - public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic) - { - InitializeComponent(); - _logger = logger; - _orderLogic = orderLogic; - _reportLogic = reportLogic; - } - private void FormMain_Load(object sender, EventArgs e) - { - LoadData(); - } - private void LoadData() - { - try - { - var list = _orderLogic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["SushiId"].Visible = false; - dataGridView.Columns["SushiName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка заказов"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки суши"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ComponentsToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); - if (service is FormComponents form) - { - form.ShowDialog(); - } - } - private void SushiToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormSushis)); - if (service is FormSushis form) - { - form.ShowDialog(); - } - } - private void ButtonCreateOrder_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); - if (service is FormCreateOrder form) - { - form.ShowDialog(); - LoadData(); - } - } - private void ButtonTakeOrderInWork_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Заказ №{id}. Меняется статус на 'В работе'", id); - try - { - var operationResult = _orderLogic.TakeOrderInWork(new OrderBindingModel { Id = id }); - if (!operationResult) - { - throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка передачи заказа в работу"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - private void ButtonOrderReady_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Заказ №{id}. Меняется статус на 'Готов'", id); - try - { - var operationResult = _orderLogic.FinishOrder(new OrderBindingModel { Id = id }); - if (!operationResult) - { - throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка отметки о готовности заказа"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - private void ButtonIssuedOrder_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Заказ №{id}. Меняется статус на 'Выдан'", id); - try - { - var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel { Id = id }); - if (!operationResult) - { - throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); - } - _logger.LogInformation("Заказ №{id} выдан", id); - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка отметки о выдачи заказа"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - private void ButtonRef_Click(object sender, EventArgs e) - { - LoadData(); - } - private void SushisToolStripMenuItem_Click(object sender, EventArgs e) - { - using var dialog = new SaveFileDialog { Filter = "docx|*.docx" }; - if (dialog.ShowDialog() == DialogResult.OK) - { - _reportLogic.SaveSushisToWordFile(new ReportBindingModel - { - FileName = dialog.FileName - }); - MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - private void ComponentSushisToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormReportSushiComponents)); - if (service is FormReportSushiComponents form) - { - form.ShowDialog(); - } - } - private void OrdersToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders)); - if (service is FormReportOrders form) - { - form.ShowDialog(); - } - } - private void ClientsToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormClients)); - if (service is FormClients form) - { - form.ShowDialog(); - } - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormReportOrders.Designer.cs b/SushiBar/SushiBar/Forms/FormReportOrders.Designer.cs index a2bf192..0f8e56b 100644 --- a/SushiBar/SushiBar/Forms/FormReportOrders.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormReportOrders.Designer.cs @@ -41,13 +41,13 @@ // // panel // + panel.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; panel.Controls.Add(label2); panel.Controls.Add(label1); panel.Controls.Add(dateTimePickerTo); panel.Controls.Add(dateTimePickerFrom); panel.Controls.Add(buttonToPdf); panel.Controls.Add(buttonMake); - panel.Dock = DockStyle.Top; panel.Location = new Point(0, 0); panel.Name = "panel"; panel.Size = new Size(1242, 51); @@ -107,9 +107,11 @@ // // panelBody // - panelBody.Location = new Point(0, 57); + panelBody.AllowDrop = true; + panelBody.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + panelBody.Location = new Point(12, 57); panelBody.Name = "panelBody"; - panelBody.Size = new Size(1242, 515); + panelBody.Size = new Size(1218, 506); panelBody.TabIndex = 1; // // FormReportOrders diff --git a/SushiBar/SushiBar/Forms/FormReportOrders.cs b/SushiBar/SushiBar/Forms/FormReportOrders.cs index 0b34390..3c145f2 100644 --- a/SushiBar/SushiBar/Forms/FormReportOrders.cs +++ b/SushiBar/SushiBar/Forms/FormReportOrders.cs @@ -1,25 +1,93 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using Microsoft.Extensions.Logging; +using Microsoft.Reporting.WinForms; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; namespace SushiBar.Forms { - public partial class FormReportOrders + public partial class FormReportOrders : Form { + private readonly ReportViewer reportViewer; + private readonly ILogger _logger; + private readonly IReportLogic _logic; + public FormReportOrders(ILogger logger, IReportLogic logic) + { + InitializeComponent(); + _logger = logger; + _logic = logic; + reportViewer = new ReportViewer + { + Dock = DockStyle.Fill + }; + reportViewer.LocalReport.LoadReportDefinition( + new FileStream("Report/ReportOrders.rdlc", FileMode.Open)); + panelBody.Controls.Add(reportViewer); + } private void buttonMake_Click(object sender, EventArgs e) { - ButtonMake_Click(sender, e); + if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date) + { + MessageBox.Show("Дата начала должна быть меньше даты окончания", + "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + try + { + var dataSource = _logic.GetOrders(new ReportBindingModel + { + DateFrom = dateTimePickerFrom.Value, + DateTo = dateTimePickerTo.Value + }); + var source = new ReportDataSource("DataSetOrders", dataSource); + reportViewer.LocalReport.DataSources.Clear(); + reportViewer.LocalReport.DataSources.Add(source); + var parameters = new[] { + new ReportParameter("ReportParameterPeriod", + $"c{dateTimePickerFrom.Value.ToShortDateString()} по" + + $" {dateTimePickerTo.Value.ToShortDateString()}") }; + reportViewer.LocalReport.SetParameters(parameters); + reportViewer.RefreshReport(); + _logger.LogInformation("Загрузка списка заказов на период {From}-{ To}", + dateTimePickerFrom.Value.ToShortDateString(), + dateTimePickerTo.Value.ToShortDateString()); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки списка заказов на период"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - private void buttonToPdf_Click(object sender, EventArgs e) { - ButtonToPdf_Click(sender, e); + if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date) + { + MessageBox.Show("Дата начала должна быть меньше даты окончания", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + using var dialog = new SaveFileDialog + { + Filter = "pdf|*.pdf" + }; + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); + _logic.SaveOrdersToPdfFile(new ReportBindingModel + { + FileName = dialog.FileName, + DateFrom = dateTimePickerFrom.Value, + DateTo = dateTimePickerTo.Value + }); + _logger.LogInformation("Сохранение списка заказов на период { From}-{ To}", dateTimePickerFrom.Value.ToShortDateString(), dateTimePickerTo.Value.ToShortDateString()); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения списка заказов на период"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } } diff --git a/SushiBar/SushiBar/Forms/FormReportOrdersLogic.cs b/SushiBar/SushiBar/Forms/FormReportOrdersLogic.cs deleted file mode 100644 index b8da484..0000000 --- a/SushiBar/SushiBar/Forms/FormReportOrdersLogic.cs +++ /dev/null @@ -1,93 +0,0 @@ -using Microsoft.Extensions.Logging; -using Microsoft.Reporting.WinForms; -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; - -namespace SushiBar.Forms -{ - public partial class FormReportOrders : Form - { - private readonly ReportViewer reportViewer; - private readonly ILogger _logger; - private readonly IReportLogic _logic; - public FormReportOrders(ILogger logger, IReportLogic logic) - { - InitializeComponent(); - _logger = logger; - _logic = logic; - reportViewer = new ReportViewer - { - Dock = DockStyle.Fill - }; - reportViewer.LocalReport.LoadReportDefinition( - new FileStream("Report/ReportOrders.rdlc", FileMode.Open)); - panelBody.Controls.Add(reportViewer); - } - private void ButtonMake_Click(object sender, EventArgs e) - { - if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date) - { - MessageBox.Show("Дата начала должна быть меньше даты окончания", - "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - try - { - var dataSource = _logic.GetOrders(new ReportBindingModel - { - DateFrom = dateTimePickerFrom.Value, - DateTo = dateTimePickerTo.Value - }); - var source = new ReportDataSource("DataSetOrders", dataSource); - reportViewer.LocalReport.DataSources.Clear(); - reportViewer.LocalReport.DataSources.Add(source); - var parameters = new[] { - new ReportParameter("ReportParameterPeriod", - $"c{dateTimePickerFrom.Value.ToShortDateString()} по" + - $" {dateTimePickerTo.Value.ToShortDateString()}") }; - reportViewer.LocalReport.SetParameters(parameters); - reportViewer.RefreshReport(); - _logger.LogInformation("Загрузка списка заказов на период {From}-{ To}", - dateTimePickerFrom.Value.ToShortDateString(), - dateTimePickerTo.Value.ToShortDateString()); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки списка заказов на период"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonToPdf_Click(object sender, EventArgs e) - { - if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date) - { - MessageBox.Show("Дата начала должна быть меньше даты окончания", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - using var dialog = new SaveFileDialog - { - Filter = "pdf|*.pdf" - }; - if (dialog.ShowDialog() == DialogResult.OK) - { - try - { - System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); - _logic.SaveOrdersToPdfFile(new ReportBindingModel - { - FileName = dialog.FileName, - DateFrom = dateTimePickerFrom.Value, - DateTo = dateTimePickerTo.Value - }); - _logger.LogInformation("Сохранение списка заказов на период { From}-{ To}", dateTimePickerFrom.Value.ToShortDateString(), dateTimePickerTo.Value.ToShortDateString()); - MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка сохранения списка заказов на период"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormReportSushiComponents.Designer.cs b/SushiBar/SushiBar/Forms/FormReportSushiComponents.Designer.cs index ed3b55e..23a38f1 100644 --- a/SushiBar/SushiBar/Forms/FormReportSushiComponents.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormReportSushiComponents.Designer.cs @@ -48,6 +48,7 @@ // // dataGridView // + dataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; dataGridView.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridView.Columns.AddRange(new DataGridViewColumn[] { Component, Sushi, Count }); @@ -83,6 +84,7 @@ // // FormReportSushiComponents // + AllowDrop = true; AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(909, 457); diff --git a/SushiBar/SushiBar/Forms/FormReportSushiComponents.cs b/SushiBar/SushiBar/Forms/FormReportSushiComponents.cs index ca59aed..15bc80e 100644 --- a/SushiBar/SushiBar/Forms/FormReportSushiComponents.cs +++ b/SushiBar/SushiBar/Forms/FormReportSushiComponents.cs @@ -1,10 +1,79 @@ -namespace SushiBar.Forms +using Microsoft.Extensions.Logging; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; +using System.Windows.Forms; + +namespace SushiBar.Forms { - public partial class FormReportSushiComponents + public partial class FormReportSushiComponents : Form { + private readonly ILogger _logger; + private readonly IReportLogic _logic; + public FormReportSushiComponents(ILogger + logger, IReportLogic logic) + { + InitializeComponent(); + _logger = logger; + _logic = logic; + } + private void FormReportSushiComponents_Load(object sender, EventArgs e) + { + try + { + var dict = _logic.GetSushiComponent(); + if (dict != null) + { + dataGridView.Rows.Clear(); + foreach (var elem in dict) + { + dataGridView.Rows.Add(new object[] { + elem.SushiName, "", "" + }); + foreach (var listElem in elem.Components) + { + dataGridView.Rows.Add(new object[] { + "", listElem.Item1, listElem.Item2 + }); + } + dataGridView.Rows.Add(new object[] { + "Итого", "", elem.TotalCount + }); + dataGridView.Rows.Add(Array.Empty()); + } + } + _logger.LogInformation("Загрузка списка суши по компонентам"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки списка изделий по компонентам"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } private void buttonSaveToExcel_Click(object sender, EventArgs e) { - ButtonSaveToExcel_Click(sender, e); + using var dialog = new SaveFileDialog + { + Filter = "xlsx|*.xlsx" + }; + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + _logic.SaveSushiComponentToExcelFile(new ReportBindingModel + { + FileName = dialog.FileName + }); + _logger.LogInformation("Сохранение списка изделий по компонентам"); + + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения списка изделий по компонентам"); + + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } } diff --git a/SushiBar/SushiBar/Forms/FormReportSushiComponents.resx b/SushiBar/SushiBar/Forms/FormReportSushiComponents.resx index 4086d67..2a73aa9 100644 --- a/SushiBar/SushiBar/Forms/FormReportSushiComponents.resx +++ b/SushiBar/SushiBar/Forms/FormReportSushiComponents.resx @@ -126,13 +126,4 @@ True - - True - - - True - - - True - \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormReportSushiComponentsLogic.cs b/SushiBar/SushiBar/Forms/FormReportSushiComponentsLogic.cs deleted file mode 100644 index 7ec0539..0000000 --- a/SushiBar/SushiBar/Forms/FormReportSushiComponentsLogic.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Microsoft.Extensions.Logging; -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; -using System.Windows.Forms; - -namespace SushiBar.Forms -{ - public partial class FormReportSushiComponents : Form - { - private readonly ILogger _logger; - private readonly IReportLogic _logic; - public FormReportSushiComponents(ILogger - logger, IReportLogic logic) - { - InitializeComponent(); - _logger = logger; - _logic = logic; - } - private void FormReportSushiComponents_Load(object sender, EventArgs e) - { - try - { - var dict = _logic.GetSushiComponent(); - if (dict != null) - { - dataGridView.Rows.Clear(); - foreach (var elem in dict) - { - dataGridView.Rows.Add(new object[] { - elem.SushiName, "", "" - }); - foreach (var listElem in elem.Components) - { - dataGridView.Rows.Add(new object[] { - "", listElem.Item1, listElem.Item2 - }); - } - dataGridView.Rows.Add(new object[] { - "Итого", "", elem.TotalCount - }); - dataGridView.Rows.Add(Array.Empty()); - } - } - _logger.LogInformation("Загрузка списка суши по компонентам"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки списка изделий по компонентам"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonSaveToExcel_Click(object sender, EventArgs e) - { - using var dialog = new SaveFileDialog - { - Filter = "xlsx|*.xlsx" - }; - if (dialog.ShowDialog() == DialogResult.OK) - { - try - { - _logic.SaveSushiComponentToExcelFile(new ReportBindingModel - { - FileName = dialog.FileName - }); - _logger.LogInformation("Сохранение списка изделий по компонентам"); - - MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка сохранения списка изделий по компонентам"); - - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormSushi.Designer.cs b/SushiBar/SushiBar/Forms/FormSushi.Designer.cs index 83ce316..732a2df 100644 --- a/SushiBar/SushiBar/Forms/FormSushi.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormSushi.Designer.cs @@ -28,17 +28,17 @@ /// private void InitializeComponent() { - buttonAdd = new Button(); + ButtonAdd = new Button(); dataGridView = new DataGridView(); ID = new DataGridViewTextBoxColumn(); ComponentName = new DataGridViewTextBoxColumn(); ComponentCount = new DataGridViewTextBoxColumn(); groupBox1 = new GroupBox(); - buttonRef = new Button(); - buttonDel = new Button(); - buttonUpd = new Button(); - buttonSave = new Button(); - buttonCancel = new Button(); + ButtonRef = new Button(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonSave = new Button(); + ButtonCancel = new Button(); label1 = new Label(); label2 = new Label(); textBoxPrice = new TextBox(); @@ -47,16 +47,17 @@ groupBox1.SuspendLayout(); SuspendLayout(); // - // buttonAdd + // ButtonAdd // - buttonAdd.Location = new Point(640, 29); - buttonAdd.Margin = new Padding(3, 4, 3, 4); - buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(126, 39); - buttonAdd.TabIndex = 0; - buttonAdd.Text = "Добавить"; - buttonAdd.UseVisualStyleBackColor = true; - buttonAdd.Click += buttonAdd_Click; + ButtonAdd.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonAdd.Location = new Point(614, 28); + ButtonAdd.Margin = new Padding(3, 4, 3, 4); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(151, 39); + ButtonAdd.TabIndex = 0; + ButtonAdd.Text = "Добавить"; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; // // dataGridView // @@ -72,7 +73,7 @@ dataGridView.RowHeadersWidth = 51; dataGridView.RowTemplate.Height = 25; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridView.Size = new Size(630, 263); + dataGridView.Size = new Size(605, 243); dataGridView.TabIndex = 1; // // ID @@ -102,76 +103,80 @@ // // groupBox1 // - groupBox1.Controls.Add(buttonRef); - groupBox1.Controls.Add(buttonDel); - groupBox1.Controls.Add(buttonUpd); + groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox1.Controls.Add(ButtonRef); + groupBox1.Controls.Add(ButtonDel); + groupBox1.Controls.Add(ButtonUpd); groupBox1.Controls.Add(dataGridView); - groupBox1.Controls.Add(buttonAdd); + groupBox1.Controls.Add(ButtonAdd); groupBox1.Location = new Point(14, 101); groupBox1.Margin = new Padding(3, 4, 3, 4); groupBox1.Name = "groupBox1"; groupBox1.Padding = new Padding(3, 4, 3, 4); - groupBox1.Size = new Size(773, 295); + groupBox1.Size = new Size(774, 295); groupBox1.TabIndex = 2; groupBox1.TabStop = false; groupBox1.Text = "Компоненты"; // // buttonRef // - buttonRef.Location = new Point(640, 169); - buttonRef.Margin = new Padding(3, 4, 3, 4); - buttonRef.Name = "buttonRef"; - buttonRef.Size = new Size(126, 39); - buttonRef.TabIndex = 4; - buttonRef.Text = "Обновить"; - buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += buttonRef_Click; + ButtonRef.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonRef.Location = new Point(614, 168); + ButtonRef.Margin = new Padding(3, 4, 3, 4); + ButtonRef.Name = "ButtonRef"; + ButtonRef.Size = new Size(151, 39); + ButtonRef.TabIndex = 4; + ButtonRef.Text = "Обновить"; + ButtonRef.UseVisualStyleBackColor = true; + ButtonRef.Click += ButtonRef_Click; // - // buttonDel + // ButtonDel // - buttonDel.Location = new Point(640, 123); - buttonDel.Margin = new Padding(3, 4, 3, 4); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(126, 39); - buttonDel.TabIndex = 3; - buttonDel.Text = "Удалить"; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += buttonDel_Click; + ButtonDel.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonDel.Location = new Point(614, 122); + ButtonDel.Margin = new Padding(3, 4, 3, 4); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(151, 39); + ButtonDel.TabIndex = 3; + ButtonDel.Text = "Удалить"; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; // - // buttonUpd + // ButtonUpd // - buttonUpd.Location = new Point(640, 76); - buttonUpd.Margin = new Padding(3, 4, 3, 4); - buttonUpd.Name = "buttonUpd"; - buttonUpd.Size = new Size(126, 39); - buttonUpd.TabIndex = 2; - buttonUpd.Text = "Изменить"; - buttonUpd.UseVisualStyleBackColor = true; - buttonUpd.Click += buttonUpd_Click; + ButtonUpd.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonUpd.Location = new Point(614, 75); + ButtonUpd.Margin = new Padding(3, 4, 3, 4); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(151, 39); + ButtonUpd.TabIndex = 2; + ButtonUpd.Text = "Изменить"; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; // - // buttonSave + // ButtonSave // - buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonSave.Location = new Point(573, 404); - buttonSave.Margin = new Padding(3, 4, 3, 4); - buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(100, 31); - buttonSave.TabIndex = 3; - buttonSave.Text = "Сохранить"; - buttonSave.UseVisualStyleBackColor = true; - buttonSave.Click += buttonSave_Click; + ButtonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + ButtonSave.Location = new Point(573, 404); + ButtonSave.Margin = new Padding(3, 4, 3, 4); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(100, 31); + ButtonSave.TabIndex = 3; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; // - // buttonCancel + // ButtonCancel // - buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCancel.Location = new Point(679, 404); - buttonCancel.Margin = new Padding(3, 4, 3, 4); - buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(100, 31); - buttonCancel.TabIndex = 4; - buttonCancel.Text = "Отмена"; - buttonCancel.UseVisualStyleBackColor = true; - buttonCancel.Click += buttonCancel_Click; + ButtonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + ButtonCancel.Location = new Point(679, 404); + ButtonCancel.Margin = new Padding(3, 4, 3, 4); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(100, 31); + ButtonCancel.TabIndex = 4; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; // // label1 // @@ -209,6 +214,7 @@ // // FormSushi // + AllowDrop = true; AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 451); @@ -216,15 +222,11 @@ Controls.Add(textBoxPrice); Controls.Add(label2); Controls.Add(label1); - Controls.Add(buttonCancel); - Controls.Add(buttonSave); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); Controls.Add(groupBox1); - MaximizeBox = false; - MinimizeBox = false; Name = "FormSushi"; - ShowInTaskbar = false; Text = "Суши"; - TopMost = true; Load += FormSushi_Load; ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); groupBox1.ResumeLayout(false); @@ -234,14 +236,14 @@ #endregion - private Button buttonAdd; + private Button ButtonAdd; private DataGridView dataGridView; private GroupBox groupBox1; - private Button buttonRef; - private Button buttonDel; - private Button buttonUpd; - private Button buttonSave; - private Button buttonCancel; + private Button ButtonRef; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonSave; + private Button ButtonCancel; private Label label1; private Label label2; private TextBox textBoxPrice; diff --git a/SushiBar/SushiBar/Forms/FormSushi.cs b/SushiBar/SushiBar/Forms/FormSushi.cs index 8e40fa5..9df5936 100644 --- a/SushiBar/SushiBar/Forms/FormSushi.cs +++ b/SushiBar/SushiBar/Forms/FormSushi.cs @@ -1,35 +1,199 @@ -namespace SushiBar.Forms +using Microsoft.Extensions.Logging; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.SearchModels; +using SushiBarDataModels.Models; + +namespace SushiBar.Forms { - public partial class FormSushi + public partial class FormSushi : Form { - private void buttonAdd_Click(object sender, EventArgs e) + private readonly ILogger _logger; + private readonly ISushiLogic _logic; + private int? _id; + private Dictionary _sushiComponents; + public int Id { set { _id = value; } } + public FormSushi(ILogger logger, ISushiLogic logic) { - ButtonAdd_Click(sender, e); + InitializeComponent(); + _logger = logger; + _logic = logic; + _sushiComponents = new Dictionary(); + } + private void FormSushi_Load(object sender, EventArgs e) + { + if (_id.HasValue) + { + _logger.LogInformation("Загрузка изделия"); + try + { + var view = _logic.ReadElement(new SushiSearchModel + { + Id = _id.Value + }); + if (view != null) + { + textBoxName.Text = view.SushiName; + textBoxPrice.Text = view.Price.ToString(); + _sushiComponents = view.SushiComponents ?? new Dictionary(); + LoadData(); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки изделия"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + private void LoadData() + { + _logger.LogInformation("Загрузка компонент изделия"); + try + { + if (_sushiComponents != null) + { + dataGridView.Rows.Clear(); + foreach (var sc in _sushiComponents) + { + dataGridView.Rows.Add(new object[] { sc.Key, sc.Value.Item1.ComponentName, sc.Value.Item2 }); + } + textBoxPrice.Text = CalcPrice().ToString(); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки компонент изделия"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); + if (service is FormSushiComponent form) + { + + if (form.ShowDialog() == DialogResult.OK) + { + if (form.ComponentModel == null) + { + return; + } + _logger.LogInformation("Добавление нового компонента: { ComponentName} - { Count}", form.ComponentModel.ComponentName, form.Count); + if (_sushiComponents.ContainsKey(form.Id)) + { + _sushiComponents[form.Id] = (form.ComponentModel, form.Count); + } + else + { + _sushiComponents.Add(form.Id, (form.ComponentModel, form.Count)); + } + LoadData(); + } + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var service = Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); + if (service is FormSushiComponent form) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value); + form.Id = id; + form.Count = _sushiComponents[id].Item2; + if (form.ShowDialog() == DialogResult.OK) + { + if (form.ComponentModel == null) + { + return; + } + _logger.LogInformation("Изменение компонента: { ComponentName} - { Count}", form.ComponentModel.ComponentName, form.Count); + _sushiComponents[form.Id] = (form.ComponentModel, form.Count); + LoadData(); + } + } + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + try + { + _logger.LogInformation("Удаление компонента: { ComponentName} - { Count}", dataGridView.SelectedRows[0].Cells[1].Value); + _sushiComponents?.Remove(Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value)); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + LoadData(); + } + } + } + private void ButtonRef_Click(object sender, EventArgs e) + { + LoadData(); + } + private void ButtonSave_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(textBoxName.Text)) + { + MessageBox.Show("Заполните название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (string.IsNullOrEmpty(textBoxPrice.Text)) + { + MessageBox.Show("Заполните цену", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (_sushiComponents == null || _sushiComponents.Count == 0) + { + MessageBox.Show("Заполните компоненты", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + _logger.LogInformation("Сохранение изделия"); + try + { + var model = new SushiBindingModel + { + Id = _id ?? 0, + SushiName = textBoxName.Text, + Price = Convert.ToDouble(textBoxPrice.Text), + SushiComponents = _sushiComponents + }; + var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); + DialogResult = DialogResult.OK; + Close(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения изделия"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - private void buttonUpd_Click(object sender, EventArgs e) + private void ButtonCancel_Click(object sender, EventArgs e) { - ButtonUpd_Click(sender, e); + DialogResult = DialogResult.Cancel; + Close(); } - - private void buttonDel_Click(object sender, EventArgs e) + private double CalcPrice() { - ButtonDel_Click(sender, e); - } - - private void buttonRef_Click(object sender, EventArgs e) - { - ButtonRef_Click(sender, e); - } - - private void buttonSave_Click(object sender, EventArgs e) - { - ButtonSave_Click(sender, e); - } - - private void buttonCancel_Click(object sender, EventArgs e) - { - ButtonCancel_Click(sender, e); + double price = 0; + foreach (var elem in _sushiComponents) + { + price += ((elem.Value.Item1?.Cost ?? 0) * elem.Value.Item2); + } + return Math.Round(price * 1.1, 2); } } } diff --git a/SushiBar/SushiBar/Forms/FormSushi.resx b/SushiBar/SushiBar/Forms/FormSushi.resx index 610eb88..b17d555 100644 --- a/SushiBar/SushiBar/Forms/FormSushi.resx +++ b/SushiBar/SushiBar/Forms/FormSushi.resx @@ -126,13 +126,4 @@ True - - True - - - True - - - True - \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormSushiComponent.Designer.cs b/SushiBar/SushiBar/Forms/FormSushiComponent.Designer.cs index 0563bb3..fb4e212 100644 --- a/SushiBar/SushiBar/Forms/FormSushiComponent.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormSushiComponent.Designer.cs @@ -32,8 +32,8 @@ label2 = new Label(); comboBoxComponent = new ComboBox(); textBoxCount = new TextBox(); - buttonSave = new Button(); - buttonCancel = new Button(); + ButtonSave = new Button(); + ButtonCancel = new Button(); SuspendLayout(); // // label1 @@ -69,33 +69,34 @@ textBoxCount.Size = new Size(227, 27); textBoxCount.TabIndex = 3; // - // buttonSave + // ButtonSave // - buttonSave.Location = new Point(158, 95); - buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(94, 29); - buttonSave.TabIndex = 4; - buttonSave.Text = "Сохранить"; - buttonSave.UseVisualStyleBackColor = true; - buttonSave.Click += buttonSave_Click; + ButtonSave.Location = new Point(158, 95); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(94, 29); + ButtonSave.TabIndex = 4; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; // - // buttonCancel + // ButtonCancel // - buttonCancel.Location = new Point(258, 95); - buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(94, 29); - buttonCancel.TabIndex = 5; - buttonCancel.Text = "Отмена"; - buttonCancel.UseVisualStyleBackColor = true; - buttonCancel.Click += buttonCancel_Click; + ButtonCancel.Location = new Point(258, 95); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(94, 29); + ButtonCancel.TabIndex = 5; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; // // FormSushiComponent // + AllowDrop = true; AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(364, 132); - Controls.Add(buttonCancel); - Controls.Add(buttonSave); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); Controls.Add(textBoxCount); Controls.Add(comboBoxComponent); Controls.Add(label2); @@ -116,7 +117,7 @@ private Label label2; private ComboBox comboBoxComponent; private TextBox textBoxCount; - private Button buttonSave; - private Button buttonCancel; + private Button ButtonSave; + private Button ButtonCancel; } } \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormSushiComponent.cs b/SushiBar/SushiBar/Forms/FormSushiComponent.cs index 994a0b3..bcbd12e 100644 --- a/SushiBar/SushiBar/Forms/FormSushiComponent.cs +++ b/SushiBar/SushiBar/Forms/FormSushiComponent.cs @@ -1,25 +1,78 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.ViewModels; +using SushiBarDataModels.Models; namespace SushiBar.Forms { - public partial class FormSushiComponent + partial class FormSushiComponent : Form { - private void buttonSave_Click(object sender, EventArgs e) + private readonly List? _list; + public int Id { - ButtonSave_Click(sender, e); + get + { + return Convert.ToInt32(comboBoxComponent.SelectedValue); + } + set + { + comboBoxComponent.SelectedValue = value; + } } - - private void buttonCancel_Click(object sender, EventArgs e) + public IComponentModel? ComponentModel { - ButtonCancel_Click(sender, e); + get + { + if (_list == null) + { + return null; + } + foreach (var elem in _list) + { + if (elem.Id == Id) + { + return elem; + } + } + return null; + } + } + public int Count + { + get { return Convert.ToInt32(textBoxCount.Text); } + set + { textBoxCount.Text = value.ToString(); } + } + public FormSushiComponent(IComponentLogic logic) + { + InitializeComponent(); + _list = logic.ReadList(null); + if (_list != null) + { + comboBoxComponent.DisplayMember = "ComponentName"; + comboBoxComponent.ValueMember = "Id"; + comboBoxComponent.DataSource = _list; + comboBoxComponent.SelectedItem = null; + } + } + private void ButtonSave_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(textBoxCount.Text)) + { + MessageBox.Show("Заполните поле Количество", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (comboBoxComponent.SelectedValue == null) + { + MessageBox.Show("Выберите компонент", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + DialogResult = DialogResult.OK; + Close(); + } + private void ButtonCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); } } } diff --git a/SushiBar/SushiBar/Forms/FormSushiComponentLogic.cs b/SushiBar/SushiBar/Forms/FormSushiComponentLogic.cs deleted file mode 100644 index bcbd12e..0000000 --- a/SushiBar/SushiBar/Forms/FormSushiComponentLogic.cs +++ /dev/null @@ -1,78 +0,0 @@ -using SushiBarContracts.BusinessLogicsContracts; -using SushiBarContracts.ViewModels; -using SushiBarDataModels.Models; - -namespace SushiBar.Forms -{ - partial class FormSushiComponent : Form - { - private readonly List? _list; - public int Id - { - get - { - return Convert.ToInt32(comboBoxComponent.SelectedValue); - } - set - { - comboBoxComponent.SelectedValue = value; - } - } - public IComponentModel? ComponentModel - { - get - { - if (_list == null) - { - return null; - } - foreach (var elem in _list) - { - if (elem.Id == Id) - { - return elem; - } - } - return null; - } - } - public int Count - { - get { return Convert.ToInt32(textBoxCount.Text); } - set - { textBoxCount.Text = value.ToString(); } - } - public FormSushiComponent(IComponentLogic logic) - { - InitializeComponent(); - _list = logic.ReadList(null); - if (_list != null) - { - comboBoxComponent.DisplayMember = "ComponentName"; - comboBoxComponent.ValueMember = "Id"; - comboBoxComponent.DataSource = _list; - comboBoxComponent.SelectedItem = null; - } - } - private void ButtonSave_Click(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(textBoxCount.Text)) - { - MessageBox.Show("Заполните поле Количество", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - if (comboBoxComponent.SelectedValue == null) - { - MessageBox.Show("Выберите компонент", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - DialogResult = DialogResult.OK; - Close(); - } - private void ButtonCancel_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormSushiLogic.cs b/SushiBar/SushiBar/Forms/FormSushiLogic.cs deleted file mode 100644 index 9df5936..0000000 --- a/SushiBar/SushiBar/Forms/FormSushiLogic.cs +++ /dev/null @@ -1,199 +0,0 @@ -using Microsoft.Extensions.Logging; -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; -using SushiBarContracts.SearchModels; -using SushiBarDataModels.Models; - -namespace SushiBar.Forms -{ - public partial class FormSushi : Form - { - private readonly ILogger _logger; - private readonly ISushiLogic _logic; - private int? _id; - private Dictionary _sushiComponents; - public int Id { set { _id = value; } } - public FormSushi(ILogger logger, ISushiLogic logic) - { - InitializeComponent(); - _logger = logger; - _logic = logic; - _sushiComponents = new Dictionary(); - } - private void FormSushi_Load(object sender, EventArgs e) - { - if (_id.HasValue) - { - _logger.LogInformation("Загрузка изделия"); - try - { - var view = _logic.ReadElement(new SushiSearchModel - { - Id = _id.Value - }); - if (view != null) - { - textBoxName.Text = view.SushiName; - textBoxPrice.Text = view.Price.ToString(); - _sushiComponents = view.SushiComponents ?? new Dictionary(); - LoadData(); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки изделия"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - private void LoadData() - { - _logger.LogInformation("Загрузка компонент изделия"); - try - { - if (_sushiComponents != null) - { - dataGridView.Rows.Clear(); - foreach (var sc in _sushiComponents) - { - dataGridView.Rows.Add(new object[] { sc.Key, sc.Value.Item1.ComponentName, sc.Value.Item2 }); - } - textBoxPrice.Text = CalcPrice().ToString(); - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки компонент изделия"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonAdd_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); - if (service is FormSushiComponent form) - { - - if (form.ShowDialog() == DialogResult.OK) - { - if (form.ComponentModel == null) - { - return; - } - _logger.LogInformation("Добавление нового компонента: { ComponentName} - { Count}", form.ComponentModel.ComponentName, form.Count); - if (_sushiComponents.ContainsKey(form.Id)) - { - _sushiComponents[form.Id] = (form.ComponentModel, form.Count); - } - else - { - _sushiComponents.Add(form.Id, (form.ComponentModel, form.Count)); - } - LoadData(); - } - } - } - private void ButtonUpd_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - var service = Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); - if (service is FormSushiComponent form) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value); - form.Id = id; - form.Count = _sushiComponents[id].Item2; - if (form.ShowDialog() == DialogResult.OK) - { - if (form.ComponentModel == null) - { - return; - } - _logger.LogInformation("Изменение компонента: { ComponentName} - { Count}", form.ComponentModel.ComponentName, form.Count); - _sushiComponents[form.Id] = (form.ComponentModel, form.Count); - LoadData(); - } - } - } - } - private void ButtonDel_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - try - { - _logger.LogInformation("Удаление компонента: { ComponentName} - { Count}", dataGridView.SelectedRows[0].Cells[1].Value); - _sushiComponents?.Remove(Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value)); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - LoadData(); - } - } - } - private void ButtonRef_Click(object sender, EventArgs e) - { - LoadData(); - } - private void ButtonSave_Click(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(textBoxName.Text)) - { - MessageBox.Show("Заполните название", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - if (string.IsNullOrEmpty(textBoxPrice.Text)) - { - MessageBox.Show("Заполните цену", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - if (_sushiComponents == null || _sushiComponents.Count == 0) - { - MessageBox.Show("Заполните компоненты", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - _logger.LogInformation("Сохранение изделия"); - try - { - var model = new SushiBindingModel - { - Id = _id ?? 0, - SushiName = textBoxName.Text, - Price = Convert.ToDouble(textBoxPrice.Text), - SushiComponents = _sushiComponents - }; - var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); - if (!operationResult) - { - throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); - } - MessageBox.Show("Сохранение прошло успешно", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); - DialogResult = DialogResult.OK; - Close(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка сохранения изделия"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void ButtonCancel_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); - } - private double CalcPrice() - { - double price = 0; - foreach (var elem in _sushiComponents) - { - price += ((elem.Value.Item1?.Cost ?? 0) * elem.Value.Item2); - } - return Math.Round(price * 1.1, 2); - } - } -} diff --git a/SushiBar/SushiBar/Forms/FormSushis.Designer.cs b/SushiBar/SushiBar/Forms/FormSushis.Designer.cs index b340685..c9606ff 100644 --- a/SushiBar/SushiBar/Forms/FormSushis.Designer.cs +++ b/SushiBar/SushiBar/Forms/FormSushis.Designer.cs @@ -29,10 +29,10 @@ private void InitializeComponent() { dataGridView = new DataGridView(); - buttonRef = new Button(); - buttonDel = new Button(); - buttonUpd = new Button(); - buttonAdd = new Button(); + ButtonRef = new Button(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); SuspendLayout(); // @@ -46,61 +46,67 @@ dataGridView.RowHeadersWidth = 70; dataGridView.RowTemplate.Height = 29; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridView.Size = new Size(762, 450); + dataGridView.Size = new Size(777, 450); dataGridView.TabIndex = 1; // - // buttonRef + // ButtonRef // - buttonRef.Location = new Point(768, 117); - buttonRef.Name = "buttonRef"; - buttonRef.Size = new Size(114, 29); - buttonRef.TabIndex = 8; - buttonRef.Text = "Обновить"; - buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += buttonRef_Click; + ButtonRef.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonRef.Location = new Point(783, 117); + ButtonRef.Name = "ButtonRef"; + ButtonRef.Size = new Size(150, 29); + ButtonRef.TabIndex = 8; + ButtonRef.Text = "Обновить"; + ButtonRef.UseVisualStyleBackColor = true; + ButtonRef.Click += ButtonRef_Click; // - // buttonDel + // ButtonDel // - buttonDel.Location = new Point(768, 82); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(114, 29); - buttonDel.TabIndex = 7; - buttonDel.Text = "Удалить"; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += buttonDel_Click; + ButtonDel.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonDel.Location = new Point(783, 82); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(150, 29); + ButtonDel.TabIndex = 7; + ButtonDel.Text = "Удалить"; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; // - // buttonUpd + // ButtonUpd // - buttonUpd.Location = new Point(768, 47); - buttonUpd.Name = "buttonUpd"; - buttonUpd.Size = new Size(114, 29); - buttonUpd.TabIndex = 6; - buttonUpd.Text = "Изменить"; - buttonUpd.UseVisualStyleBackColor = true; - buttonUpd.Click += buttonUpd_Click; + ButtonUpd.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonUpd.Location = new Point(783, 47); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(150, 29); + ButtonUpd.TabIndex = 6; + ButtonUpd.Text = "Изменить"; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; // - // buttonAdd + // ButtonAdd // - buttonAdd.Location = new Point(768, 12); - buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(114, 29); - buttonAdd.TabIndex = 5; - buttonAdd.Text = "Добавить"; - buttonAdd.UseVisualStyleBackColor = true; - buttonAdd.Click += buttonAdd_Click; + ButtonAdd.Anchor = AnchorStyles.Top | AnchorStyles.Right; + ButtonAdd.Location = new Point(783, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(150, 29); + ButtonAdd.TabIndex = 5; + ButtonAdd.Text = "Добавить"; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; // // FormSushis // + AllowDrop = true; AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(893, 450); - Controls.Add(buttonRef); - Controls.Add(buttonDel); - Controls.Add(buttonUpd); - Controls.Add(buttonAdd); + ClientSize = new Size(945, 450); + Controls.Add(ButtonRef); + Controls.Add(ButtonDel); + Controls.Add(ButtonUpd); + Controls.Add(ButtonAdd); Controls.Add(dataGridView); Name = "FormSushis"; Text = "Суши"; + WindowState = FormWindowState.Maximized; Load += FormSushis_Load; ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); ResumeLayout(false); @@ -109,9 +115,9 @@ #endregion private DataGridView dataGridView; - private Button buttonRef; - private Button buttonDel; - private Button buttonUpd; - private Button buttonAdd; + private Button ButtonRef; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; } } \ No newline at end of file diff --git a/SushiBar/SushiBar/Forms/FormSushis.cs b/SushiBar/SushiBar/Forms/FormSushis.cs index 6a12f95..caefccd 100644 --- a/SushiBar/SushiBar/Forms/FormSushis.cs +++ b/SushiBar/SushiBar/Forms/FormSushis.cs @@ -1,35 +1,99 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; +using Microsoft.Extensions.Logging; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; namespace SushiBar.Forms { - public partial class FormSushis + public partial class FormSushis : Form { - private void buttonAdd_Click(object sender, EventArgs e) + private readonly ILogger _logger; + private readonly ISushiLogic _logic; + public FormSushis(ILogger logger, ISushiLogic logic) { - ButtonAdd_Click(sender, e); + InitializeComponent(); + _logger = logger; + _logic = logic; } - - private void buttonUpd_Click(object sender, EventArgs e) + private void FormSushis_Load(object sender, EventArgs e) { - ButtonUpd_Click(sender, e); + LoadData(); } - - private void buttonDel_Click(object sender, EventArgs e) + private void LoadData() { - ButtonDel_Click(sender, e); + try + { + var list = _logic.ReadList(null); + if (list != null) + { + dataGridView.DataSource = list; + dataGridView.Columns["Id"].Visible = false; + dataGridView.Columns["SushiComponents"].Visible = false; + dataGridView.Columns["SushiName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + _logger.LogInformation("Загрузка суши"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки суши"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - - private void buttonRef_Click(object sender, EventArgs e) + private void ButtonAdd_Click(object sender, EventArgs e) { - ButtonRef_Click(sender, e); + var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); + if (service is FormSushi form) + { + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); + if (service is FormSushi form) + { + form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Удаление компонента"); + try + { + if (!_logic.Delete(new SushiBindingModel + { + Id = id + })) + { + throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления компонента"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + private void ButtonRef_Click(object sender, EventArgs e) + { + LoadData(); } } } diff --git a/SushiBar/SushiBar/Forms/FormSushisLogic.cs b/SushiBar/SushiBar/Forms/FormSushisLogic.cs deleted file mode 100644 index caefccd..0000000 --- a/SushiBar/SushiBar/Forms/FormSushisLogic.cs +++ /dev/null @@ -1,99 +0,0 @@ -using Microsoft.Extensions.Logging; -using SushiBarContracts.BindingModels; -using SushiBarContracts.BusinessLogicsContracts; - -namespace SushiBar.Forms -{ - public partial class FormSushis : Form - { - private readonly ILogger _logger; - private readonly ISushiLogic _logic; - public FormSushis(ILogger logger, ISushiLogic logic) - { - InitializeComponent(); - _logger = logger; - _logic = logic; - } - private void FormSushis_Load(object sender, EventArgs e) - { - LoadData(); - } - private void LoadData() - { - try - { - var list = _logic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["Id"].Visible = false; - dataGridView.Columns["SushiComponents"].Visible = false; - dataGridView.Columns["SushiName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка суши"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки суши"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void ButtonAdd_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); - if (service is FormSushi form) - { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } - } - private void ButtonUpd_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); - if (service is FormSushi form) - { - form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } - } - } - private void ButtonDel_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Удаление компонента"); - try - { - if (!_logic.Delete(new SushiBindingModel - { - Id = id - })) - { - throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка удаления компонента"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - } - private void ButtonRef_Click(object sender, EventArgs e) - { - LoadData(); - } - } -}