доработки

This commit is contained in:
Hells Hound 2023-01-31 10:40:59 +04:00
parent f8190e4234
commit 64b0a79248
15 changed files with 322 additions and 18 deletions

View File

@ -94,8 +94,7 @@ namespace IceCreamShopBusinessLogic.BusinessLogics
}
if (string.IsNullOrEmpty(model.ComponentName))
{
throw new ArgumentNullException("Нет названия компонента",
nameof(model.ComponentName));
throw new ArgumentNullException("Нет названия компонента", nameof(model.ComponentName));
}
if (model.Cost <= 0)
{

View File

@ -101,17 +101,17 @@ namespace IceCreamBusinessLogic.BusinessLogics
}
if (string.IsNullOrEmpty(model.IceCreamName))
{
throw new ArgumentNullException("Нет названия изделия", nameof(model.IceCreamName));
throw new ArgumentNullException("Нет названия мороженого", nameof(model.IceCreamName));
}
if (model.Price <= 0)
{
throw new ArgumentNullException("Цена изделия должна быть больше 0", nameof(model.Price));
throw new ArgumentNullException("Цена мороженого должна быть больше 0", nameof(model.Price));
}
_logger.LogInformation("IceCream. IceCreamName:{IceCreamName}. Price:{Price}. Id: { Id}", model.IceCreamName, model.Price, model.Id);
var element = _iceCreamStorage.GetElement(new IceCreamSearchModel { IceCreamName = model.IceCreamName });
if (element != null && element.Id != model.Id)
{
throw new InvalidOperationException("Изделие с таким названием уже есть");
throw new InvalidOperationException("Мороженое с таким названием уже есть");
}
}
}

View File

