PIbd-22. Fedorenko G.Y. Lab Work 1 HARD #2
@ -154,8 +154,8 @@ namespace CarpentryWorkshopView
|
||||
|
||||
private void магазиныToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var service = Program.ServiceProvider?.GetService(typeof(ShopsForm));
|
||||
if (service is ShopsForm form)
|
||||
var service = Program.ServiceProvider?.GetService(typeof(FormShops));
|
||||
if (service is FormShops form)
|
||||
{
|
||||
form.ShowDialog();
|
||||
}
|
||||
@ -163,8 +163,8 @@ namespace CarpentryWorkshopView
|
||||
|
||||
private void поставкиToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var service = Program.ServiceProvider?.GetService(typeof(SupplyForm));
|
||||
if (service is SupplyForm form)
|
||||
var service = Program.ServiceProvider?.GetService(typeof(FormSupply));
|
||||
if (service is FormSupply form)
|
||||
{
|
||||
form.ShowDialog();
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
namespace CarpentryWorkshopView
|
||||
{
|
||||
partial class ShopForm
|
||||
partial class FormShop
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
@ -6,13 +6,13 @@ using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace CarpentryWorkshopView
|
||||
{
|
||||
public partial class ShopForm : Form
|
||||
public partial class FormShop : Form
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly IShopLogic _logic;
|
||||
public int? _id;
|
||||
private Dictionary<int, (IWoodModel, int)> _woods;
|
||||
public ShopForm(ILogger<ShopForm> logger, IShopLogic logic)
|
||||
public FormShop(ILogger<FormShop> logger, IShopLogic logic)
|
||||
{
|
||||
InitializeComponent();
|
||||
_logger = logger;
|
@ -1,6 +1,6 @@
|
||||
namespace CarpentryWorkshopView
|
||||
{
|
||||
partial class ShopsForm
|
||||
partial class FormShops
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
@ -5,11 +5,11 @@ using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace CarpentryWorkshopView
|
||||
{
|
||||
public partial class ShopsForm : Form
|
||||
public partial class FormShops : Form
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly IShopLogic _logic;
|
||||
public ShopsForm(ILogger<ShopsForm> logger, IShopLogic logic)
|
||||
public FormShops(ILogger<FormShops> logger, IShopLogic logic)
|
||||
{
|
||||
InitializeComponent();
|
||||
_logger = logger;
|
||||
@ -45,8 +45,8 @@ namespace CarpentryWorkshopView
|
||||
|
||||
private void AddButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
var service = Program.ServiceProvider?.GetService(typeof(ShopForm));
|
||||
if (service is ShopForm form)
|
||||
var service = Program.ServiceProvider?.GetService(typeof(FormShop));
|
||||
if (service is FormShop form)
|
||||
{
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
@ -59,8 +59,8 @@ namespace CarpentryWorkshopView
|
||||
{
|
||||
if (DataGridView.SelectedRows.Count == 1)
|
||||
{
|
||||
var service = Program.ServiceProvider?.GetService(typeof(ShopForm));
|
||||
if (service is ShopForm form)
|
||||
var service = Program.ServiceProvider?.GetService(typeof(FormShop));
|
||||
if (service is FormShop form)
|
||||
{
|
||||
var tmp = Convert.ToInt32(DataGridView.SelectedRows[0].Cells["Id"].Value);
|
||||
form._id = Convert.ToInt32(DataGridView.SelectedRows[0].Cells["Id"].Value);
|
@ -1,6 +1,6 @@
|
||||
namespace CarpentryWorkshopView
|
||||
{
|
||||
partial class SupplyForm
|
||||
partial class FormSupply
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
@ -42,6 +42,8 @@
|
||||
ShopComboBox.Name = "ShopComboBox";
|
||||
ShopComboBox.Size = new Size(331, 23);
|
||||
ShopComboBox.TabIndex = 0;
|
||||
ShopComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
ShopComboBox.FormattingEnabled = true;
|
||||
//
|
||||
// WoodComboBox
|
||||
//
|
||||
@ -50,6 +52,8 @@
|
||||
WoodComboBox.Name = "WoodComboBox";
|
||||
WoodComboBox.Size = new Size(331, 23);
|
||||
WoodComboBox.TabIndex = 1;
|
||||
WoodComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
WoodComboBox.FormattingEnabled = true;
|
||||
//
|
||||
// CountTextBox
|
||||
//
|
||||
@ -78,7 +82,7 @@
|
||||
CancelButton.UseVisualStyleBackColor = true;
|
||||
CancelButton.Click += CancelButton_Click;
|
||||
//
|
||||
// SupplyForm
|
||||
// FormSupply
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
@ -88,7 +92,7 @@
|
||||
Controls.Add(CountTextBox);
|
||||
Controls.Add(WoodComboBox);
|
||||
Controls.Add(ShopComboBox);
|
||||
Name = "SupplyForm";
|
||||
Name = "FormSupply";
|
||||
Text = "SupplyForm";
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
@ -1,4 +1,5 @@
|
||||
using CarpentryWorkshopContracts.BusinessLogicsContracts;
|
||||
using CarpentryWorkshopContracts.BindingModels;
|
||||
using CarpentryWorkshopContracts.BusinessLogicsContracts;
|
||||
using CarpentryWorkshopContracts.SearchModels;
|
||||
using CarpentryWorkshopContracts.ViewModels;
|
||||
using CarpentryWorkshopDataModels.Models;
|
||||
@ -14,7 +15,7 @@ using System.Windows.Forms;
|
||||
|
||||
namespace CarpentryWorkshopView
|
||||
{
|
||||
public partial class SupplyForm : Form
|
||||
public partial class FormSupply : Form
|
||||
{
|
||||
private readonly List<WoodViewModel>? _woodList;
|
||||
private readonly List<ShopViewModel>? _shopsList;
|
||||
@ -71,7 +72,7 @@ namespace CarpentryWorkshopView
|
||||
set
|
||||
{ CountTextBox.Text = value.ToString(); }
|
||||
}
|
||||
public SupplyForm(IWoodLogic woodLogic, IShopLogic shopLogic)
|
||||
public FormSupply(IWoodLogic woodLogic, IShopLogic shopLogic)
|
||||
{
|
||||
InitializeComponent();
|
||||
_shopLogic = shopLogic;
|
||||
@ -119,11 +120,12 @@ namespace CarpentryWorkshopView
|
||||
{
|
||||
int count = Convert.ToInt32(CountTextBox.Text);
|
||||
|
||||
bool res = _shopLogic.MakeSupply(
|
||||
new ShopSearchModel() { Id = Convert.ToInt32(ShopComboBox.SelectedValue) },
|
||||
_woodLogic.ReadElement(new() { Id = Convert.ToInt32(WoodComboBox.SelectedValue) }),
|
||||
count
|
||||
);
|
||||
bool res = _shopLogic.MakeSupply(new SupplyBindingModel
|
||||
{
|
||||
ShopId = Convert.ToInt32(ShopComboBox.SelectedValue),
|
||||
WoodId = Convert.ToInt32(WoodComboBox.SelectedValue),
|
||||
Count = Convert.ToInt32(CountTextBox.Text)
|
||||
});
|
||||
|
||||
if (!res)
|
||||
{
|
@ -1,17 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
@ -26,36 +26,36 @@
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
@ -53,9 +53,9 @@ namespace CarpentryWorkshop
|
||||
services.AddTransient<FormWood>();
|
||||
services.AddTransient<FormWoodComponent>();
|
||||
services.AddTransient<FormWoods>();
|
||||
services.AddTransient<ShopForm>();
|
||||
services.AddTransient<ShopsForm>();
|
||||
services.AddTransient<SupplyForm>();
|
||||
services.AddTransient<FormShop>();
|
||||
services.AddTransient<FormShops>();
|
||||
services.AddTransient<FormSupply>();
|
||||
}
|
||||
}
|
||||
}
|
@ -12,18 +12,19 @@ namespace CarpentryWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly IShopStorage _shopStorage;
|
||||
private readonly IWoodStorage _woodStorage;
|
||||
|
||||
public ShopLogic(ILogger<ShopLogic> logger, IShopStorage shopStorage)
|
||||
public ShopLogic(ILogger<ShopLogic> logger, IShopStorage shopStorage, IWoodStorage woodStorage)
|
||||
{
|
||||
_logger = logger;
|
||||
_shopStorage = shopStorage;
|
||||
_woodStorage = woodStorage;
|
||||
}
|
||||
|
||||
public List<ShopViewModel> ReadList(ShopSearchModel model)
|
||||
{
|
||||
_logger.LogInformation("ReadList. ShopName:{Name}. Id:{ Id}", model?.Name, model?.Id);
|
||||
var list = model == null ? _shopStorage.GetFullList() :
|
||||
_shopStorage.GetFilteredList(model);
|
||||
_logger.LogInformation("ReadList. ShopName:{ShopName}.Id:{ Id}", model?.ShopName, model?.Id);
|
||||
var list = model == null ? _shopStorage.GetFullList() : _shopStorage.GetFilteredList(model);
|
||||
if (list == null)
|
||||
{
|
||||
_logger.LogWarning("ReadList return null list");
|
||||
@ -31,14 +32,45 @@ namespace CarpentryWorkshopBusinessLogic.BusinessLogics
|
||||
}
|
||||
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
public bool MakeSupply(ShopSearchModel model, IWoodModel wood, int count)
|
||||
public bool MakeSupply(SupplyBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
return false;
|
||||
return _shopStorage.SupplyWood(model, wood, count);
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
if (model.Count <= 0)
|
||||
{
|
||||
throw new ArgumentException("Количество изделий должно быть больше 0");
|
||||
}
|
||||
var shop = _shopStorage.GetElement(new ShopSearchModel
|
||||
{
|
||||
Id = model.ShopId
|
||||
});
|
||||
if (shop == null)
|
||||
{
|
||||
throw new ArgumentException("Магазина не существует");
|
||||
}
|
||||
if (shop.ShopWoods.ContainsKey(model.WoodId))
|
||||
{
|
||||
var oldValue = shop.ShopWoods[model.WoodId];
|
||||
oldValue.Item2 += model.Count;
|
||||
shop.ShopWoods[model.WoodId] = oldValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
var wood = _woodStorage.GetElement(new WoodSearchModel
|
||||
{
|
||||
Id = model.WoodId
|
||||
});
|
||||
if (wood == null)
|
||||
{
|
||||
throw new ArgumentException($"Поставка: Товар с id:{model.WoodId} не найденн");
|
||||
}
|
||||
shop.ShopWoods.Add(model.WoodId, (wood, model.Count));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public ShopViewModel ReadElement(ShopSearchModel model)
|
||||
@ -47,7 +79,7 @@ namespace CarpentryWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
_logger.LogInformation("ReadElement. ShopName:{ShopName}.Id:{ Id}", model.Name, model.Id);
|
||||
_logger.LogInformation("ReadElement. ShopName:{ShopName}.Id:{ Id}", model.ShopName, model.Id);
|
||||
var element = _shopStorage.GetElement(model);
|
||||
if (element == null)
|
||||
{
|
||||
@ -101,23 +133,18 @@ namespace CarpentryWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.ShopName))
|
||||
{
|
||||
throw new ArgumentNullException("Нет названия магазина", nameof(model.ShopName));
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.Address))
|
||||
{
|
||||
throw new ArgumentNullException("Нет адресса магазина", nameof(model.ShopName));
|
||||
throw new ArgumentException("Адрес магазина длжен быть заполнен", nameof(model.Address));
|
||||
}
|
||||
if (model.DateOpen == null)
|
||||
if (string.IsNullOrEmpty(model.ShopName))
|
||||
{
|
||||
throw new ArgumentNullException("Нет даты открытия магазина",
|
||||
nameof(model.ShopName));
|
||||
throw new ArgumentException("Название магазина должно быть заполнено", nameof(model.ShopName));
|
||||
}
|
||||
_logger.LogInformation("Shop. ShopName:{ShopName}.Address:{Address}. DateOpen:{DateOpen}. Id: { Id}", model.ShopName, model.Address, model.DateOpen, model.Id);
|
||||
_logger.LogInformation("Shop. ShopName:{ShopName}.Adres:{Adres}.OpeningDate:{OpeningDate}.Id:{ Id}", model.ShopName, model.Address, model.DateOpen, model.Id);
|
||||
var element = _shopStorage.GetElement(new ShopSearchModel
|
||||
{
|
||||
Name = model.ShopName
|
||||
ShopName = model.ShopName
|
||||
});
|
||||
if (element != null && element.Id != model.Id)
|
||||
{
|
||||
|
@ -0,0 +1,11 @@
|
||||
using CarpentryWorkshopDataModels.Models;
|
||||
|
||||
namespace CarpentryWorkshopContracts.BindingModels
|
||||
{
|
||||
public class SupplyBindingModel : ISupplyModel
|
||||
{
|
||||
public int ShopId { get; set; }
|
||||
public int WoodId { get; set; }
|
||||
public int Count { get; set; }
|
||||
}
|
||||
}
|
@ -12,6 +12,6 @@ namespace CarpentryWorkshopContracts.BusinessLogicsContracts
|
||||
bool Create(ShopBindingModel model);
|
||||
bool Update(ShopBindingModel model);
|
||||
bool Delete(ShopBindingModel model);
|
||||
bool MakeSupply(ShopSearchModel model, IWoodModel wood, int count);
|
||||
bool MakeSupply(SupplyBindingModel model);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,6 @@
|
||||
public class ShopSearchModel
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public string? ShopName { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,5 @@ namespace CarpentryWorkshopContracts.StoragesContracts
|
||||
ShopViewModel? Insert(ShopBindingModel model);
|
||||
ShopViewModel? Update(ShopBindingModel model);
|
||||
ShopViewModel? Delete(ShopBindingModel model);
|
||||
bool SupplyWood(ShopSearchModel model, IWoodModel wood, int Count);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,9 @@
|
||||
namespace CarpentryWorkshopDataModels.Models
|
||||
{
|
||||
public interface ISupplyModel
|
||||
{
|
||||
int ShopId { get; }
|
||||
int WoodId { get; }
|
||||
int Count { get; }
|
||||
}
|
||||
}
|
@ -27,13 +27,13 @@ namespace CarpentryWorkshopListImplement.Implements
|
||||
model)
|
||||
{
|
||||
var result = new List<ShopViewModel>();
|
||||
if (string.IsNullOrEmpty(model.Name))
|
||||
if (string.IsNullOrEmpty(model.ShopName))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
foreach (var shop in _source.Shops)
|
||||
{
|
||||
if (shop.ShopName.Contains(model.Name))
|
||||
if (shop.ShopName.Contains(model.ShopName))
|
||||
{
|
||||
result.Add(shop.GetViewModel);
|
||||
}
|
||||
@ -42,14 +42,14 @@ namespace CarpentryWorkshopListImplement.Implements
|
||||
}
|
||||
public ShopViewModel? GetElement(ShopSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.Name) && !model.Id.HasValue)
|
||||
if (string.IsNullOrEmpty(model.ShopName) && !model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
foreach (var shop in _source.Shops)
|
||||
{
|
||||
if ((!string.IsNullOrEmpty(model.Name) &&
|
||||
shop.ShopName == model.Name) ||
|
||||
if ((!string.IsNullOrEmpty(model.ShopName) &&
|
||||
shop.ShopName == model.ShopName) ||
|
||||
(model.Id.HasValue && shop.Id == model.Id))
|
||||
{
|
||||
return shop.GetViewModel;
|
||||
@ -101,7 +101,7 @@ namespace CarpentryWorkshopListImplement.Implements
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool SupplyWood(ShopSearchModel model, IWoodModel wood, int count)
|
||||
/* public bool SupplyWood(ShopSearchModel model, IWoodModel wood, int count)
|
||||
{
|
||||
if (model == null)
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
@ -130,6 +130,6 @@ namespace CarpentryWorkshopListImplement.Implements
|
||||
ShopWoods = curModel.ShopWoods,
|
||||
});
|
||||
return true;
|
||||
}
|
||||
} */
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,7 @@ namespace CarpentryWorkshopListImplement.Models
|
||||
Id = model.Id,
|
||||
ShopName = model.ShopName,
|
||||
Address = model.Address,
|
||||
DateOpen = model.DateOpen,
|
||||
ShopWoods = new()
|
||||
DateOpen = model.DateOpen
|
||||
};
|
||||
}
|
||||
|
||||
@ -40,7 +39,6 @@ namespace CarpentryWorkshopListImplement.Models
|
||||
ShopName = model.ShopName;
|
||||
Address = model.Address;
|
||||
DateOpen = model.DateOpen;
|
||||
ShopWoods = model.ShopWoods;
|
||||
}
|
||||
|
||||
public ShopViewModel GetViewModel => new()
|
||||
|
Loading…
Reference in New Issue
Block a user