diff --git a/FlowerShop/FlowerShop/FormMain.Designer.cs b/FlowerShop/FlowerShop/FormMain.Designer.cs index 0ee62b2..9bb88b8 100644 --- a/FlowerShop/FlowerShop/FormMain.Designer.cs +++ b/FlowerShop/FlowerShop/FormMain.Designer.cs @@ -22,178 +22,6 @@ #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - menuStrip1 = new MenuStrip(); - справочникиToolStripMenuItem = new ToolStripMenuItem(); - ЦветыToolStripMenuItem = new ToolStripMenuItem(); - КомпонентыToolStripMenuItem = new ToolStripMenuItem(); - клиентыToolStripMenuItem = new ToolStripMenuItem(); - исполнителиToolStripMenuItem = new ToolStripMenuItem(); - отчётыToolStripMenuItem = new ToolStripMenuItem(); - списокЦветковToolStripMenuItem = new ToolStripMenuItem(); - компонентыПоЦветамToolStripMenuItem = new ToolStripMenuItem(); - списокЗаказовToolStripMenuItem = new ToolStripMenuItem(); - запускToolStripMenuItem = new ToolStripMenuItem(); - dataGridView = new DataGridView(); - buttonCreateOrder = new Button(); - buttonIssuedOrder = new Button(); - buttonRef = new Button(); - menuStrip1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); - SuspendLayout(); - // - // menuStrip1 - // - menuStrip1.ImageScalingSize = new Size(20, 20); - menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, отчётыToolStripMenuItem, запускToolStripMenuItem }); - menuStrip1.Location = new Point(0, 0); - menuStrip1.Name = "menuStrip1"; - menuStrip1.Padding = new Padding(7, 3, 0, 3); - menuStrip1.Size = new Size(1102, 30); - menuStrip1.TabIndex = 0; - menuStrip1.Text = "menuStrip1"; - // - // справочникиToolStripMenuItem - // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ЦветыToolStripMenuItem, КомпонентыToolStripMenuItem, клиентыToolStripMenuItem, исполнителиToolStripMenuItem }); - справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; - справочникиToolStripMenuItem.Size = new Size(117, 24); - справочникиToolStripMenuItem.Text = "Справочники"; - // - // ЦветыToolStripMenuItem - // - ЦветыToolStripMenuItem.Name = "ЦветыToolStripMenuItem"; - ЦветыToolStripMenuItem.Size = new Size(185, 26); - ЦветыToolStripMenuItem.Text = "Цветы"; - ЦветыToolStripMenuItem.Click += ЦветыToolStripMenuItem_Click; - // - // КомпонентыToolStripMenuItem - // - КомпонентыToolStripMenuItem.Name = "КомпонентыToolStripMenuItem"; - КомпонентыToolStripMenuItem.Size = new Size(185, 26); - КомпонентыToolStripMenuItem.Text = "Компоненты"; - КомпонентыToolStripMenuItem.Click += КомпонентыToolStripMenuItem_Click; - // - // клиентыToolStripMenuItem - // - клиентыToolStripMenuItem.Name = "клиентыToolStripMenuItem"; - клиентыToolStripMenuItem.Size = new Size(185, 26); - клиентыToolStripMenuItem.Text = "Клиенты"; - клиентыToolStripMenuItem.Click += клиентыToolStripMenuItem_Click; - // - // исполнителиToolStripMenuItem - // - исполнителиToolStripMenuItem.Name = "исполнителиToolStripMenuItem"; - исполнителиToolStripMenuItem.Size = new Size(185, 26); - исполнителиToolStripMenuItem.Text = "Исполнители"; - исполнителиToolStripMenuItem.Click += исполнителиToolStripMenuItem_Click; - // - // отчётыToolStripMenuItem - // - отчётыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { списокЦветковToolStripMenuItem, компонентыПоЦветамToolStripMenuItem, списокЗаказовToolStripMenuItem }); - отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; - отчётыToolStripMenuItem.Size = new Size(73, 24); - отчётыToolStripMenuItem.Text = "Отчёты"; - // - // списокЦветковToolStripMenuItem - // - списокЦветковToolStripMenuItem.Name = "списокЦветковToolStripMenuItem"; - списокЦветковToolStripMenuItem.Size = new Size(258, 26); - списокЦветковToolStripMenuItem.Text = "Список цветков"; - списокЦветковToolStripMenuItem.Click += списокЦветковToolStripMenuItem_Click; - // - // компонентыПоЦветамToolStripMenuItem - // - компонентыПоЦветамToolStripMenuItem.Name = "компонентыПоЦветамToolStripMenuItem"; - компонентыПоЦветамToolStripMenuItem.Size = new Size(258, 26); - компонентыПоЦветамToolStripMenuItem.Text = "Компоненты по цветам"; - компонентыПоЦветамToolStripMenuItem.Click += компонентыПоЦветамToolStripMenuItem_Click; - // - // списокЗаказовToolStripMenuItem - // - списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem"; - списокЗаказовToolStripMenuItem.Size = new Size(258, 26); - списокЗаказовToolStripMenuItem.Text = "Список заказов"; - списокЗаказовToolStripMenuItem.Click += списокЗаказовToolStripMenuItem_Click; - // - // запускToolStripMenuItem - // - запускToolStripMenuItem.Name = "запускToolStripMenuItem"; - запускToolStripMenuItem.Size = new Size(114, 24); - запускToolStripMenuItem.Text = "Запуск работ"; - запускToolStripMenuItem.Click += запускToolStripMenuItem_Click; - // - // dataGridView - // - dataGridView.BackgroundColor = Color.White; - dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridView.Location = new Point(14, 36); - dataGridView.Margin = new Padding(3, 4, 3, 4); - dataGridView.Name = "dataGridView"; - dataGridView.RowHeadersWidth = 51; - dataGridView.RowTemplate.Height = 25; - dataGridView.Size = new Size(845, 548); - dataGridView.TabIndex = 1; - // - // buttonCreateOrder - // - buttonCreateOrder.Location = new Point(886, 73); - buttonCreateOrder.Margin = new Padding(3, 4, 3, 4); - buttonCreateOrder.Name = "buttonCreateOrder"; - buttonCreateOrder.Size = new Size(181, 43); - buttonCreateOrder.TabIndex = 2; - buttonCreateOrder.Text = "Создать заказ"; - buttonCreateOrder.UseVisualStyleBackColor = true; - buttonCreateOrder.Click += ButtonCreateOrder_Click; - // - // buttonIssuedOrder - // - buttonIssuedOrder.Location = new Point(886, 147); - buttonIssuedOrder.Margin = new Padding(3, 4, 3, 4); - buttonIssuedOrder.Name = "buttonIssuedOrder"; - buttonIssuedOrder.Size = new Size(181, 43); - buttonIssuedOrder.TabIndex = 3; - buttonIssuedOrder.Text = "Заказ выдан"; - buttonIssuedOrder.UseVisualStyleBackColor = true; - buttonIssuedOrder.Click += ButtonIssuedOrder_Click; - // - // buttonRef - // - buttonRef.Location = new Point(886, 220); - buttonRef.Margin = new Padding(3, 4, 3, 4); - buttonRef.Name = "buttonRef"; - buttonRef.Size = new Size(181, 43); - buttonRef.TabIndex = 6; - buttonRef.Text = "Обновить список"; - buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += ButtonRef_Click; - // - // FormMain - // - AutoScaleDimensions = new SizeF(8F, 20F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1102, 600); - Controls.Add(buttonRef); - Controls.Add(buttonIssuedOrder); - Controls.Add(buttonCreateOrder); - Controls.Add(dataGridView); - Controls.Add(menuStrip1); - MainMenuStrip = menuStrip1; - Margin = new Padding(3, 4, 3, 4); - Name = "FormMain"; - Text = "Цветочный магазин"; - Load += FormMain_Load; - menuStrip1.ResumeLayout(false); - menuStrip1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); - ResumeLayout(false); - PerformLayout(); - } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. @@ -206,6 +34,7 @@ КомпонентыToolStripMenuItem = new ToolStripMenuItem(); магазиныToolStripMenuItem = new ToolStripMenuItem(); клиентыToolStripMenuItem = new ToolStripMenuItem(); + исполнителиToolStripMenuItem1 = new ToolStripMenuItem(); отчётыToolStripMenuItem = new ToolStripMenuItem(); списокЦветковToolStripMenuItem = new ToolStripMenuItem(); компонентыПоЦветамToolStripMenuItem = new ToolStripMenuItem(); @@ -213,14 +42,13 @@ списокМагазиновToolStripMenuItem = new ToolStripMenuItem(); загруженностьМагазиновToolStripMenuItem = new ToolStripMenuItem(); заказыПоДатамToolStripMenuItem = new ToolStripMenuItem(); - dataGridView = new DataGridView(); - buttonCreateOrder = new Button(); - buttonTakeOrderInWork = new Button(); - buttonOrderReady = new Button(); - buttonIssuedOrder = new Button(); - buttonRef = new Button(); пополнениеМагазинаToolStripMenuItem = new ToolStripMenuItem(); продажаЦветовToolStripMenuItem = new ToolStripMenuItem(); + запускРаботToolStripMenuItem = new ToolStripMenuItem(); + dataGridView = new DataGridView(); + buttonCreateOrder = new Button(); + buttonIssuedOrder = new Button(); + buttonRef = new Button(); menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); SuspendLayout(); @@ -228,7 +56,7 @@ // menuStrip1 // menuStrip1.ImageScalingSize = new Size(20, 20); - menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, отчётыToolStripMenuItem, пополнениеМагазинаToolStripMenuItem, продажаЦветовToolStripMenuItem }); + menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, отчётыToolStripMenuItem, пополнениеМагазинаToolStripMenuItem, продажаЦветовToolStripMenuItem, запускРаботToolStripMenuItem }); menuStrip1.Location = new Point(0, 0); menuStrip1.Name = "menuStrip1"; menuStrip1.Padding = new Padding(7, 3, 0, 3); @@ -238,7 +66,7 @@ // // справочникиToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ЦветыToolStripMenuItem, КомпонентыToolStripMenuItem, магазиныToolStripMenuItem, клиентыToolStripMenuItem }); + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ЦветыToolStripMenuItem, КомпонентыToolStripMenuItem, магазиныToolStripMenuItem, клиентыToolStripMenuItem, исполнителиToolStripMenuItem1 }); справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; справочникиToolStripMenuItem.Size = new Size(117, 24); справочникиToolStripMenuItem.Text = "Справочники"; @@ -246,31 +74,38 @@ // ЦветыToolStripMenuItem // ЦветыToolStripMenuItem.Name = "ЦветыToolStripMenuItem"; - ЦветыToolStripMenuItem.Size = new Size(182, 26); + ЦветыToolStripMenuItem.Size = new Size(224, 26); ЦветыToolStripMenuItem.Text = "Цветы"; ЦветыToolStripMenuItem.Click += ЦветыToolStripMenuItem_Click; // // КомпонентыToolStripMenuItem // КомпонентыToolStripMenuItem.Name = "КомпонентыToolStripMenuItem"; - КомпонентыToolStripMenuItem.Size = new Size(182, 26); + КомпонентыToolStripMenuItem.Size = new Size(224, 26); КомпонентыToolStripMenuItem.Text = "Компоненты"; КомпонентыToolStripMenuItem.Click += КомпонентыToolStripMenuItem_Click; // // магазиныToolStripMenuItem // магазиныToolStripMenuItem.Name = "магазиныToolStripMenuItem"; - магазиныToolStripMenuItem.Size = new Size(182, 26); + магазиныToolStripMenuItem.Size = new Size(224, 26); магазиныToolStripMenuItem.Text = "Магазины"; магазиныToolStripMenuItem.Click += магазиныToolStripMenuItem_Click; // // клиентыToolStripMenuItem // клиентыToolStripMenuItem.Name = "клиентыToolStripMenuItem"; - клиентыToolStripMenuItem.Size = new Size(182, 26); + клиентыToolStripMenuItem.Size = new Size(224, 26); клиентыToolStripMenuItem.Text = "Клиенты"; клиентыToolStripMenuItem.Click += клиентыToolStripMenuItem_Click; // + // исполнителиToolStripMenuItem1 + // + исполнителиToolStripMenuItem1.Name = "исполнителиToolStripMenuItem1"; + исполнителиToolStripMenuItem1.Size = new Size(224, 26); + исполнителиToolStripMenuItem1.Text = "Исполнители"; + исполнителиToolStripMenuItem1.Click += исполнителиToolStripMenuItem1_Click; + // // отчётыToolStripMenuItem // отчётыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { списокЦветковToolStripMenuItem, компонентыПоЦветамToolStripMenuItem, списокЗаказовToolStripMenuItem, списокМагазиновToolStripMenuItem, загруженностьМагазиновToolStripMenuItem, заказыПоДатамToolStripMenuItem }); @@ -320,6 +155,27 @@ заказыПоДатамToolStripMenuItem.Text = "Заказы по датам"; заказыПоДатамToolStripMenuItem.Click += заказыПоДатамToolStripMenuItem_Click; // + // пополнениеМагазинаToolStripMenuItem + // + пополнениеМагазинаToolStripMenuItem.Name = "пополнениеМагазинаToolStripMenuItem"; + пополнениеМагазинаToolStripMenuItem.Size = new Size(182, 24); + пополнениеМагазинаToolStripMenuItem.Text = "Пополнение магазина"; + пополнениеМагазинаToolStripMenuItem.Click += пополнениеМагазинаToolStripMenuItem_Click; + // + // продажаЦветовToolStripMenuItem + // + продажаЦветовToolStripMenuItem.Name = "продажаЦветовToolStripMenuItem"; + продажаЦветовToolStripMenuItem.Size = new Size(139, 24); + продажаЦветовToolStripMenuItem.Text = "Продажа цветов"; + продажаЦветовToolStripMenuItem.Click += продажаЦветовToolStripMenuItem_Click; + // + // запускРаботToolStripMenuItem + // + запускРаботToolStripMenuItem.Name = "запускРаботToolStripMenuItem"; + запускРаботToolStripMenuItem.Size = new Size(114, 24); + запускРаботToolStripMenuItem.Text = "Запуск работ"; + запускРаботToolStripMenuItem.Click += запускРаботToolStripMenuItem_Click; + // // dataGridView // dataGridView.BackgroundColor = Color.White; @@ -343,31 +199,9 @@ buttonCreateOrder.UseVisualStyleBackColor = true; buttonCreateOrder.Click += ButtonCreateOrder_Click; // - // buttonTakeOrderInWork - // - buttonTakeOrderInWork.Location = new Point(886, 147); - buttonTakeOrderInWork.Margin = new Padding(3, 4, 3, 4); - buttonTakeOrderInWork.Name = "buttonTakeOrderInWork"; - buttonTakeOrderInWork.Size = new Size(181, 45); - buttonTakeOrderInWork.TabIndex = 3; - buttonTakeOrderInWork.Text = "Отдать на выполнение"; - buttonTakeOrderInWork.UseVisualStyleBackColor = true; - buttonTakeOrderInWork.Click += ButtonTakeOrderInWork_Click; - // - // buttonOrderReady - // - buttonOrderReady.Location = new Point(886, 224); - buttonOrderReady.Margin = new Padding(3, 4, 3, 4); - buttonOrderReady.Name = "buttonOrderReady"; - buttonOrderReady.Size = new Size(181, 45); - buttonOrderReady.TabIndex = 4; - buttonOrderReady.Text = "Заказ готов"; - buttonOrderReady.UseVisualStyleBackColor = true; - buttonOrderReady.Click += ButtonOrderReady_Click; - // // buttonIssuedOrder // - buttonIssuedOrder.Location = new Point(886, 307); + buttonIssuedOrder.Location = new Point(886, 146); buttonIssuedOrder.Margin = new Padding(3, 4, 3, 4); buttonIssuedOrder.Name = "buttonIssuedOrder"; buttonIssuedOrder.Size = new Size(181, 45); @@ -378,7 +212,7 @@ // // buttonRef // - buttonRef.Location = new Point(886, 385); + buttonRef.Location = new Point(886, 224); buttonRef.Margin = new Padding(3, 4, 3, 4); buttonRef.Name = "buttonRef"; buttonRef.Size = new Size(181, 45); @@ -387,20 +221,6 @@ buttonRef.UseVisualStyleBackColor = true; buttonRef.Click += ButtonRef_Click; // - // пополнениеМагазинаToolStripMenuItem - // - пополнениеМагазинаToolStripMenuItem.Name = "пополнениеМагазинаToolStripMenuItem"; - пополнениеМагазинаToolStripMenuItem.Size = new Size(182, 24); - пополнениеМагазинаToolStripMenuItem.Text = "Пополнение магазина"; - пополнениеМагазинаToolStripMenuItem.Click += пополнениеМагазинаToolStripMenuItem_Click; - // - // продажаЦветовToolStripMenuItem - // - продажаЦветовToolStripMenuItem.Name = "продажаЦветовToolStripMenuItem"; - продажаЦветовToolStripMenuItem.Size = new Size(139, 24); - продажаЦветовToolStripMenuItem.Text = "Продажа цветов"; - продажаЦветовToolStripMenuItem.Click += продажаЦветовToolStripMenuItem_Click; - // // FormMain // AutoScaleDimensions = new SizeF(8F, 20F); @@ -408,8 +228,6 @@ ClientSize = new Size(1102, 600); Controls.Add(buttonRef); Controls.Add(buttonIssuedOrder); - Controls.Add(buttonOrderReady); - Controls.Add(buttonTakeOrderInWork); Controls.Add(buttonCreateOrder); Controls.Add(dataGridView); Controls.Add(menuStrip1); @@ -425,22 +243,12 @@ PerformLayout(); } - #endregion - private void ПродажаЦветовToolStripMenuItem_Click(object sender, EventArgs e) - { - throw new NotImplementedException(); - } - #endregion private MenuStrip menuStrip1; private ToolStripMenuItem справочникиToolStripMenuItem; private ToolStripMenuItem ЦветыToolStripMenuItem; private ToolStripMenuItem КомпонентыToolStripMenuItem; - private MenuStrip menuStrip1; - private ToolStripMenuItem справочникиToolStripMenuItem; - private ToolStripMenuItem ЦветыToolStripMenuItem; - private ToolStripMenuItem КомпонентыToolStripMenuItem; private ToolStripMenuItem отчётыToolStripMenuItem; private ToolStripMenuItem списокЦветковToolStripMenuItem; private ToolStripMenuItem компонентыПоЦветамToolStripMenuItem; @@ -449,25 +257,14 @@ private Button buttonCreateOrder; private Button buttonIssuedOrder; private Button buttonRef; - private ToolStripMenuItem отчётыToolStripMenuItem; - private ToolStripMenuItem списокЦветковToolStripMenuItem; - private ToolStripMenuItem компонентыПоЦветамToolStripMenuItem; - private ToolStripMenuItem списокЗаказовToolStripMenuItem; private ToolStripMenuItem клиентыToolStripMenuItem; - private ToolStripMenuItem исполнителиToolStripMenuItem; - private ToolStripMenuItem запускToolStripMenuItem; - } - private Button buttonCreateOrder; - private Button buttonTakeOrderInWork; - private Button buttonOrderReady; - private Button buttonIssuedOrder; - private Button buttonRef; private ToolStripMenuItem списокМагазиновToolStripMenuItem; private ToolStripMenuItem загруженностьМагазиновToolStripMenuItem; private ToolStripMenuItem заказыПоДатамToolStripMenuItem; private ToolStripMenuItem магазиныToolStripMenuItem; - private ToolStripMenuItem клиентыToolStripMenuItem; private ToolStripMenuItem пополнениеМагазинаToolStripMenuItem; private ToolStripMenuItem продажаЦветовToolStripMenuItem; + private ToolStripMenuItem исполнителиToolStripMenuItem1; + private ToolStripMenuItem запускРаботToolStripMenuItem; } } \ No newline at end of file diff --git a/FlowerShop/FlowerShop/FormMain.cs b/FlowerShop/FlowerShop/FormMain.cs index 0685bf5..eeb738c 100644 --- a/FlowerShop/FlowerShop/FormMain.cs +++ b/FlowerShop/FlowerShop/FormMain.cs @@ -4,109 +4,19 @@ using Microsoft.Extensions.Logging; namespace FlowerShopView { - public partial class FormMain : Form - { - private readonly ILogger _logger; - private readonly IOrderLogic _orderLogic; - private readonly IReportLogic _reportLogic; - private readonly IWorkProcess _workProcess; - public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic, IWorkProcess workProcess) - { - InitializeComponent(); - _logger = logger; - _orderLogic = orderLogic; - _reportLogic = reportLogic; - _workProcess = workProcess; - } - private void FormMain_Load(object sender, EventArgs e) - { - LoadData(); - } - private void LoadData() - { - _logger.LogInformation("Загрузка заказов"); - try - { - var list = _orderLogic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["FlowerId"].Visible = false; - dataGridView.Columns["ClientId"].Visible = false; - dataGridView.Columns["ImplementerId"].Visible = false; - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки заказов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void КомпонентыToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); - if (service is FormComponents form) - { - form.ShowDialog(); - } - } - private void ЦветыToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormFlowers)); - if (service is FormFlowers 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 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(); - } public partial class FormMain : Form { private readonly ILogger _logger; private readonly IOrderLogic _orderLogic; private readonly IReportLogic _reportLogic; - public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic) + private readonly IWorkProcess _workProcess; + public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic, IWorkProcess workProcess) { InitializeComponent(); _logger = logger; _orderLogic = orderLogic; _reportLogic = reportLogic; + _workProcess = workProcess; } private void FormMain_Load(object sender, EventArgs e) { @@ -123,6 +33,7 @@ namespace FlowerShopView dataGridView.DataSource = list; dataGridView.Columns["FlowerId"].Visible = false; dataGridView.Columns["ClientId"].Visible = false; + dataGridView.Columns["ImplementerId"].Visible = false; } } catch (Exception ex) @@ -156,55 +67,6 @@ namespace FlowerShopView 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) @@ -285,30 +147,15 @@ namespace FlowerShopView } } - private void клиентыToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormClients)); - if (service is FormClients form) - { - form.ShowDialog(); - } - } + private void клиентыToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormClients)); + if (service is FormClients form) + { + form.ShowDialog(); + } + } - private void исполнителиToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormImplementers)); - if (service is FormImplementers form) - { - form.ShowDialog(); - } - } - - private void запускToolStripMenuItem_Click(object sender, EventArgs e) - { - _workProcess.DoWork((Program.ServiceProvider?.GetService(typeof(IImplementerLogic)) as IImplementerLogic)!, _orderLogic); - MessageBox.Show("Процесс обработки запущен", "Сообщение",MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } private void заказыПоДатамToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormReportGroupedOrders)); @@ -327,14 +174,6 @@ namespace FlowerShopView } } - private void клиентыToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormClients)); - if (service is FormClients form) - { - form.ShowDialog(); - } - } private void пополнениеМагазинаToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormMakeSupply)); @@ -352,5 +191,20 @@ namespace FlowerShopView form.ShowDialog(); } } + + private void исполнителиToolStripMenuItem1_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormImplementers)); + if (service is FormImplementers form) + { + form.ShowDialog(); + } + } + + private void запускРаботToolStripMenuItem_Click(object sender, EventArgs e) + { + _workProcess.DoWork((Program.ServiceProvider?.GetService(typeof(IImplementerLogic)) as IImplementerLogic)!, _orderLogic); + MessageBox.Show("Процесс обработки запущен", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); + } } } diff --git a/FlowerShop/FlowerShop/FormShops.cs b/FlowerShop/FlowerShop/FormShops.cs index 49929a3..faf403a 100644 --- a/FlowerShop/FlowerShop/FormShops.cs +++ b/FlowerShop/FlowerShop/FormShops.cs @@ -32,6 +32,7 @@ namespace FlowerShopView dataGridView.DataSource = list; dataGridView.Columns["Id"].Visible = false; dataGridView.Columns["ShopName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + dataGridView.Columns["ViewFlowers"].Visible = false; dataGridView.Columns["ShopFlowers"].Visible = false; } _logger.LogInformation("Shops loading"); diff --git a/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/OrderLogic.cs b/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/OrderLogic.cs index c82b0ea..a0bd1a8 100644 --- a/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/OrderLogic.cs @@ -13,12 +13,11 @@ namespace FlowerShopBusinessLogic.BusinessLogics { private readonly ILogger _logger; private readonly IOrderStorage _orderStorage; - static readonly object _locker = new object(); - public OrderLogic(ILogger logger, IOrderStorage orderStorage) private readonly IFlowerStorage _flowerStorage; private readonly IShopStorage _shopStorage; private readonly IShopLogic _shopLogic; - public OrderLogic(ILogger logger, IOrderStorage orderStorage, IFlowerStorage flowerStorage, IShopStorage shopStorage, IShopLogic shopLogic) + static readonly object _locker = new object(); + public OrderLogic(ILogger logger, IOrderStorage orderStorage, IFlowerStorage flowerStorage, IShopStorage shopStorage, IShopLogic shopLogic) { _logger = logger; _orderStorage = orderStorage; @@ -110,9 +109,10 @@ namespace FlowerShopBusinessLogic.BusinessLogics model.Count = element.Count; model.Sum = element.Sum; - if (model.Status != orderStatus - 1) + if ((model.Status + 1 != orderStatus && model.Status != OrderStatus.Ожидание) + || (model.Status == OrderStatus.Ожидание && orderStatus != OrderStatus.Выдан)) { - _logger.LogWarning("Status update to " + orderStatus + " operation failed"); + _logger.LogWarning("Change status operation failed"); return false; } if (orderStatus == OrderStatus.Выдан) @@ -124,12 +124,17 @@ namespace FlowerShopBusinessLogic.BusinessLogics } if (!SupplyFlowers(flower, model.Count)) { - _logger.LogWarning("Change status operation failed. Flowers delivery operation failed"); - return false; - } + _logger.LogWarning("Change status operation failed. Ice creams delivery operation failed"); + model.Status = OrderStatus.Ожидание; + if (_orderStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + } + return false; + } } model.Status = orderStatus; - if (model.Status == OrderStatus.Готов) + if (model.Status == OrderStatus.Выдан) { model.DateImplement = DateTime.Now; } diff --git a/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/WorkModeling.cs b/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/WorkModeling.cs index 51af8c8..6cf9f27 100644 --- a/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/WorkModeling.cs +++ b/FlowerShop/FlowerShopBusinessLogic/BusinessLogics/WorkModeling.cs @@ -19,84 +19,86 @@ namespace FlowerShopBusinessLogic.BusinessLogics _rnd = new Random(1000); } - public void DoWork(IImplementerLogic ImplementerLogic, IOrderLogic OrderLogic) + public void DoWork(IImplementerLogic implementerLogic, IOrderLogic orderLogic) { - _orderLogic = OrderLogic; - - var Implementers = ImplementerLogic.ReadList(null); - - if (Implementers == null) + _orderLogic = orderLogic; + var implementers = implementerLogic.ReadList(null); + if (implementers == null) { _logger.LogWarning("DoWork. Implementers is null"); return; } - - var Orders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Принят }); - var BeingProcessedOrders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Выполняется }); - - if (Orders == null || BeingProcessedOrders == null || (Orders.Count == 0 && BeingProcessedOrders.Count == 0)) + List? orders = new(); + orders.AddRange(_orderLogic.ReadList(new() { Status = OrderStatus.Принят }) ?? new()); + orders.AddRange(_orderLogic.ReadList(new() { Status = OrderStatus.Выполняется }) ?? new()); + orders.AddRange(_orderLogic.ReadList(new() { Status = OrderStatus.Ожидание }) ?? new()); + if (orders.Count == 0) { - _logger.LogWarning("DoWork. Orders is null or empty"); + _logger.LogWarning("DoWork. Orders is empty"); return; } - - _logger.LogDebug("DoWork for {Count} orders", Orders.Count); - - foreach (var Implementer in Implementers) + _logger.LogDebug("DoWork for {Count} orders", orders.Count); + foreach (var implementer in implementers) { - Task.Run(() => WorkerWorkAsync(Implementer, Orders)); + Task.Run(() => WorkerWorkAsync(implementer, orders)); } } - private async Task WorkerWorkAsync(ImplementerViewModel Implementer, List Orders) + private async Task WorkerWorkAsync(ImplementerViewModel implementer, List orders) { - if (_orderLogic == null || Implementer == null) + if (_orderLogic == null || implementer == null) { return; } - await RunOrderInWork(Implementer); + await RunWaitingOrders(implementer); + await RunOrderInWork(implementer); await Task.Run(() => { - foreach (var Order in Orders) + foreach (var order in orders) { try { - _logger.LogDebug("WorkerWorkAsync. Worker {Id} try get order {Order}", Implementer.Id, Order.Id); - + _logger.LogDebug("DoWork. Worker {Id} try get order {Order}", implementer.Id, order.Id); bool AcquireResult = _orderLogic.TakeOrderInWork(new OrderBindingModel { - Id = Order.Id, - ImplementerId = Implementer.Id + Id = order.Id, + ImplementerId = implementer.Id }); if (!AcquireResult) { - _logger.LogDebug("WorkerWorkAsync. Worker {Id} tried to get order {Order} but it's already acquired by other worker", Implementer.Id, Order.Id); + _logger.LogDebug("WorkerWorkAsync. Worker {Id} tried to get order {Order} but it's already acquired by other worker", implementer.Id, order.Id); continue; } - - Thread.Sleep(Implementer.WorkExperience * _rnd.Next(100, 1000) * Order.Count); - - _logger.LogDebug("WorkerWorkAsync. Worker {Id} finish order {Order}", Implementer.Id, Order.Id); + // делаем работу + Thread.Sleep(implementer.WorkExperience * _rnd.Next(100, 1000) * order.Count); + _logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, order.Id); _orderLogic.FinishOrder(new OrderBindingModel { - Id = Order.Id + Id = order.Id }); - Thread.Sleep(Implementer.Qualification * _rnd.Next(10, 100)); - } - + _logger.LogDebug("DoWork. Order {Order} delivery", order.Id); + _orderLogic.DeliveryOrder(new OrderBindingModel + { + Id = order.Id + }); + // отдыхаем + Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100)); + } + // кто-то мог уже перехватить заказ, игнорируем ошибку catch (InvalidOperationException ex) { _logger.LogWarning(ex, "Error try get work"); } - + // заканчиваем выполнение имитации в случае иной ошибки catch (Exception ex) { _logger.LogError(ex, "Error while do work"); throw; } + } }); } @@ -127,7 +129,11 @@ namespace FlowerShopBusinessLogic.BusinessLogics { Id = RunOrder.Id }); - + _logger.LogDebug("DoWork. Order {Order} delivery", RunOrder.Id); + _orderLogic.DeliveryOrder(new OrderBindingModel + { + Id = RunOrder.Id + }); Thread.Sleep(Implementer.Qualification * _rnd.Next(10, 100)); } @@ -142,5 +148,48 @@ namespace FlowerShopBusinessLogic.BusinessLogics throw; } } + + private async Task RunWaitingOrders(ImplementerViewModel implementer) + { + if (_orderLogic == null || implementer == null) + { + return; + } + var waitingOrders = await Task.Run(() => _orderLogic.ReadList(new OrderSearchModel + { + ImplementerId = implementer.Id, + Status = OrderStatus.Ожидание + })); + if (waitingOrders == null || waitingOrders.Count == 0) + { + return; + } + _logger.LogDebug("RunWaitingOrders for {Count} orders. Implementer: {id}.", waitingOrders.Count, implementer.Id); + foreach (var waitingOrder in waitingOrders) + { + try + { + _logger.LogInformation("RunWaitingOrders. Order {Order} delivery", waitingOrder.Id); + _orderLogic.DeliveryOrder(new OrderBindingModel + { + Id = waitingOrder.Id + }); + _logger.LogDebug("DoWork. Order {Order} delivery", waitingOrder.Id); + _orderLogic.DeliveryOrder(new OrderBindingModel + { + Id = waitingOrder.Id + }); + } + catch (InvalidOperationException ex) + { + _logger.LogWarning(ex, "Error try get work"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error while do work"); + throw; + } + } + } } } \ No newline at end of file diff --git a/FlowerShop/FlowerShopDataModels/Enums/OrderStatus.cs b/FlowerShop/FlowerShopDataModels/Enums/OrderStatus.cs index 2095810..f83291a 100644 --- a/FlowerShop/FlowerShopDataModels/Enums/OrderStatus.cs +++ b/FlowerShop/FlowerShopDataModels/Enums/OrderStatus.cs @@ -6,6 +6,7 @@ Принят = 0, Выполняется = 1, Готов = 2, - Выдан = 3 + Выдан = 3, + Ожидание = 4 } } \ No newline at end of file diff --git a/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs b/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240617101659_InitCreate.Designer.cs similarity index 91% rename from FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs rename to FlowerShop/FlowerShopDatabaseImplement/Migrations/20240617101659_InitCreate.Designer.cs index 2c9a43f..582f31e 100644 --- a/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs +++ b/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240617101659_InitCreate.Designer.cs @@ -12,11 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace FlowerShopDatabaseImplement.Migrations { [DbContext(typeof(FlowerShopDatabase))] -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs - [Migration("20240517110214_InitCreate")] -======== - [Migration("20240422161656_InitCreate")] ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.Designer.cs + [Migration("20240617101659_InitCreate")] partial class InitCreate { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -264,11 +260,7 @@ namespace FlowerShopDatabaseImplement.Migrations modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Order", b => { b.HasOne("FlowerShopDatabaseImplement.Models.Client", "Client") -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs .WithMany("Orders") -======== - .WithMany() ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.Designer.cs .HasForeignKey("ClientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -279,10 +271,15 @@ namespace FlowerShopDatabaseImplement.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs + b.HasOne("FlowerShopDatabaseImplement.Models.Implementer", "Implementer") + .WithMany("Order") + .HasForeignKey("ImplementerId"); + b.Navigation("Client"); b.Navigation("Flower"); + + b.Navigation("Implementer"); }); modelBuilder.Entity("FlowerShopDatabaseImplement.Models.ShopFlower", b => @@ -307,17 +304,6 @@ namespace FlowerShopDatabaseImplement.Migrations modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Client", b => { b.Navigation("Orders"); -======== - b.HasOne("FlowerShopDatabaseImplement.Models.Implementer", "Implementer") - .WithMany("Order") - .HasForeignKey("ImplementerId"); - - b.Navigation("Client"); - - b.Navigation("Flower"); - - b.Navigation("Implementer"); ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.Designer.cs }); modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Component", b => @@ -332,15 +318,14 @@ namespace FlowerShopDatabaseImplement.Migrations b.Navigation("Orders"); }); -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.Designer.cs - modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Shop", b => - { - b.Navigation("Flowers"); -======== modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Implementer", b => { b.Navigation("Order"); ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.Designer.cs + }); + + modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Shop", b => + { + b.Navigation("Flowers"); }); #pragma warning restore 612, 618 } diff --git a/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs b/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240617101659_InitCreate.cs similarity index 92% rename from FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs rename to FlowerShop/FlowerShopDatabaseImplement/Migrations/20240617101659_InitCreate.cs index 6cd0a9e..8753862 100644 --- a/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs +++ b/FlowerShop/FlowerShopDatabaseImplement/Migrations/20240617101659_InitCreate.cs @@ -54,25 +54,11 @@ namespace FlowerShopDatabaseImplement.Migrations }); migrationBuilder.CreateTable( -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs - name: "Shops", -======== name: "Implementers", ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.cs columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs - ShopName = table.Column(type: "text", nullable: false), - Address = table.Column(type: "text", nullable: false), - DateOpening = table.Column(type: "timestamp without time zone", nullable: false), - MaximumFlowers = table.Column(type: "integer", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Shops", x => x.Id); -======== ImplementerFIO = table.Column(type: "text", nullable: false), Password = table.Column(type: "text", nullable: false), WorkExperience = table.Column(type: "integer", nullable: false), @@ -81,7 +67,22 @@ namespace FlowerShopDatabaseImplement.Migrations constraints: table => { table.PrimaryKey("PK_Implementers", x => x.Id); ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.cs + }); + + migrationBuilder.CreateTable( + name: "Shops", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ShopName = table.Column(type: "text", nullable: false), + Address = table.Column(type: "text", nullable: false), + DateOpening = table.Column(type: "timestamp without time zone", nullable: false), + MaximumFlowers = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Shops", x => x.Id); }); migrationBuilder.CreateTable( @@ -196,7 +197,11 @@ namespace FlowerShopDatabaseImplement.Migrations column: "FlowerId"); migrationBuilder.CreateIndex( -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs + name: "IX_Orders_ImplementerId", + table: "Orders", + column: "ImplementerId"); + + migrationBuilder.CreateIndex( name: "IX_ShopFlowers_FlowerId", table: "ShopFlowers", column: "FlowerId"); @@ -205,11 +210,6 @@ namespace FlowerShopDatabaseImplement.Migrations name: "IX_ShopFlowers_ShopId", table: "ShopFlowers", column: "ShopId"); -======== - name: "IX_Orders_ImplementerId", - table: "Orders", - column: "ImplementerId"); ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.cs } protected override void Down(MigrationBuilder migrationBuilder) @@ -229,15 +229,14 @@ namespace FlowerShopDatabaseImplement.Migrations migrationBuilder.DropTable( name: "Clients"); + migrationBuilder.DropTable( + name: "Implementers"); + migrationBuilder.DropTable( name: "Flowers"); migrationBuilder.DropTable( -<<<<<<<< HEAD:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240517110214_InitCreate.cs name: "Shops"); -======== - name: "Implementers"); ->>>>>>>> origin/lab6:FlowerShop/FlowerShopDatabaseImplement/Migrations/20240422161656_InitCreate.cs } } } diff --git a/FlowerShop/FlowerShopDatabaseImplement/Migrations/FlowerShopDatabaseModelSnapshot.cs b/FlowerShop/FlowerShopDatabaseImplement/Migrations/FlowerShopDatabaseModelSnapshot.cs index 3a5a12d..55047a5 100644 --- a/FlowerShop/FlowerShopDatabaseImplement/Migrations/FlowerShopDatabaseModelSnapshot.cs +++ b/FlowerShop/FlowerShopDatabaseImplement/Migrations/FlowerShopDatabaseModelSnapshot.cs @@ -258,7 +258,7 @@ namespace FlowerShopDatabaseImplement.Migrations modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Order", b => { b.HasOne("FlowerShopDatabaseImplement.Models.Client", "Client") - .WithMany() + .WithMany("Orders") .HasForeignKey("ClientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -280,6 +280,30 @@ namespace FlowerShopDatabaseImplement.Migrations b.Navigation("Implementer"); }); + modelBuilder.Entity("FlowerShopDatabaseImplement.Models.ShopFlower", b => + { + b.HasOne("FlowerShopDatabaseImplement.Models.Flower", "Flower") + .WithMany() + .HasForeignKey("FlowerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlowerShopDatabaseImplement.Models.Shop", "Shop") + .WithMany("Flowers") + .HasForeignKey("ShopId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Flower"); + + b.Navigation("Shop"); + }); + + modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Client", b => + { + b.Navigation("Orders"); + }); + modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Component", b => { b.Navigation("FlowerComponents"); @@ -296,6 +320,11 @@ namespace FlowerShopDatabaseImplement.Migrations { b.Navigation("Order"); }); + + modelBuilder.Entity("FlowerShopDatabaseImplement.Models.Shop", b => + { + b.Navigation("Flowers"); + }); #pragma warning restore 612, 618 } } diff --git a/FlowerShop/FlowerShopDatabaseImplement/Models/Order.cs b/FlowerShop/FlowerShopDatabaseImplement/Models/Order.cs index c69e9b9..021457d 100644 --- a/FlowerShop/FlowerShopDatabaseImplement/Models/Order.cs +++ b/FlowerShop/FlowerShopDatabaseImplement/Models/Order.cs @@ -10,15 +10,13 @@ namespace FlowerShopDatabaseImplement.Models { public int Id { get; private set; } [Required] + public virtual Flower Flower { get; set; } public int FlowerId { get; private set; } - public virtual Flower Flower { get; set; } - public virtual Flower Flower { get; set; } [Required] public int ClientId { get; private set; } public virtual Client Client { get; set; } public int? ImplementerId { get; private set; } public virtual Implementer? Implementer { get; set; } - public virtual Client Client { get; set; } [Required] public int Count { get; set; } [Required]