@ -59,7 +59,7 @@ namespace IceCreamBusinessLogic.BusinessLogics
public List<OrderViewModel>? ReadList(OrderSearchModel? model)
{
_logger.LogInformation("ReadList. OrderID:{IceCreamName}", model?.Id);
_logger.LogInformation("ReadList. OrderID:{Id}", model?.Id);
var list = model == null ? _orderStorage.GetFullList() : _orderStorage.GetFilteredList(model);
if (list == null)
{
@ -82,11 +82,11 @@ namespace IceCreamBusinessLogic.BusinessLogics
}
if (model.IceCreamId < 0)
{
throw new ArgumentNullException("Некорректный идентификатор изделия", nameof(model.IceCreamId));
throw new ArgumentNullException("Некорректный идентификатор мороженого", nameof(model.IceCreamId));
}
if (model.Count <= 0)
{
throw new ArgumentNullException("Количество изделий в заказе должно быть больше 0", nameof(model.Count));
throw new ArgumentNullException("Количество мороженого в заказе должно быть больше 0", nameof(model.Count));
}
if (model.Sum <= 0)
{

View File

@ -92,7 +92,7 @@ namespace IceCreamShopView
}
if (comboBoxIceCream.SelectedValue == null)
{
MessageBox.Show("Выберите изделие", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show("Выберите мороженое", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_logger.LogInformation("Создание заказа");
@ -101,6 +101,7 @@ namespace IceCreamShopView
var operationResult = _logicO.CreateOrder(new OrderBindingModel
{
IceCreamId = Convert.ToInt32(comboBoxIceCream.SelectedValue),
IceCreamName = comboBoxIceCream.Text,
Count = Convert.ToInt32(textBoxCount.Text),
Sum = Convert.ToDouble(textBoxSum.Text)
});

View File

@ -59,7 +59,7 @@ namespace IceCreamShopView
private void LoadData()
{
_logger.LogInformation("Загрузка бланков документа");
_logger.LogInformation("Загрузка компонентов мороженого");
try
{
if (_iceCreamComponents != null)
@ -80,7 +80,7 @@ namespace IceCreamShopView
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка загрузки бланков документа");
_logger.LogError(ex, "Ошибка загрузки компонентов мороженого");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
@ -137,7 +137,7 @@ namespace IceCreamShopView
{
return;
}
_logger.LogInformation("Изменение бланка:{ ComponentName}- { Count}", form.ComponentModel.ComponentName, form.Count);
_logger.LogInformation("Изменение компонента:{ ComponentName}- { Count}", form.ComponentModel.ComponentName, form.Count);
_iceCreamComponents[form.Id] = (form.ComponentModel, form.Count);
LoadData();
}

View File

@ -0,0 +1,119 @@
namespace IceCreamShopView
{
partial class FormIceCreams
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.buttonUpdate = new System.Windows.Forms.Button();
this.buttonDelete = new System.Windows.Forms.Button();
this.buttonEdit = new System.Windows.Forms.Button();
this.buttonAdd = new System.Windows.Forms.Button();
this.dataGridView = new System.Windows.Forms.DataGridView();
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
this.SuspendLayout();
//
// buttonUpdate
//
this.buttonUpdate.Location = new System.Drawing.Point(468, 309);
this.buttonUpdate.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonUpdate.Name = "buttonUpdate";
this.buttonUpdate.Size = new System.Drawing.Size(133, 22);
this.buttonUpdate.TabIndex = 10;
this.buttonUpdate.Text = "Обновить";
this.buttonUpdate.UseVisualStyleBackColor = true;
this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);
//
// buttonDelete
//
this.buttonDelete.Location = new System.Drawing.Point(468, 64);
this.buttonDelete.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonDelete.Name = "buttonDelete";
this.buttonDelete.Size = new System.Drawing.Size(133, 22);
this.buttonDelete.TabIndex = 9;
this.buttonDelete.Text = "Удалить";
this.buttonDelete.UseVisualStyleBackColor = true;
this.buttonDelete.Click += new System.EventHandler(this.buttonDelete_Click);
//
// buttonEdit
//
this.buttonEdit.Location = new System.Drawing.Point(468, 37);
this.buttonEdit.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonEdit.Name = "buttonEdit";
this.buttonEdit.Size = new System.Drawing.Size(133, 22);
this.buttonEdit.TabIndex = 8;
this.buttonEdit.Text = "Изменить";
this.buttonEdit.UseVisualStyleBackColor = true;
//
// buttonAdd
//
this.buttonAdd.Location = new System.Drawing.Point(468, 11);
this.buttonAdd.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonAdd.Name = "buttonAdd";
this.buttonAdd.Size = new System.Drawing.Size(133, 22);
this.buttonAdd.TabIndex = 7;
this.buttonAdd.Text = "Добавить";
this.buttonAdd.UseVisualStyleBackColor = true;
this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);
//
// dataGridView
//
this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView.Location = new System.Drawing.Point(12, 11);
this.dataGridView.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.dataGridView.Name = "dataGridView";
this.dataGridView.RowHeadersWidth = 51;
this.dataGridView.RowTemplate.Height = 29;
this.dataGridView.Size = new System.Drawing.Size(444, 320);
this.dataGridView.TabIndex = 6;
//
// FormIceCreams
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(615, 343);
this.Controls.Add(this.buttonUpdate);
this.Controls.Add(this.buttonDelete);
this.Controls.Add(this.buttonEdit);
this.Controls.Add(this.buttonAdd);
this.Controls.Add(this.dataGridView);
this.Name = "FormIceCreams";
this.Text = "Мороженое ";
this.Load += new System.EventHandler(this.FormIceCreams_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
this.ResumeLayout(false);
}
#endregion
private Button buttonUpdate;
private Button buttonDelete;
private Button buttonEdit;
private Button buttonAdd;
private DataGridView dataGridView;
}
}

View File

@ -0,0 +1,116 @@
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 IceCreamShop;
using IceCreamShopContracts.BindingModels;
using IceCreamShopContracts.BusinessLogicsContracts;
using Microsoft.Extensions.Logging;
namespace IceCreamShopView
{
public partial class FormIceCreams : Form
{
private readonly ILogger _logger;
private readonly IIceCreamLogic _logic;
public FormIceCreams(ILogger<FormIceCreams> logger, IIceCreamLogic logic)
{
InitializeComponent();
_logger = logger;
_logic = logic;
}
private void FormIceCreams_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["IceCreamName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView.Columns["IceCreamComponents"].Visible = false;
}
_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(FormIceCream));
if (service is FormIceCream form)
{
if (form.ShowDialog() == DialogResult.OK)
{
LoadData();
}
}
}
private void buttonEdit_Click(object sender, EventArgs e)
{
if (dataGridView.SelectedRows.Count == 1)
{
var service = Program.ServiceProvider?.GetService(typeof(FormIceCream));
if (service is FormIceCream form)
{
form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
if (form.ShowDialog() == DialogResult.OK)
{
LoadData();
}
}
}
}
private void buttonDelete_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 IceCreamBindingModel
{
Id = id
}))
{
throw new Exception("Ошибка при удалении. Дополнительная информация в логах.");
}
LoadData();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка удаления мороженого");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
private void buttonUpdate_Click(object sender, EventArgs e)
{
LoadData();
}
}
}

