From 278dc1ea672e47e49b62e2e832c5794367a6508c Mon Sep 17 00:00:00 2001 From: revengel66 Date: Fri, 21 Jun 2024 15:05:38 +0400 Subject: [PATCH] edit 5 --- Pizzeria/Pizzeria/FormCreateOrder.Designer.cs | 65 ++++++++++++------- Pizzeria/Pizzeria/FormCreateOrder.cs | 33 ++++++++-- .../Implements/OrderStorage.cs | 54 ++++++++++++--- 3 files changed, 114 insertions(+), 38 deletions(-) diff --git a/Pizzeria/Pizzeria/FormCreateOrder.Designer.cs b/Pizzeria/Pizzeria/FormCreateOrder.Designer.cs index f261442..5f4cf4f 100644 --- a/Pizzeria/Pizzeria/FormCreateOrder.Designer.cs +++ b/Pizzeria/Pizzeria/FormCreateOrder.Designer.cs @@ -36,42 +36,42 @@ labelSum = new Label(); textBoxSum = new TextBox(); comboBoxPizza = new ComboBox(); + comboBoxClient = new ComboBox(); + labelClient = new Label(); SuspendLayout(); // // textBoxCount // - textBoxCount.Location = new Point(113, 55); - textBoxCount.Margin = new Padding(3, 4, 3, 4); + textBoxCount.Location = new Point(99, 73); textBoxCount.Name = "textBoxCount"; - textBoxCount.Size = new Size(266, 27); + textBoxCount.Size = new Size(233, 23); textBoxCount.TabIndex = 13; textBoxCount.TextChanged += textBoxCount_TextChanged; // // labelCount // labelCount.AutoSize = true; - labelCount.Location = new Point(13, 59); + labelCount.Location = new Point(11, 76); labelCount.Name = "labelCount"; - labelCount.Size = new Size(93, 20); + labelCount.Size = new Size(75, 15); labelCount.TabIndex = 12; labelCount.Text = "Количество:"; // // labelPizza // labelPizza.AutoSize = true; - labelPizza.Location = new Point(13, 20); + labelPizza.Location = new Point(11, 15); labelPizza.Name = "labelPizza"; - labelPizza.Size = new Size(55, 20); + labelPizza.Size = new Size(43, 15); labelPizza.TabIndex = 11; labelPizza.Text = "Пицца"; // // buttonCancel // buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCancel.Location = new Point(294, 145); - buttonCancel.Margin = new Padding(3, 4, 3, 4); + buttonCancel.Location = new Point(257, 170); buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(86, 31); + buttonCancel.Size = new Size(75, 23); buttonCancel.TabIndex = 15; buttonCancel.Text = "Отмена"; buttonCancel.UseVisualStyleBackColor = true; @@ -80,10 +80,9 @@ // buttonSave // buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonSave.Location = new Point(193, 145); - buttonSave.Margin = new Padding(3, 4, 3, 4); + buttonSave.Location = new Point(169, 170); buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(94, 31); + buttonSave.Size = new Size(82, 23); buttonSave.TabIndex = 16; buttonSave.Text = "Сохранить"; buttonSave.UseVisualStyleBackColor = true; @@ -92,36 +91,53 @@ // labelSum // labelSum.AutoSize = true; - labelSum.Location = new Point(13, 97); + labelSum.Location = new Point(11, 105); labelSum.Name = "labelSum"; - labelSum.Size = new Size(58, 20); + labelSum.Size = new Size(48, 15); labelSum.TabIndex = 12; labelSum.Text = "Сумма:"; // // textBoxSum // - textBoxSum.Location = new Point(113, 93); - textBoxSum.Margin = new Padding(3, 4, 3, 4); + textBoxSum.Location = new Point(99, 102); textBoxSum.Name = "textBoxSum"; textBoxSum.ReadOnly = true; - textBoxSum.Size = new Size(266, 27); + textBoxSum.Size = new Size(233, 23); textBoxSum.TabIndex = 13; // // comboBoxPizza // comboBoxPizza.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxPizza.FormattingEnabled = true; - comboBoxPizza.Location = new Point(113, 16); - comboBoxPizza.Margin = new Padding(3, 4, 3, 4); + comboBoxPizza.Location = new Point(99, 12); comboBoxPizza.Name = "comboBoxPizza"; - comboBoxPizza.Size = new Size(266, 28); + comboBoxPizza.Size = new Size(233, 23); comboBoxPizza.TabIndex = 17; // + // comboBoxClient + // + comboBoxClient.FormattingEnabled = true; + comboBoxClient.Location = new Point(99, 43); + comboBoxClient.Name = "comboBoxClient"; + comboBoxClient.Size = new Size(233, 23); + comboBoxClient.TabIndex = 18; + // + // labelClient + // + labelClient.AutoSize = true; + labelClient.Location = new Point(12, 46); + labelClient.Name = "labelClient"; + labelClient.Size = new Size(46, 15); + labelClient.TabIndex = 19; + labelClient.Text = "Клиент"; + // // FormCreateOrder // - AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(401, 200); + ClientSize = new Size(351, 211); + Controls.Add(labelClient); + Controls.Add(comboBoxClient); Controls.Add(comboBoxPizza); Controls.Add(buttonCancel); Controls.Add(buttonSave); @@ -130,7 +146,6 @@ Controls.Add(textBoxCount); Controls.Add(labelCount); Controls.Add(labelPizza); - Margin = new Padding(3, 4, 3, 4); Name = "FormCreateOrder"; Text = "Заказ"; Load += FormCreateOrder_Load; @@ -147,5 +162,7 @@ private Label labelSum; private TextBox textBoxSum; private ComboBox comboBoxPizza; + private ComboBox comboBoxClient; + private Label labelClient; } } \ No newline at end of file diff --git a/Pizzeria/Pizzeria/FormCreateOrder.cs b/Pizzeria/Pizzeria/FormCreateOrder.cs index eb53204..324d906 100644 --- a/Pizzeria/Pizzeria/FormCreateOrder.cs +++ b/Pizzeria/Pizzeria/FormCreateOrder.cs @@ -11,12 +11,14 @@ namespace Pizzeria private readonly ILogger _logger; private readonly IPizzaLogic _logicP; private readonly IOrderLogic _logicO; + private readonly IClientLogic _logicC; - public FormCreateOrder(ILogger logger, IPizzaLogic logicP, IOrderLogic logicO) + public FormCreateOrder(ILogger logger, IPizzaLogic logicP, IOrderLogic logicO, IClientLogic logicC) { InitializeComponent(); _logger = logger; _logicP = logicP; + _logicC = logicC; _logicO = logicO; } private void FormCreateOrder_Load(object sender, EventArgs e) @@ -32,12 +34,29 @@ namespace Pizzeria comboBoxPizza.DataSource = _list; comboBoxPizza.SelectedItem = null; } - } + } catch (Exception ex) { _logger.LogError(ex, "Ошибка при загрузке пиццы для заказа"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } + _logger.LogInformation("Loading clients for order"); + try + { + var clientList = _logicC.ReadList(null); + if (clientList != null) + { + comboBoxClient.DisplayMember = "ClientFIO"; + comboBoxClient.ValueMember = "Id"; + comboBoxClient.DataSource = clientList; + comboBoxClient.SelectedItem = null; + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Error during loading clients for order"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } private void CalcSum() @@ -52,7 +71,7 @@ namespace Pizzeria Id = id }); int count = Convert.ToInt32(textBoxCount.Text); - textBoxSum.Text = Math.Round(count * (Pizza?.Price ?? 0),2).ToString(); + textBoxSum.Text = Math.Round(count * (Pizza?.Price ?? 0), 2).ToString(); _logger.LogInformation("Расчет суммы заказа"); } catch (Exception ex) @@ -89,7 +108,12 @@ namespace Pizzeria } if (comboBoxPizza.SelectedValue == null) { - MessageBox.Show("Выберите пицца", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("Выберите пиццу", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + if (comboBoxClient.SelectedValue == null) + { + MessageBox.Show("Выберите клиента", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } _logger.LogInformation("Создание заказа"); @@ -98,6 +122,7 @@ namespace Pizzeria var operationResult = _logicO.CreateOrder(new OrderBindingModel { PizzaId = Convert.ToInt32(comboBoxPizza.SelectedValue), + ClientId = Convert.ToInt32(comboBoxClient.SelectedValue), Count = Convert.ToInt32(textBoxCount.Text), Sum = Convert.ToDouble(textBoxSum.Text) }); diff --git a/Pizzeria/PizzeriaDatabaseImplement/Implements/OrderStorage.cs b/Pizzeria/PizzeriaDatabaseImplement/Implements/OrderStorage.cs index 0fd2a4f..3d668ae 100644 --- a/Pizzeria/PizzeriaDatabaseImplement/Implements/OrderStorage.cs +++ b/Pizzeria/PizzeriaDatabaseImplement/Implements/OrderStorage.cs @@ -4,8 +4,6 @@ using PizzeriaContracts.ViewModels; using PizzeriaDatabaseImplement.Models; using Microsoft.EntityFrameworkCore; using PizzeriaContracts.StorageContracts; -using System.Collections.Generic; -using System.Linq; namespace PizzeriaDatabaseImplement.Implements { @@ -14,7 +12,11 @@ namespace PizzeriaDatabaseImplement.Implements public List GetFullList() { using var context = new PizzeriaDatabase(); - return context.Orders.Include(x => x.Pizza).Include(x => x.Client).Select(x => x.GetViewModel).ToList(); + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .Select(x => x.GetViewModel) + .ToList(); } public List GetFilteredList(OrderSearchModel model) @@ -22,13 +24,28 @@ namespace PizzeriaDatabaseImplement.Implements using var context = new PizzeriaDatabase(); if (model.DateFrom.HasValue) { - return context.Orders.Include(x => x.Pizza).Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo).Select(x => x.GetViewModel).ToList(); + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) + .Select(x => x.GetViewModel) + .ToList(); } if (model.ClientId.HasValue) { - return context.Orders.Include(x => x.Pizza).Where(x => x.ClientId == model.ClientId).Select(x => x.GetViewModel).ToList(); + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .Where(x => x.ClientId == model.ClientId) + .Select(x => x.GetViewModel) + .ToList(); } - return context.Orders.Include(x => x.Pizza).Where(x => x.Id == model.Id).Select(x => x.GetViewModel).ToList(); + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); } public OrderViewModel? GetElement(OrderSearchModel model) @@ -38,7 +55,11 @@ namespace PizzeriaDatabaseImplement.Implements return new(); } using var context = new PizzeriaDatabase(); - return context.Orders.Include(x => x.Pizza).FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; } public OrderViewModel? Insert(OrderBindingModel model) @@ -53,7 +74,11 @@ namespace PizzeriaDatabaseImplement.Implements } context.Orders.Add(newOrder); context.SaveChanges(); - return newOrder.GetViewModel; + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .FirstOrDefault(x => x.Id == newOrder.Id) + ?.GetViewModel; } public OrderViewModel? Update(OrderBindingModel model) @@ -66,7 +91,11 @@ namespace PizzeriaDatabaseImplement.Implements } order.Update(model); context.SaveChanges(); - return order.GetViewModel; + return context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; } public OrderViewModel? Delete(OrderBindingModel model) @@ -75,9 +104,14 @@ namespace PizzeriaDatabaseImplement.Implements var order = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); if (order != null) { + var deletedElement = context.Orders + .Include(x => x.Pizza) + .Include(x => x.Client) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; context.Orders.Remove(order); context.SaveChanges(); - return order.GetViewModel; + return deletedElement; } return null; }