diff --git a/SushiBar/SushiBar/FormMain.Designer.cs b/SushiBar/SushiBar/FormMain.Designer.cs
index c1af807..c92d394 100644
--- a/SushiBar/SushiBar/FormMain.Designer.cs
+++ b/SushiBar/SushiBar/FormMain.Designer.cs
@@ -40,6 +40,7 @@
this.buttonCreateOrder = new System.Windows.Forms.Button();
this.dataGridView = new System.Windows.Forms.DataGridView();
this.buttonAddSushiInShop = new System.Windows.Forms.Button();
+ this.buttonSellSushi = new System.Windows.Forms.Button();
this.menuStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
this.SuspendLayout();
@@ -87,10 +88,10 @@
//
// buttonUpdate
//
- this.buttonUpdate.Location = new System.Drawing.Point(781, 299);
+ this.buttonUpdate.Location = new System.Drawing.Point(778, 237);
this.buttonUpdate.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonUpdate.Name = "buttonUpdate";
- this.buttonUpdate.Size = new System.Drawing.Size(170, 58);
+ this.buttonUpdate.Size = new System.Drawing.Size(170, 62);
this.buttonUpdate.TabIndex = 12;
this.buttonUpdate.Text = "Обновить";
this.buttonUpdate.UseVisualStyleBackColor = true;
@@ -98,10 +99,10 @@
//
// buttonSetToFinish
//
- this.buttonSetToFinish.Location = new System.Drawing.Point(781, 237);
+ this.buttonSetToFinish.Location = new System.Drawing.Point(778, 171);
this.buttonSetToFinish.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonSetToFinish.Name = "buttonSetToFinish";
- this.buttonSetToFinish.Size = new System.Drawing.Size(170, 58);
+ this.buttonSetToFinish.Size = new System.Drawing.Size(170, 62);
this.buttonSetToFinish.TabIndex = 11;
this.buttonSetToFinish.Text = "Заказ выдан";
this.buttonSetToFinish.UseVisualStyleBackColor = true;
@@ -109,10 +110,10 @@
//
// buttonSetToDone
//
- this.buttonSetToDone.Location = new System.Drawing.Point(781, 175);
+ this.buttonSetToDone.Location = new System.Drawing.Point(778, 179);
this.buttonSetToDone.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonSetToDone.Name = "buttonSetToDone";
- this.buttonSetToDone.Size = new System.Drawing.Size(170, 58);
+ this.buttonSetToDone.Size = new System.Drawing.Size(170, 62);
this.buttonSetToDone.TabIndex = 10;
this.buttonSetToDone.Text = "Заказ готов";
this.buttonSetToDone.UseVisualStyleBackColor = true;
@@ -120,10 +121,10 @@
//
// buttonSetToWork
//
- this.buttonSetToWork.Location = new System.Drawing.Point(781, 113);
+ this.buttonSetToWork.Location = new System.Drawing.Point(778, 104);
this.buttonSetToWork.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonSetToWork.Name = "buttonSetToWork";
- this.buttonSetToWork.Size = new System.Drawing.Size(170, 58);
+ this.buttonSetToWork.Size = new System.Drawing.Size(170, 62);
this.buttonSetToWork.TabIndex = 9;
this.buttonSetToWork.Text = "Отдать на выполнение";
this.buttonSetToWork.UseVisualStyleBackColor = true;
@@ -131,10 +132,10 @@
//
// buttonCreateOrder
//
- this.buttonCreateOrder.Location = new System.Drawing.Point(781, 51);
+ this.buttonCreateOrder.Location = new System.Drawing.Point(778, 38);
this.buttonCreateOrder.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonCreateOrder.Name = "buttonCreateOrder";
- this.buttonCreateOrder.Size = new System.Drawing.Size(170, 58);
+ this.buttonCreateOrder.Size = new System.Drawing.Size(170, 62);
this.buttonCreateOrder.TabIndex = 8;
this.buttonCreateOrder.Text = "Создать заказ";
this.buttonCreateOrder.UseVisualStyleBackColor = true;
@@ -154,20 +155,32 @@
//
// buttonAddSushiInShop
//
- this.buttonAddSushiInShop.Location = new System.Drawing.Point(781, 361);
+ this.buttonAddSushiInShop.Location = new System.Drawing.Point(778, 302);
this.buttonAddSushiInShop.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonAddSushiInShop.Name = "buttonAddSushiInShop";
- this.buttonAddSushiInShop.Size = new System.Drawing.Size(170, 58);
+ this.buttonAddSushiInShop.Size = new System.Drawing.Size(170, 62);
this.buttonAddSushiInShop.TabIndex = 13;
this.buttonAddSushiInShop.Text = "Добавить суши в магазин";
this.buttonAddSushiInShop.UseVisualStyleBackColor = true;
this.buttonAddSushiInShop.Click += new System.EventHandler(this.ButtonAddSushiInShop_Click);
//
+ // buttonSellSushi
+ //
+ this.buttonSellSushi.Location = new System.Drawing.Point(778, 367);
+ this.buttonSellSushi.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.buttonSellSushi.Name = "buttonSellSushi";
+ this.buttonSellSushi.Size = new System.Drawing.Size(170, 62);
+ this.buttonSellSushi.TabIndex = 14;
+ this.buttonSellSushi.Text = "Продать суши";
+ this.buttonSellSushi.UseVisualStyleBackColor = true;
+ this.buttonSellSushi.Click += new System.EventHandler(this.ButtonSellSushi_Click);
+ //
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(975, 450);
+ this.Controls.Add(this.buttonSellSushi);
this.Controls.Add(this.buttonAddSushiInShop);
this.Controls.Add(this.buttonUpdate);
this.Controls.Add(this.buttonSetToFinish);
@@ -202,5 +215,6 @@
private DataGridView dataGridView;
private ToolStripMenuItem shopsToolStripMenuItem;
private Button buttonAddSushiInShop;
+ private Button buttonSellSushi;
}
}
\ No newline at end of file
diff --git a/SushiBar/SushiBar/FormMain.cs b/SushiBar/SushiBar/FormMain.cs
index cf0fa99..7bac443 100644
--- a/SushiBar/SushiBar/FormMain.cs
+++ b/SushiBar/SushiBar/FormMain.cs
@@ -160,5 +160,15 @@ namespace SushiBarView
form.ShowDialog();
}
}
+
+ private void ButtonSellSushi_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormSellSushi));
+ if (service is FormSellSushi form)
+ {
+ form.ShowDialog();
+ LoadData();
+ }
+ }
}
}
\ No newline at end of file
diff --git a/SushiBar/SushiBar/FormSellSushi.Designer.cs b/SushiBar/SushiBar/FormSellSushi.Designer.cs
new file mode 100644
index 0000000..745456b
--- /dev/null
+++ b/SushiBar/SushiBar/FormSellSushi.Designer.cs
@@ -0,0 +1,126 @@
+namespace SushiBarView
+{
+ partial class FormSellSushi
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #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()
+ {
+ this.labelSushi = new System.Windows.Forms.Label();
+ this.labelCount = new System.Windows.Forms.Label();
+ this.comboBoxSushi = new System.Windows.Forms.ComboBox();
+ this.textBoxCount = new System.Windows.Forms.TextBox();
+ this.buttonSave = new System.Windows.Forms.Button();
+ this.buttonCancel = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // labelSushi
+ //
+ this.labelSushi.AutoSize = true;
+ this.labelSushi.Location = new System.Drawing.Point(9, 11);
+ this.labelSushi.Name = "labelSushi";
+ this.labelSushi.Size = new System.Drawing.Size(39, 15);
+ this.labelSushi.TabIndex = 0;
+ this.labelSushi.Text = "Суши";
+ //
+ // labelCount
+ //
+ this.labelCount.AutoSize = true;
+ this.labelCount.Location = new System.Drawing.Point(11, 51);
+ this.labelCount.Name = "labelCount";
+ this.labelCount.Size = new System.Drawing.Size(72, 15);
+ this.labelCount.TabIndex = 1;
+ this.labelCount.Text = "Количество";
+ //
+ // comboBoxSushi
+ //
+ this.comboBoxSushi.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBoxSushi.FormattingEnabled = true;
+ this.comboBoxSushi.Location = new System.Drawing.Point(100, 11);
+ this.comboBoxSushi.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.comboBoxSushi.Name = "comboBoxSushi";
+ this.comboBoxSushi.Size = new System.Drawing.Size(230, 23);
+ this.comboBoxSushi.TabIndex = 3;
+ //
+ // textBoxCount
+ //
+ this.textBoxCount.Location = new System.Drawing.Point(100, 51);
+ this.textBoxCount.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.textBoxCount.Name = "textBoxCount";
+ this.textBoxCount.Size = new System.Drawing.Size(230, 23);
+ this.textBoxCount.TabIndex = 4;
+ //
+ // buttonSave
+ //
+ this.buttonSave.Location = new System.Drawing.Point(160, 78);
+ this.buttonSave.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.buttonSave.Name = "buttonSave";
+ this.buttonSave.Size = new System.Drawing.Size(82, 22);
+ this.buttonSave.TabIndex = 6;
+ this.buttonSave.Text = "Сохранить";
+ this.buttonSave.UseVisualStyleBackColor = true;
+ this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click);
+ //
+ // buttonCancel
+ //
+ this.buttonCancel.Location = new System.Drawing.Point(248, 78);
+ this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.buttonCancel.Name = "buttonCancel";
+ this.buttonCancel.Size = new System.Drawing.Size(82, 22);
+ this.buttonCancel.TabIndex = 7;
+ this.buttonCancel.Text = "Отмена";
+ this.buttonCancel.UseVisualStyleBackColor = true;
+ this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
+ //
+ // FormSellSushi
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(349, 119);
+ this.Controls.Add(this.buttonCancel);
+ this.Controls.Add(this.buttonSave);
+ this.Controls.Add(this.textBoxCount);
+ this.Controls.Add(this.comboBoxSushi);
+ this.Controls.Add(this.labelCount);
+ this.Controls.Add(this.labelSushi);
+ this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.Name = "FormSellSushi";
+ this.Text = "Продажа суши";
+ this.Load += new System.EventHandler(this.FormSellSushi_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private Label labelSushi;
+ private Label labelCount;
+ private ComboBox comboBoxSushi;
+ private TextBox textBoxCount;
+ private Button buttonSave;
+ private Button buttonCancel;
+ }
+}
\ No newline at end of file
diff --git a/SushiBar/SushiBar/FormSellSushi.cs b/SushiBar/SushiBar/FormSellSushi.cs
new file mode 100644
index 0000000..b985fe7
--- /dev/null
+++ b/SushiBar/SushiBar/FormSellSushi.cs
@@ -0,0 +1,90 @@
+using Microsoft.Extensions.Logging;
+using SushiBarContracts.BusinessLogicsContracts;
+using SushiBarContracts.SearchModels;
+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;
+
+namespace SushiBarView
+{
+ public partial class FormSellSushi : Form
+ {
+ private readonly ILogger _logger;
+ private readonly ISushiLogic _logicSushi;
+ private readonly IShopLogic _logicShop;
+
+ public FormSellSushi(ILogger logger, ISushiLogic logicI, IShopLogic logicS)
+ {
+ InitializeComponent();
+ _logger = logger;
+ _logicSushi = logicI;
+ _logicShop = logicS;
+ }
+
+ private void FormSellSushi_Load(object sender, EventArgs e)
+ {
+ _logger.LogInformation("Загрузка списка суши для продажи");
+ try
+ {
+ var list = _logicSushi.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 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 = _logicShop.SellSushi(_logicSushi.ReadElement(new SushiSearchModel()
+ {
+ Id = Convert.ToInt32(comboBoxSushi.SelectedValue)
+ })!, Convert.ToInt32(textBoxCount.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/FormSellSushi.resx b/SushiBar/SushiBar/FormSellSushi.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/SushiBar/SushiBar/FormSellSushi.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/SushiBar/SushiBar/FormShop.Designer.cs b/SushiBar/SushiBar/FormShop.Designer.cs
index 71971de..62944f2 100644
--- a/SushiBar/SushiBar/FormShop.Designer.cs
+++ b/SushiBar/SushiBar/FormShop.Designer.cs
@@ -34,13 +34,16 @@
this.labelTime = new System.Windows.Forms.Label();
this.labelAddress = new System.Windows.Forms.Label();
this.dataGridView = new System.Windows.Forms.DataGridView();
- this.labelShop = new System.Windows.Forms.Label();
- this.textBoxShop = new System.Windows.Forms.TextBox();
- this.dateTimePicker = new System.Windows.Forms.DateTimePicker();
this.ColumnID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnSushiName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.labelShop = new System.Windows.Forms.Label();
+ this.textBoxShop = new System.Windows.Forms.TextBox();
+ this.dateTimePicker = new System.Windows.Forms.DateTimePicker();
+ this.labelCount = new System.Windows.Forms.Label();
+ this.numericUpDownCount = new System.Windows.Forms.NumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDownCount)).BeginInit();
this.SuspendLayout();
//
// buttonSave
@@ -69,13 +72,13 @@
//
this.textBoxAddress.Location = new System.Drawing.Point(159, 27);
this.textBoxAddress.Name = "textBoxAddress";
- this.textBoxAddress.Size = new System.Drawing.Size(221, 23);
+ this.textBoxAddress.Size = new System.Drawing.Size(141, 23);
this.textBoxAddress.TabIndex = 14;
//
// labelTime
//
this.labelTime.AutoSize = true;
- this.labelTime.Location = new System.Drawing.Point(386, 9);
+ this.labelTime.Location = new System.Drawing.Point(306, 9);
this.labelTime.Name = "labelTime";
this.labelTime.Size = new System.Drawing.Size(87, 15);
this.labelTime.TabIndex = 13;
@@ -106,6 +109,23 @@
this.dataGridView.Size = new System.Drawing.Size(581, 240);
this.dataGridView.TabIndex = 11;
//
+ // ColumnID
+ //
+ this.ColumnID.HeaderText = "ID";
+ this.ColumnID.Name = "ColumnID";
+ this.ColumnID.Visible = false;
+ //
+ // ColumnSushiName
+ //
+ this.ColumnSushiName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ this.ColumnSushiName.HeaderText = "Суши";
+ this.ColumnSushiName.Name = "ColumnSushiName";
+ //
+ // ColumnCount
+ //
+ this.ColumnCount.HeaderText = "Количество";
+ this.ColumnCount.Name = "ColumnCount";
+ //
// labelShop
//
this.labelShop.AutoSize = true;
@@ -124,33 +144,34 @@
//
// dateTimePicker
//
- this.dateTimePicker.Location = new System.Drawing.Point(386, 27);
+ this.dateTimePicker.Location = new System.Drawing.Point(306, 27);
this.dateTimePicker.Name = "dateTimePicker";
- this.dateTimePicker.Size = new System.Drawing.Size(207, 23);
+ this.dateTimePicker.Size = new System.Drawing.Size(141, 23);
this.dateTimePicker.TabIndex = 19;
//
- // ColumnID
+ // labelCount
//
- this.ColumnID.HeaderText = "ID";
- this.ColumnID.Name = "ColumnID";
- this.ColumnID.Visible = false;
+ this.labelCount.AutoSize = true;
+ this.labelCount.Location = new System.Drawing.Point(453, 9);
+ this.labelCount.Name = "labelCount";
+ this.labelCount.Size = new System.Drawing.Size(134, 15);
+ this.labelCount.TabIndex = 20;
+ this.labelCount.Text = "Вместимость магазина";
//
- // ColumnSushiName
+ // numericUpDownCount
//
- this.ColumnSushiName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
- this.ColumnSushiName.HeaderText = "Суши";
- this.ColumnSushiName.Name = "ColumnSushiName";
- //
- // ColumnCount
- //
- this.ColumnCount.HeaderText = "Количество";
- this.ColumnCount.Name = "ColumnCount";
+ this.numericUpDownCount.Location = new System.Drawing.Point(453, 27);
+ this.numericUpDownCount.Name = "numericUpDownCount";
+ this.numericUpDownCount.Size = new System.Drawing.Size(140, 23);
+ this.numericUpDownCount.TabIndex = 21;
//
// FormShop
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(605, 337);
+ this.Controls.Add(this.numericUpDownCount);
+ this.Controls.Add(this.labelCount);
this.Controls.Add(this.dateTimePicker);
this.Controls.Add(this.textBoxShop);
this.Controls.Add(this.buttonSave);
@@ -165,6 +186,7 @@
this.Load += new System.EventHandler(this.FormShop_Load);
this.Click += new System.EventHandler(this.FormShop_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDownCount)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -184,5 +206,7 @@
private DataGridViewTextBoxColumn ColumnID;
private DataGridViewTextBoxColumn ColumnSushiName;
private DataGridViewTextBoxColumn ColumnCount;
+ private Label labelCount;
+ private NumericUpDown numericUpDownCount;
}
}
\ No newline at end of file
diff --git a/SushiBar/SushiBar/FormShop.cs b/SushiBar/SushiBar/FormShop.cs
index c97776f..332b18d 100644
--- a/SushiBar/SushiBar/FormShop.cs
+++ b/SushiBar/SushiBar/FormShop.cs
@@ -39,6 +39,7 @@ namespace SushiBarView
textBoxShop.Text = view.ShopName;
textBoxAddress.Text = view.Address;
dateTimePicker.Text = view.DateOpening.ToString();
+ numericUpDownCount.Value = view.MaxCountSushi;
_shopListSushi = view.ListSushi ?? new Dictionary();
LoadData();
}
@@ -93,7 +94,8 @@ namespace SushiBarView
Id = _id ?? 0,
ShopName = textBoxShop.Text,
Address = textBoxAddress.Text,
- DateOpening = dateTimePicker.Value.Date
+ DateOpening = dateTimePicker.Value.Date,
+ MaxCountSushi = (int)numericUpDownCount.Value
};
var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model);
if (!operationResult)
diff --git a/SushiBar/SushiBar/Program.cs b/SushiBar/SushiBar/Program.cs
index bedf854..781349c 100644
--- a/SushiBar/SushiBar/Program.cs
+++ b/SushiBar/SushiBar/Program.cs
@@ -54,6 +54,7 @@ namespace SushiBarView
services.AddTransient();
services.AddTransient();
services.AddTransient();
+ services.AddTransient();
}
}
diff --git a/SushiBar/SushiBar/SushiBarView.csproj b/SushiBar/SushiBar/SushiBarView.csproj
index 237037b..5ef3c81 100644
--- a/SushiBar/SushiBar/SushiBarView.csproj
+++ b/SushiBar/SushiBar/SushiBarView.csproj
@@ -18,7 +18,6 @@
-
\ No newline at end of file
diff --git a/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs b/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs
index 3baee63..139f769 100644
--- a/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs
+++ b/SushiBar/SushiBarBusinessLogic/BusinessLogics/OrderLogic.cs
@@ -12,11 +12,15 @@ namespace SushiBarBusinessLogic.BusinessLogics
{
private readonly ILogger _logger;
private readonly IOrderStorage _orderStorage;
+ private readonly IShopLogic _shopLogic;
+ private readonly ISushiStorage _sushiStorage;
- public OrderLogic(ILogger logger, IOrderStorage orderStorage)
+ public OrderLogic(ILogger logger, IOrderStorage orderStorage, IShopLogic shopLogic, ISushiStorage sushiStorage)
{
_logger = logger;
_orderStorage = orderStorage;
+ _shopLogic = shopLogic;
+ _sushiStorage = sushiStorage;
}
public List? ReadList(OrderSearchModel? model)
{
@@ -86,7 +90,19 @@ namespace SushiBarBusinessLogic.BusinessLogics
return false;
}
model.Status = newStatus;
- if (model.Status == OrderStatus.Готов) model.DateImplement = DateTime.Now;
+ if (model.Status == OrderStatus.Готов)
+ {
+ model.DateImplement = DateTime.Now;
+ var sushi = _sushiStorage.GetElement(new() { Id = viewModel.SushiId });
+ if (sushi == null)
+ {
+ throw new ArgumentNullException(nameof(sushi));
+ }
+ if (!_shopLogic.AddSushi(sushi, viewModel.Count))
+ {
+ throw new Exception($"AddSushis operation failed. Shop is full.");
+ }
+ }
else
{
model.DateImplement = viewModel.DateImplement;
diff --git a/SushiBar/SushiBarBusinessLogic/BusinessLogics/ShopLogic.cs b/SushiBar/SushiBarBusinessLogic/BusinessLogics/ShopLogic.cs
index bb6147e..16156ed 100644
--- a/SushiBar/SushiBarBusinessLogic/BusinessLogics/ShopLogic.cs
+++ b/SushiBar/SushiBarBusinessLogic/BusinessLogics/ShopLogic.cs
@@ -6,7 +6,7 @@ using SushiBarContracts.StoragesContracts;
using SushiBarContracts.ViewModels;
using SushiBarDataModels.Models;
-namespace SushiBusinessLogic
+namespace SushiBarBusinessLogic.BusinessLogics
{
public class ShopLogic : IShopLogic
{
@@ -93,6 +93,12 @@ namespace SushiBusinessLogic
{
throw new ArgumentNullException("Нет названия магазина", nameof(model.ShopName));
}
+ if (model.MaxCountSushi < 0)
+ {
+ throw new ArgumentException(
+ "Максимальное количество суши в магазине не может быть меньше нуля",
+ nameof(model.MaxCountSushi));
+ }
_logger.LogInformation("Shop. ShopName:{0}.Address:{1}. Id: {2}",
model.ShopName, model.Address, model.Id);
var element = _shopStorage.GetElement(new ShopSearchModel
@@ -123,6 +129,11 @@ namespace SushiBusinessLogic
_logger.LogWarning("AddSushiInShop element not found");
return false;
}
+ if (element.MaxCountSushi -
+ element.ListSushi.Select(x => x.Value.Item2).Sum() < count)
+ {
+ throw new ArgumentNullException("Магазин переполнен", nameof(count));
+ }
_logger.LogInformation("AddSushiInShop find. Id:{Id}", element.Id);
if (element.ListSushi.TryGetValue(sushi.Id, out var pair))
@@ -144,9 +155,56 @@ namespace SushiBusinessLogic
Address = element.Address,
ShopName = element.ShopName,
DateOpening = element.DateOpening,
- ListSushi = element.ListSushi
+ MaxCountSushi = element.MaxCountSushi,
+ ListSushi = element.ListSushi,
});
return true;
}
+
+ public bool AddSushi(ISushiModel model, int count)
+ {
+ if (model == null)
+ {
+ throw new ArgumentNullException(nameof(model));
+ }
+ if (count <= 0)
+ {
+ throw new ArgumentException("Количество суши должно быть больше 0", nameof(count));
+ }
+ _logger.LogInformation("AddSushi. ShopName:{ShopName}. Id:{Id}", model.SushiName, model.Id);
+ foreach (var shop in _shopStorage.GetFullList())
+ {
+ int free = shop.MaxCountSushi - shop.ListSushi.Select(x => x.Value.Item2).Sum();
+ if (free < count)
+ {
+ if (!AddSushiInShop(new() { Id = shop.Id }, model, free))
+ {
+ _logger.LogWarning("AddSushi operation failed.");
+ return false;
+ }
+ count -= free;
+ }
+ else
+ {
+ if (!AddSushiInShop(new() { Id = shop.Id }, model, count))
+ {
+ _logger.LogWarning("AddSushiInShop operation failed.");
+ return false;
+ }
+ count = 0;
+ }
+ if (count == 0)
+ {
+ return true;
+ }
+ }
+ _logger.LogWarning("AddSushi operation failed.");
+ return false;
+ }
+
+ public bool SellSushi(ISushiModel model, int count)
+ {
+ return _shopStorage.SellSushi(model, count);
+ }
}
}
diff --git a/SushiBar/SushiBarContracts/BindingModels/ShopBindingModel.cs b/SushiBar/SushiBarContracts/BindingModels/ShopBindingModel.cs
index 006a3eb..c3ddb34 100644
--- a/SushiBar/SushiBarContracts/BindingModels/ShopBindingModel.cs
+++ b/SushiBar/SushiBarContracts/BindingModels/ShopBindingModel.cs
@@ -16,5 +16,7 @@ namespace SushiBarContracts.BindingModels
get;
set;
} = new();
+
+ public int MaxCountSushi { get; set; }
}
}
diff --git a/SushiBar/SushiBarContracts/BusinessLogicsContracts/IShopLogic.cs b/SushiBar/SushiBarContracts/BusinessLogicsContracts/IShopLogic.cs
index f1f455b..230c941 100644
--- a/SushiBar/SushiBarContracts/BusinessLogicsContracts/IShopLogic.cs
+++ b/SushiBar/SushiBarContracts/BusinessLogicsContracts/IShopLogic.cs
@@ -13,5 +13,7 @@ namespace SushiBarContracts.BusinessLogicsContracts
bool Update(ShopBindingModel model);
bool Delete(ShopBindingModel model);
bool AddSushiInShop(ShopSearchModel model, ISushiModel sushi, int count);
+ bool AddSushi(ISushiModel sushi, int count);
+ bool SellSushi(ISushiModel sushi, int count);
}
}
diff --git a/SushiBar/SushiBarContracts/StoragesContracts/IShopStorage.cs b/SushiBar/SushiBarContracts/StoragesContracts/IShopStorage.cs
index 8ebaaf5..0028fe5 100644
--- a/SushiBar/SushiBarContracts/StoragesContracts/IShopStorage.cs
+++ b/SushiBar/SushiBarContracts/StoragesContracts/IShopStorage.cs
@@ -1,6 +1,7 @@
using SushiBarContracts.BindingModels;
using SushiBarContracts.SearchModels;
using SushiBarContracts.ViewModels;
+using SushiBarDataModels.Models;
namespace SushiBarContracts.StoragesContracts
{
@@ -12,5 +13,7 @@ namespace SushiBarContracts.StoragesContracts
ShopViewModel? Insert(ShopBindingModel model);
ShopViewModel? Update(ShopBindingModel model);
ShopViewModel? Delete(ShopBindingModel model);
+ bool IsEnoughSushi(ISushiModel model, int count);
+ bool SellSushi(ISushiModel model, int count);
}
}
diff --git a/SushiBar/SushiBarContracts/StoragesContracts/ISushiStorage.cs b/SushiBar/SushiBarContracts/StoragesContracts/ISushiStorage.cs
index ff49391..f968fb1 100644
--- a/SushiBar/SushiBarContracts/StoragesContracts/ISushiStorage.cs
+++ b/SushiBar/SushiBarContracts/StoragesContracts/ISushiStorage.cs
@@ -1,6 +1,7 @@
using SushiBarContracts.BindingModels;
using SushiBarContracts.SearchModels;
using SushiBarContracts.ViewModels;
+using SushiBarDataModels.Models;
namespace SushiBarContracts.StoragesContracts
{
@@ -12,5 +13,7 @@ namespace SushiBarContracts.StoragesContracts
SushiViewModel? Insert(SushiBindingModel model);
SushiViewModel? Update(SushiBindingModel model);
SushiViewModel? Delete(SushiBindingModel model);
+ bool HasSushi(ISushiModel model, int needCount);
+ bool SellSushi(ISushiModel model, int count);
}
}
diff --git a/SushiBar/SushiBarContracts/ViewModels/ShopViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ShopViewModel.cs
index f53c548..79620ca 100644
--- a/SushiBar/SushiBarContracts/ViewModels/ShopViewModel.cs
+++ b/SushiBar/SushiBarContracts/ViewModels/ShopViewModel.cs
@@ -14,6 +14,8 @@ namespace SushiBarContracts.ViewModels
[DisplayName("Дата открытия")]
public DateTime DateOpening { get; set; } = DateTime.Now;
+ [DisplayName("Максимальное количество суши")]
+ public int MaxCountSushi { get; set; }
public Dictionary ListSushi
{
diff --git a/SushiBar/SushiBarDataModels/Models/IShopModel.cs b/SushiBar/SushiBarDataModels/Models/IShopModel.cs
index 2c7c569..648784e 100644
--- a/SushiBar/SushiBarDataModels/Models/IShopModel.cs
+++ b/SushiBar/SushiBarDataModels/Models/IShopModel.cs
@@ -6,5 +6,6 @@
string Address { get; }
DateTime DateOpening { get; }
Dictionary ListSushi { get; }
+ int MaxCountSushi { get; }
}
}
diff --git a/SushiBar/SushiBarFileImplement/DataFileSingleton.cs b/SushiBar/SushiBarFileImplement/DataFileSingleton.cs
index 7461a1d..cf30335 100644
--- a/SushiBar/SushiBarFileImplement/DataFileSingleton.cs
+++ b/SushiBar/SushiBarFileImplement/DataFileSingleton.cs
@@ -9,9 +9,11 @@ namespace SushiBarFileImplement
private readonly string IngredientFileName = "Ingredient.xml";
private readonly string OrderFileName = "Order.xml";
private readonly string SushiFileName = "Sushi.xml";
+ private readonly string ShopFileName = "Shop.xml";
public List Ingredients { get; private set; }
public List Orders { get; private set; }
public List ListSushi { get; private set; }
+ public List Shops { get; private set; }
public static DataFileSingleton GetInstance()
{
if (instance == null)
@@ -25,11 +27,13 @@ namespace SushiBarFileImplement
public void SaveListSushi() => SaveData(ListSushi, SushiFileName,
"ListSushi", x => x.GetXElement);
public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement);
+ public void SaveShops() => SaveData(Shops, ShopFileName, "Shops", x => x.GetXElement);
private DataFileSingleton()
{
Ingredients = LoadData(IngredientFileName, "Ingredient", x => Ingredient.Create(x)!)!;
ListSushi = LoadData(SushiFileName, "Sushi", x => Sushi.Create(x)!)!;
Orders = LoadData(OrderFileName, "Order", x => Order.Create(x)!)!;
+ Shops = LoadData(ShopFileName, "Shop", x => Shop.Create(x)!)!;
}
private static List? LoadData(string filename, string xmlNodeName,
Func selectFunction)
diff --git a/SushiBar/SushiBarFileImplement/Implements/ShopStorage.cs b/SushiBar/SushiBarFileImplement/Implements/ShopStorage.cs
new file mode 100644
index 0000000..0e1161f
--- /dev/null
+++ b/SushiBar/SushiBarFileImplement/Implements/ShopStorage.cs
@@ -0,0 +1,109 @@
+using SushiBarContracts.BindingModels;
+using SushiBarContracts.SearchModels;
+using SushiBarContracts.StoragesContracts;
+using SushiBarContracts.ViewModels;
+using SushiBarDataModels.Models;
+using SushiBarFileImplement.Models;
+
+namespace SushiBarFileImplement.Implements
+{
+ public class ShopStorage : IShopStorage
+ {
+ private readonly DataFileSingleton source;
+ public ShopStorage()
+ {
+ source = DataFileSingleton.GetInstance();
+ }
+ public List GetFullList()
+ {
+ return source.Shops.Select(x => x.GetViewModel).ToList();
+ }
+ public List GetFilteredList(ShopSearchModel model)
+ {
+ if (string.IsNullOrEmpty(model.ShopName))
+ {
+ return new();
+ }
+ return source.Shops.Where(x =>
+ x.ShopName.Contains(model.ShopName)).Select(x => x.GetViewModel).ToList();
+ }
+ public ShopViewModel? GetElement(ShopSearchModel model)
+ {
+ if (string.IsNullOrEmpty(model.ShopName) && !model.Id.HasValue)
+ {
+ return null;
+ }
+ return source.Shops.FirstOrDefault(x =>
+ (!string.IsNullOrEmpty(model.ShopName) && x.ShopName ==
+ model.ShopName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
+ }
+ public ShopViewModel? Insert(ShopBindingModel model)
+ {
+ model.Id = source.Shops.Count > 0 ? source.Shops.Max(x => x.Id) + 1 : 1;
+ var newShop = Shop.Create(model);
+ if (newShop == null)
+ {
+ return null;
+ }
+ source.Shops.Add(newShop);
+ source.SaveShops();
+ return newShop.GetViewModel;
+ }
+ public ShopViewModel? Update(ShopBindingModel model)
+ {
+ var shop = source.Shops.FirstOrDefault(x => x.Id == model.Id);
+ if (shop == null)
+ {
+ return null;
+ }
+ shop.Update(model);
+ source.SaveShops();
+ return shop.GetViewModel;
+ }
+ public ShopViewModel? Delete(ShopBindingModel model)
+ {
+ var element = source.Shops.FirstOrDefault(x => x.Id == model.Id);
+ if (element != null)
+ {
+ source.Shops.Remove(element);
+ source.SaveShops();
+ return element.GetViewModel;
+ }
+ return null;
+ }
+
+ public bool IsEnoughSushi(ISushiModel model, int count)
+ {
+ int temp = source.Shops
+ .Select(x => x.ListSushi.FirstOrDefault(y => y.Key == model.Id).Value.Item2).Sum();
+ return temp >= count;
+ }
+
+ public bool SellSushi(ISushiModel model, int count)
+ {
+ if (!IsEnoughSushi(model, count))
+ {
+ return false;
+ }
+ foreach (var shop in source.Shops.Where(x => x.ListSushi.ContainsKey(model.Id)))
+ {
+ int countInCurrentShop = shop.ListSushi[model.Id].Item2;
+ if (countInCurrentShop <= count)
+ {
+ shop.ListSushi[model.Id] = (shop.ListSushi[model.Id].Item1, 0);
+ count -= countInCurrentShop;
+ }
+ else
+ {
+ shop.ListSushi[model.Id] = (shop.ListSushi[model.Id].Item1, countInCurrentShop - count);
+ count = 0;
+ }
+ if (count == 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+}
diff --git a/SushiBar/SushiBarFileImplement/Implements/SushiStorage.cs b/SushiBar/SushiBarFileImplement/Implements/SushiStorage.cs
index a4a8add..04399ba 100644
--- a/SushiBar/SushiBarFileImplement/Implements/SushiStorage.cs
+++ b/SushiBar/SushiBarFileImplement/Implements/SushiStorage.cs
@@ -2,7 +2,9 @@
using SushiBarContracts.SearchModels;
using SushiBarContracts.StoragesContracts;
using SushiBarContracts.ViewModels;
+using SushiBarDataModels.Models;
using SushiBarFileImplement.Models;
+using System.Reflection;
namespace SushiBarFileImplement.Implements
{
@@ -70,5 +72,40 @@ namespace SushiBarFileImplement.Implements
}
return null;
}
+ public bool HasSushi(ISushiModel sushi, int needCount)
+ {
+ var temp = source.Shops
+ .Select(x => x.ListSushi
+ .FirstOrDefault(x => x.Key == sushi.Id).Value.Item2).Sum();
+ return temp >= needCount;
+ }
+
+ public bool SellSushi(ISushiModel model, int count)
+ {
+ if (!HasSushi(model, count))
+ {
+ return false;
+ }
+
+ foreach (var shop in source.Shops.Where(x => x.ListSushi.ContainsKey(model.Id)))
+ {
+ if (shop.ListSushi[model.Id].Item2 < count)
+ {
+ shop.ListSushi[model.Id] = (shop.ListSushi[model.Id].Item1, 0);
+ count -= shop.ListSushi[model.Id].Item2;
+ }
+ else
+ {
+ shop.ListSushi[model.Id] = (shop.ListSushi[model.Id].Item1,
+ shop.ListSushi[model.Id].Item2 - count);
+ count -= count;
+ }
+ if (count <= 0)
+ {
+ return true;
+ }
+ }
+ return true;
+ }
}
}
diff --git a/SushiBar/SushiBarFileImplement/Models/Shop.cs b/SushiBar/SushiBarFileImplement/Models/Shop.cs
new file mode 100644
index 0000000..fb4a66a
--- /dev/null
+++ b/SushiBar/SushiBarFileImplement/Models/Shop.cs
@@ -0,0 +1,107 @@
+
+using SushiBarContracts.BindingModels;
+using SushiBarContracts.ViewModels;
+using SushiBarDataModels.Models;
+using System.Reflection.Metadata;
+using System.Xml.Linq;
+
+namespace SushiBarFileImplement.Models
+{
+ public class Shop : IShopModel
+ {
+ public int Id { get; private set; }
+ public string ShopName { get; private set; } = string.Empty;
+ public string Address { get; private set; } = string.Empty;
+ public DateTime DateOpening { get; private set; }
+ public int MaxCountSushi { get; private set; }
+ public Dictionary CountSushi
+ {
+ get;
+ private set;
+ } = new();
+
+ private Dictionary? _shopSushi = null;
+ public Dictionary ListSushi
+ {
+ get
+ {
+ if (_shopSushi == null)
+ {
+ var source = DataFileSingleton.GetInstance();
+ _shopSushi =
+ CountSushi.ToDictionary(x => x.Key,
+ y => ((source.ListSushi.FirstOrDefault(z => z.Id == y.Key) as ISushiModel)!, y.Value));
+ }
+ return _shopSushi;
+ }
+ }
+
+ public static Shop? Create(ShopBindingModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new Shop()
+ {
+ Id = model.Id,
+ ShopName = model.ShopName,
+ Address = model.Address,
+ MaxCountSushi = model.MaxCountSushi,
+ DateOpening = model.DateOpening,
+ CountSushi = model.ListSushi.ToDictionary(x => x.Key, x => x.Value.Item2)
+ };
+ }
+ public static Shop? Create(XElement element)
+ {
+ if (element == null)
+ {
+ return null;
+ }
+ return new()
+ {
+ Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+ ShopName = element.Element("ShopName")!.Value,
+ Address = element.Element("Address")!.Value,
+ DateOpening = Convert.ToDateTime(element.Element("DateOpening")!.Value),
+ MaxCountSushi = Convert.ToInt32(element.Element("MaxCountSushi")!.Value),
+ CountSushi = element.Element("ListSushi")!.Elements("Sushi").ToDictionary(
+ x => Convert.ToInt32(x.Element("Key")?.Value),
+ x => Convert.ToInt32(x.Element("Value")?.Value))
+ };
+ }
+ public void Update(ShopBindingModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ ShopName = model.ShopName;
+ Address = model.Address;
+ DateOpening = model.DateOpening;
+ MaxCountSushi = model.MaxCountSushi;
+ CountSushi = model.ListSushi.ToDictionary(x => x.Key, x => x.Value.Item2);
+ _shopSushi = null;
+ }
+ public ShopViewModel GetViewModel => new()
+ {
+ Id = Id,
+ ShopName = ShopName,
+ Address = Address,
+ ListSushi = ListSushi,
+ DateOpening = DateOpening,
+ MaxCountSushi = MaxCountSushi,
+ };
+ public XElement GetXElement => new("Shop",
+ new XAttribute("Id", Id),
+ new XElement("ShopName", ShopName),
+ new XElement("Address", Address),
+ new XElement("DateOpening", DateOpening),
+ new XElement("MaxCountSushi", MaxCountSushi),
+ new XElement("ListSushi", CountSushi
+ .Select(x => new XElement("Sushi",
+ new XElement("Key", x.Key),
+ new XElement("Value", x.Value))
+ ).ToArray()));
+ }
+}
diff --git a/SushiBar/SushiBarListImplement/DataListSingleton.cs b/SushiBar/SushiBarListImplement/DataListSingleton.cs
index 04beee0..f398fdd 100644
--- a/SushiBar/SushiBarListImplement/DataListSingleton.cs
+++ b/SushiBar/SushiBarListImplement/DataListSingleton.cs
@@ -1,6 +1,6 @@
-using SushiBarListImplement.Models;
+using SushiBarFileImplement.Models;
-namespace SushiBarListImplement
+namespace SushiBarFileImplement
{
public class DataListSingleton
{
diff --git a/SushiBar/SushiBarListImplement/Implements/IngredientStorage.cs b/SushiBar/SushiBarListImplement/Implements/IngredientStorage.cs
index 92a771b..0ee51d8 100644
--- a/SushiBar/SushiBarListImplement/Implements/IngredientStorage.cs
+++ b/SushiBar/SushiBarListImplement/Implements/IngredientStorage.cs
@@ -2,9 +2,9 @@
using SushiBarContracts.SearchModels;
using SushiBarContracts.StoragesContracts;
using SushiBarContracts.ViewModels;
-using SushiBarListImplement.Models;
+using SushiBarFileImplement.Models;
-namespace SushiBarListImplement.Implements
+namespace SushiBarFileImplement.Implements
{
public class IngredientStorage : IIngredientStorage
{
diff --git a/SushiBar/SushiBarListImplement/Implements/OrderStorage.cs b/SushiBar/SushiBarListImplement/Implements/OrderStorage.cs
index 3254155..dedc1f8 100644
--- a/SushiBar/SushiBarListImplement/Implements/OrderStorage.cs
+++ b/SushiBar/SushiBarListImplement/Implements/OrderStorage.cs
@@ -2,9 +2,9 @@
using SushiBarContracts.SearchModels;
using SushiBarContracts.StoragesContracts;
using SushiBarContracts.ViewModels;
-using SushiBarListImplement.Models;
+using SushiBarFileImplement.Models;
-namespace SushiBarListImplement.Implements
+namespace SushiBarFileImplement.Implements
{
public class OrderStorage : IOrderStorage
{
diff --git a/SushiBar/SushiBarListImplement/Implements/ShopStorage.cs b/SushiBar/SushiBarListImplement/Implements/ShopStorage.cs
index a36aef1..e5fff04 100644
--- a/SushiBar/SushiBarListImplement/Implements/ShopStorage.cs
+++ b/SushiBar/SushiBarListImplement/Implements/ShopStorage.cs
@@ -2,9 +2,10 @@
using SushiBarContracts.SearchModels;
using SushiBarContracts.StoragesContracts;
using SushiBarContracts.ViewModels;
-using SushiBarListImplement.Models;
+using SushiBarDataModels.Models;
+using SushiBarFileImplement.Models;
-namespace SushiBarListImplement.Implements
+namespace SushiBarFileImplement.Implements
{
public class ShopStorage : IShopStorage
{
@@ -98,5 +99,15 @@ namespace SushiBarListImplement.Implements
}
return null;
}
+
+ public bool IsEnoughSushi(ISushiModel model, int count)
+ {
+ throw new NotImplementedException();
+ }
+
+ public bool SellSushi(ISushiModel model, int count)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/SushiBar/SushiBarListImplement/Implements/SushiStorage.cs b/SushiBar/SushiBarListImplement/Implements/SushiStorage.cs
index d2878ca..c65caf2 100644
--- a/SushiBar/SushiBarListImplement/Implements/SushiStorage.cs
+++ b/SushiBar/SushiBarListImplement/Implements/SushiStorage.cs
@@ -2,9 +2,10 @@
using SushiBarContracts.SearchModels;
using SushiBarContracts.StoragesContracts;
using SushiBarContracts.ViewModels;
-using SushiBarListImplement.Models;
+using SushiBarDataModels.Models;
+using SushiBarFileImplement.Models;
-namespace SushiBarListImplement.Implements
+namespace SushiBarFileImplement.Implements
{
public class SushiStorage : ISushiStorage
{
@@ -98,5 +99,15 @@ namespace SushiBarListImplement.Implements
}
return null;
}
+
+ public bool HasSushi(ISushiModel model, int needCount)
+ {
+ throw new NotImplementedException();
+ }
+
+ public bool SellSushi(ISushiModel model, int count)
+ {
+ throw new NotImplementedException();
+ }
}
}
\ No newline at end of file
diff --git a/SushiBar/SushiBarListImplement/Models/Ingredient.cs b/SushiBar/SushiBarListImplement/Models/Ingredient.cs
index 2f61296..01a2271 100644
--- a/SushiBar/SushiBarListImplement/Models/Ingredient.cs
+++ b/SushiBar/SushiBarListImplement/Models/Ingredient.cs
@@ -2,7 +2,7 @@
using SushiBarContracts.ViewModels;
using SushiBarDataModels.Models;
-namespace SushiBarListImplement.Models
+namespace SushiBarFileImplement.Models
{
public class Ingredient : IIngredientModel
{
diff --git a/SushiBar/SushiBarListImplement/Models/Order.cs b/SushiBar/SushiBarListImplement/Models/Order.cs
index 445b162..81908bf 100644
--- a/SushiBar/SushiBarListImplement/Models/Order.cs
+++ b/SushiBar/SushiBarListImplement/Models/Order.cs
@@ -3,7 +3,7 @@ using SushiBarContracts.ViewModels;
using SushiBarDataModels.Enums;
using SushiBarDataModels.Models;
-namespace SushiBarListImplement.Models
+namespace SushiBarFileImplement.Models
{
public class Order : IOrderModel
{
diff --git a/SushiBar/SushiBarListImplement/Models/Shop.cs b/SushiBar/SushiBarListImplement/Models/Shop.cs
index abbecfc..b27761d 100644
--- a/SushiBar/SushiBarListImplement/Models/Shop.cs
+++ b/SushiBar/SushiBarListImplement/Models/Shop.cs
@@ -2,7 +2,7 @@
using SushiBarContracts.ViewModels;
using SushiBarDataModels.Models;
-namespace SushiBarListImplement.Models
+namespace SushiBarFileImplement.Models
{
public class Shop : IShopModel
{
@@ -49,5 +49,7 @@ namespace SushiBarListImplement.Models
ListSushi = ListSushi,
DateOpening = DateOpening,
};
+
+ public int MaxCountSushi => throw new NotImplementedException();
}
}
diff --git a/SushiBar/SushiBarListImplement/Models/Sushi.cs b/SushiBar/SushiBarListImplement/Models/Sushi.cs
index 3a589e8..1ae291c 100644
--- a/SushiBar/SushiBarListImplement/Models/Sushi.cs
+++ b/SushiBar/SushiBarListImplement/Models/Sushi.cs
@@ -2,7 +2,7 @@
using SushiBarContracts.ViewModels;
using SushiBarDataModels.Models;
-namespace SushiBarListImplement.Models
+namespace SushiBarFileImplement.Models
{
public class Sushi : ISushiModel
{