View File

@ -0,0 +1,60 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -62,8 +62,8 @@ namespace IceCreamShopView
private void мороженоеToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormIceCream));
if (service is FormIceCream form)
var service = Program.ServiceProvider?.GetService(typeof(FormIceCreams));
if (service is FormIceCreams form)
{
form.ShowDialog();
}
@ -91,6 +91,7 @@ namespace IceCreamShopView
{
Id = id,
IceCreamId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["IceCreamId"].Value),
IceCreamName = dataGridView.SelectedRows[0].Cells["IceCreamName"].Value.ToString(),
Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()),
Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value),
Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()),
@ -123,6 +124,7 @@ namespace IceCreamShopView
{
Id = id,
IceCreamId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["IceCreamId"].Value),
IceCreamName = dataGridView.SelectedRows[0].Cells["IceCreamName"].Value.ToString(),
Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()),
Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value),
Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()),
@ -154,6 +156,7 @@ namespace IceCreamShopView
{
Id = id,
IceCreamId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["IceCreamId"].Value),
IceCreamName = dataGridView.SelectedRows[0].Cells["IceCreamName"].Value.ToString(),
Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()),
Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value),
Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()),

View File

@ -49,7 +49,7 @@ namespace IceCreamShop
services.AddTransient<FormCreateOrder>();
services.AddTransient<FormIceCream>();
services.AddTransient<FormIceCreamComponent>();
services.AddTransient<FormIceCream>();
services.AddTransient<FormIceCreams>();
}
}
}

View File

@ -12,6 +12,7 @@ namespace IceCreamShopContracts.BindingModels
{
public int Id { get; set; }
public int IceCreamId { get; set; }
public string IceCreamName { get; set; } = string.Empty;
public int Count { get; set; }
public double Sum { get; set; }
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;

View File

@ -11,7 +11,7 @@ namespace IceCreamShopContracts.ViewModels
public class IceCreamViewModel : IIceCreamModel
{
public int Id { get; set; }
[DisplayName("Название изделия")]
[DisplayName("Название мороженого")]
public string IceCreamName { get; set; } = string.Empty;
[DisplayName("Цена")]
public double Price { get; set; }

View File

@ -14,7 +14,7 @@ namespace IceCreamShopContracts.ViewModels
[DisplayName("Номер")]
public int Id { get; set; }
public int IceCreamId { get; set; }
[DisplayName("Изделие")]
[DisplayName("Название")]
public string IceCreamName { get; set; } = string.Empty;
[DisplayName("Количество")]
public int Count { get; set; }

View File

@ -84,7 +84,6 @@ namespace IceCreamShopListImplement.Implements
}
_source.Orders.Add(newOrder);
return newOrder.GetViewModel;
}
public OrderViewModel? Update(OrderBindingModel model)

View File

@ -8,6 +8,7 @@ using IceCreamShopContracts.ViewModels;
using AbstractIceCreamShopDataModels.Models;
using AbstractIceCreamShopDataModels.Enums;
using System.Data;
using System.Reflection;
namespace IceCreamShopListImplement.Models
{
@ -17,6 +18,8 @@ namespace IceCreamShopListImplement.Models
public int IceCreamId { get; private set; }
public string IceCreamName { get; private set; } = string.Empty;
public int Count { get; private set; }
public double Sum { get; private set; }
@ -34,6 +37,7 @@ namespace IceCreamShopListImplement.Models
{
Id = model.Id,
IceCreamId = model.IceCreamId,
IceCreamName = model.IceCreamName,
Count = model.Count,
Sum = model.Sum,
Status = model.Status,
@ -47,6 +51,7 @@ namespace IceCreamShopListImplement.Models
if (model == null) return;
Id = model.Id;
IceCreamId = model.IceCreamId;
IceCreamName = model.IceCreamName;
Count = model.Count;
Sum = model.Sum;
Status = model.Status;
@ -58,6 +63,7 @@ namespace IceCreamShopListImplement.Models
{
Id = Id,
IceCreamId = IceCreamId,
IceCreamName = IceCreamName,
Count = Count,
Sum = Sum,
Status = Status,