Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0cd8a1709c | |||
| 9616eecb0e | |||
| d0338a072b | |||
| 1ce08780cd | |||
| 2ab07cf584 |
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BlacksmithWorkshopContracts\BlacksmithWorkshopContracts.csproj" />
|
||||
<ProjectReference Include="..\BlacksmithWorkshopDataModels\BlacksmithWorkshopDataModels.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,58 @@
|
||||
using BlacksmithWorkshopFileImplement.Models;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BlackcmithWorkshopFileImplement
|
||||
{
|
||||
internal class DataFileSingleton
|
||||
{
|
||||
private static DataFileSingleton? instance;
|
||||
private readonly string ComponentFileName = "Component.xml";
|
||||
private readonly string OrderFileName = "Order.xml";
|
||||
private readonly string ManufactureFileName = "Manufacture.xml";
|
||||
public List<Component> Components { get; private set; }
|
||||
public List<Order> Orders { get; private set; }
|
||||
public List<Manufacture> Manufactures { get; private set; }
|
||||
public static DataFileSingleton GetInstance()
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new DataFileSingleton();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
public void SaveComponents() => SaveData(Components, ComponentFileName,
|
||||
"Components", x => x.GetXElement);
|
||||
public void SaveManufactures() => SaveData(Manufactures, ManufactureFileName,
|
||||
"Manufactures", x => x.GetXElement);
|
||||
public void SaveOrders() => SaveData(Orders, OrderFileName,
|
||||
"Orders", x => x.GetXElement);
|
||||
private DataFileSingleton()
|
||||
{
|
||||
Components = LoadData(ComponentFileName, "Component", x =>
|
||||
Component.Create(x)!)!;
|
||||
Manufactures = LoadData(ManufactureFileName, "Manufacture", x =>
|
||||
Manufacture.Create(x)!)!;
|
||||
Orders = LoadData(OrderFileName, "Order", x =>
|
||||
Order.Create(x)!)!;
|
||||
}
|
||||
private static List<T>? LoadData<T>(string filename, string xmlNodeName,
|
||||
Func<XElement, T> selectFunction)
|
||||
{
|
||||
if (File.Exists(filename))
|
||||
{
|
||||
return
|
||||
XDocument.Load(filename)?.Root?.Elements(xmlNodeName)?.Select(selectFunction)?.ToList();
|
||||
}
|
||||
return new List<T>();
|
||||
}
|
||||
private static void SaveData<T>(List<T> data, string filename, string
|
||||
xmlNodeName, Func<T, XElement> selectFunction)
|
||||
{
|
||||
if (data != null)
|
||||
{
|
||||
new XDocument(new XElement(xmlNodeName,
|
||||
data.Select(selectFunction).ToArray())).Save(filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
using BlackcmithWorkshopFileImplement;
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopFileImplement.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopFileImplement.Implements
|
||||
{
|
||||
public class ComponentStorage : IComponentStorage
|
||||
{
|
||||
private readonly DataFileSingleton source;
|
||||
public ComponentStorage()
|
||||
{
|
||||
source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
public List<ComponentViewModel> GetFullList()
|
||||
{
|
||||
return source.Components
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
public List<ComponentViewModel> GetFilteredList(ComponentSearchModel
|
||||
model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.ComponentName))
|
||||
{
|
||||
return new();
|
||||
}
|
||||
return source.Components
|
||||
.Where(x => x.ComponentName.Contains(model.ComponentName))
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
public ComponentViewModel? GetElement(ComponentSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.ComponentName) && !model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return source.Components
|
||||
.FirstOrDefault(x =>
|
||||
(!string.IsNullOrEmpty(model.ComponentName) && x.ComponentName ==
|
||||
model.ComponentName) ||
|
||||
(model.Id.HasValue && x.Id == model.Id))
|
||||
?.GetViewModel;
|
||||
}
|
||||
public ComponentViewModel? Insert(ComponentBindingModel model)
|
||||
{
|
||||
model.Id = source.Components.Count > 0 ? source.Components.Max(x =>
|
||||
x.Id) + 1 : 1;
|
||||
var newComponent = Component.Create(model);
|
||||
if (newComponent == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
source.Components.Add(newComponent);
|
||||
source.SaveComponents();
|
||||
return newComponent.GetViewModel;
|
||||
}
|
||||
public ComponentViewModel? Update(ComponentBindingModel model)
|
||||
{
|
||||
var component = source.Components.FirstOrDefault(x => x.Id ==
|
||||
model.Id);
|
||||
if (component == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
component.Update(model);
|
||||
source.SaveComponents();
|
||||
return component.GetViewModel;
|
||||
}
|
||||
public ComponentViewModel? Delete(ComponentBindingModel model)
|
||||
{
|
||||
var element = source.Components.FirstOrDefault(x => x.Id ==
|
||||
model.Id);
|
||||
if (element != null)
|
||||
{
|
||||
source.Components.Remove(element);
|
||||
source.SaveComponents();
|
||||
return element.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
using BlackcmithWorkshopFileImplement;
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopFileImplement.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopFileImplement.Implements
|
||||
{
|
||||
public class ManufactureStorage : IManufactureStorage
|
||||
{
|
||||
private readonly DataFileSingleton source;
|
||||
public ManufactureStorage()
|
||||
{
|
||||
source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
public List<ManufactureViewModel> GetFullList()
|
||||
{
|
||||
return source.Manufactures
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public List<ManufactureViewModel> GetFilteredList(ManufactureSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.ManufactureName))
|
||||
{
|
||||
return new();
|
||||
}
|
||||
return source.Manufactures
|
||||
.Where(x => x.ManufactureName.Contains(model.ManufactureName))
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
public ManufactureViewModel? GetElement(ManufactureSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.ManufactureName) && !model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return source.Manufactures
|
||||
.FirstOrDefault(x =>
|
||||
(!string.IsNullOrEmpty(model.ManufactureName) && x.ManufactureName ==
|
||||
model.ManufactureName) ||
|
||||
(model.Id.HasValue && x.Id == model.Id))
|
||||
?.GetViewModel;
|
||||
}
|
||||
public ManufactureViewModel? Insert(ManufactureBindingModel model)
|
||||
{
|
||||
model.Id = source.Manufactures.Count > 0 ? source.Manufactures.Max(x =>
|
||||
x.Id) + 1 : 1;
|
||||
var newManufacture = Manufacture.Create(model);
|
||||
if (newManufacture == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
source.Manufactures.Add(newManufacture);
|
||||
source.SaveManufactures();
|
||||
return newManufacture.GetViewModel;
|
||||
}
|
||||
public ManufactureViewModel? Update(ManufactureBindingModel model)
|
||||
{
|
||||
var Manufacture = source.Manufactures.FirstOrDefault(x => x.Id ==
|
||||
model.Id);
|
||||
if (Manufacture == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
Manufacture.Update(model);
|
||||
source.SaveManufactures();
|
||||
return Manufacture.GetViewModel;
|
||||
}
|
||||
public ManufactureViewModel? Delete(ManufactureBindingModel model)
|
||||
{
|
||||
var Manufacture = source.Manufactures.FirstOrDefault(x => x.Id ==
|
||||
model.Id);
|
||||
if (Manufacture != null)
|
||||
{
|
||||
source.Manufactures.Remove(Manufacture);
|
||||
source.SaveManufactures();
|
||||
return Manufacture.GetViewModel;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
using BlackcmithWorkshopFileImplement;
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopFileImplement.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopFileImplement.Implements
|
||||
{
|
||||
public class OrderStorage : IOrderStorage
|
||||
{
|
||||
private readonly DataFileSingleton source;
|
||||
public OrderStorage()
|
||||
{
|
||||
source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
public List<OrderViewModel> GetFullList()
|
||||
{
|
||||
return source.Orders
|
||||
.Select(x => AccessManufactureStorage(x.GetViewModel))
|
||||
.ToList();
|
||||
}
|
||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue)
|
||||
{
|
||||
return new();
|
||||
}
|
||||
return source.Orders
|
||||
.Where(x => x.Id == model.Id)
|
||||
.Select(x => AccessManufactureStorage(x.GetViewModel))
|
||||
.ToList();
|
||||
}
|
||||
public OrderViewModel? GetElement(OrderSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return AccessManufactureStorage(source.Orders.FirstOrDefault(
|
||||
x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel
|
||||
);
|
||||
}
|
||||
public OrderViewModel? Insert(OrderBindingModel model)
|
||||
{
|
||||
model.Id = source.Orders.Count > 0 ? source.Orders.Max(x => x.Id) + 1 : 1;
|
||||
var newOrder = Order.Create(model);
|
||||
if (newOrder == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
source.Orders.Add(newOrder);
|
||||
source.SaveOrders();
|
||||
return AccessManufactureStorage(newOrder.GetViewModel);
|
||||
}
|
||||
public OrderViewModel? Update(OrderBindingModel model)
|
||||
{
|
||||
var order = source.Orders.FirstOrDefault(x => x.Id == model.Id);
|
||||
if (order == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
order.Update(model);
|
||||
source.SaveOrders();
|
||||
return AccessManufactureStorage(order.GetViewModel);
|
||||
}
|
||||
public OrderViewModel? Delete(OrderBindingModel model)
|
||||
{
|
||||
var element = source.Orders.FirstOrDefault(x => x.Id ==
|
||||
model.Id);
|
||||
if (element != null)
|
||||
{
|
||||
source.Orders.Remove(element);
|
||||
source.SaveOrders();
|
||||
return AccessManufactureStorage(element.GetViewModel);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public OrderViewModel? AccessManufactureStorage(OrderViewModel model)
|
||||
{
|
||||
if (model == null)
|
||||
return null;
|
||||
foreach (var Manufacture in source.Manufactures)
|
||||
{
|
||||
if (Manufacture.Id == model.ManufactureId)
|
||||
{
|
||||
model.ManufactureName = Manufacture.ManufactureName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return model;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BlacksmithWorkshopFileImplement.Models
|
||||
{
|
||||
public class Component : IComponentModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string ComponentName { get; set; } = string.Empty;
|
||||
public double Cost { get; set; }
|
||||
public static Component? Create(ComponentBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Component()
|
||||
{
|
||||
Id = model.Id,
|
||||
ComponentName = model.ComponentName,
|
||||
Cost = model.Cost,
|
||||
};
|
||||
}
|
||||
public static Component? Create(XElement element)
|
||||
{
|
||||
if (element == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Component()
|
||||
{
|
||||
Id = Convert.ToInt32(element.Attribute("Id")!.Value),
|
||||
ComponentName = element.Element("ComponentName")!.Value,
|
||||
Cost = Convert.ToDouble(element.Element("Cost")!.Value),
|
||||
};
|
||||
}
|
||||
public void Update(ComponentBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ComponentName = model.ComponentName;
|
||||
Cost = model.Cost;
|
||||
}
|
||||
public ComponentViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
ComponentName = ComponentName,
|
||||
Cost = Cost
|
||||
};
|
||||
public XElement GetXElement => new("Component",
|
||||
new XAttribute("Id", Id),
|
||||
new XElement("ComponentName", ComponentName),
|
||||
new XElement("Cost", Cost.ToString()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
using BlackcmithWorkshopFileImplement;
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BlacksmithWorkshopFileImplement.Models
|
||||
{
|
||||
public class Manufacture : IManufactureModel
|
||||
{
|
||||
public int Id { get; private set; }
|
||||
public string ManufactureName { get; private set; } = string.Empty;
|
||||
public double Price { get; private set; }
|
||||
public Dictionary<int, int> Components { get; private set; } = new();
|
||||
private Dictionary<int, (IComponentModel, int)>? _ManufactureComponents = null;
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_ManufactureComponents == null)
|
||||
{
|
||||
var source = DataFileSingleton.GetInstance();
|
||||
_ManufactureComponents = Components.ToDictionary(x => x.Key, y =>
|
||||
((source.Components.FirstOrDefault(z => z.Id == y.Key) as IComponentModel)!,
|
||||
y.Value));
|
||||
}
|
||||
return _ManufactureComponents;
|
||||
}
|
||||
}
|
||||
public static Manufacture? Create(ManufactureBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Manufacture()
|
||||
{
|
||||
Id = model.Id,
|
||||
ManufactureName = model.ManufactureName,
|
||||
Price = model.Price,
|
||||
Components = model.ManufactureComponents.ToDictionary(x => x.Key, x
|
||||
=> x.Value.Item2)
|
||||
};
|
||||
}
|
||||
public static Manufacture? Create(XElement element)
|
||||
{
|
||||
if (element == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Manufacture()
|
||||
{
|
||||
Id = Convert.ToInt32(element.Attribute("Id")!.Value),
|
||||
ManufactureName = element.Element("ManufactureName")!.Value,
|
||||
Price = Convert.ToDouble(element.Element("Price")!.Value),
|
||||
Components =
|
||||
element.Element("ManufactureComponents")!.Elements("ManufactureComponent")
|
||||
.ToDictionary(x =>
|
||||
Convert.ToInt32(x.Element("Key")?.Value), x =>
|
||||
Convert.ToInt32(x.Element("Value")?.Value))
|
||||
};
|
||||
}
|
||||
public void Update(ManufactureBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ManufactureName = model.ManufactureName;
|
||||
Price = model.Price;
|
||||
Components = model.ManufactureComponents.ToDictionary(x => x.Key, x =>
|
||||
x.Value.Item2);
|
||||
_ManufactureComponents = null;
|
||||
}
|
||||
public ManufactureViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
ManufactureName = ManufactureName,
|
||||
Price = Price,
|
||||
ManufactureComponents = ManufactureComponents
|
||||
};
|
||||
public XElement GetXElement => new("Manufacture",
|
||||
new XAttribute("Id", Id),
|
||||
new XElement("ManufactureName", ManufactureName),
|
||||
new XElement("Price", Price.ToString()),
|
||||
new XElement("ManufactureComponents", Components.Select(x =>
|
||||
new XElement("ManufactureComponent",
|
||||
new XElement("Key", x.Key),
|
||||
new XElement("Value", x.Value))).ToArray()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopDataModels.Enums;
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace BlacksmithWorkshopFileImplement.Models
|
||||
{
|
||||
public class Order : IOrderModel
|
||||
{
|
||||
public int Id { get; private set; }
|
||||
public int ManufactureId { get; private set; }
|
||||
public int Count { get; private set; }
|
||||
public double Sum { get; private set; }
|
||||
public OrderStatus Status { get; private set; }
|
||||
public DateTime DateCreate { get; private set; }
|
||||
public DateTime? DateImplement { get; private set; }
|
||||
|
||||
public static Order? Create(OrderBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Order()
|
||||
{
|
||||
Id = model.Id,
|
||||
ManufactureId = model.ManufactureId,
|
||||
Count = model.Count,
|
||||
Sum = model.Sum,
|
||||
Status = model.Status,
|
||||
DateCreate = model.DateCreate,
|
||||
DateImplement = model.DateImplement,
|
||||
};
|
||||
}
|
||||
public static Order? Create(XElement element)
|
||||
{
|
||||
if (element == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new Order()
|
||||
{
|
||||
Id = Convert.ToInt32(element.Attribute("Id")!.Value),
|
||||
ManufactureId = Convert.ToInt32(element.Element("ManufactureId")!.Value),
|
||||
Count = Convert.ToInt32(element.Element("Count")!.Value),
|
||||
Sum = Convert.ToDouble(element.Element("Sum")!.Value),
|
||||
Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value.ToString()),
|
||||
DateCreate = Convert.ToDateTime(element.Element("DateCreate")!.Value),
|
||||
DateImplement = string.IsNullOrEmpty(element.Element("DateImplement")!.Value) ? null : Convert.ToDateTime(element.Element("DateImplement")!.Value)
|
||||
};
|
||||
}
|
||||
public void Update(OrderBindingModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Status = model.Status;
|
||||
DateImplement = model.DateImplement;
|
||||
}
|
||||
public OrderViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
ManufactureId = ManufactureId,
|
||||
Count = Count,
|
||||
Sum = Sum,
|
||||
Status = Status,
|
||||
DateCreate = DateCreate,
|
||||
DateImplement = DateImplement,
|
||||
};
|
||||
public XElement GetXElement => new("Order",
|
||||
new XAttribute("Id", Id),
|
||||
new XElement("ManufactureId", ManufactureId),
|
||||
new XElement("Sum", Sum.ToString()),
|
||||
new XElement("Count", Count),
|
||||
new XElement("Status", Status.ToString()),
|
||||
new XElement("DateCreate", DateCreate.ToString()),
|
||||
new XElement("DateImplement", DateImplement.ToString())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,19 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.7.34221.43
|
||||
VisualStudioVersion = 17.7.34031.279
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopDataModels", "BlacksmithWorkshopDataModels\BlacksmithWorkshopDataModels.csproj", "{0C497766-56C5-43BE-B322-E2DF09E1F45B}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshop", "BlacksmithWorkshop\BlacksmithWorkshop.csproj", "{54575961-6705-47D3-8063-416A45518BED}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopContracts", "BlacksmithWorkshopContracts\BlacksmithWorkshopContracts.csproj", "{DCE9EE1E-E6B7-4692-B1A2-F891ED03B520}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopDataModels", "BlacksmithWorkshopDataModels\BlacksmithWorkshopDataModels.csproj", "{96E8CFC7-A9D8-438B-AE8C-184ED25D5AAC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopListImplement", "BlacksmithWorkshopListImplement\BlacksmithWorkshopListImplement.csproj", "{4F7BD599-9898-4A21-9446-E541F7AEBF11}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopContracts", "BlacksmithWorkshopContracts\BlacksmithWorkshopContracts.csproj", "{40A50297-20F6-4F73-834D-0902F6F7965B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopBusinessLogic", "BlacksmithWorkshopBusinessLogic\BlacksmithWorkshopBusinessLogic.csproj", "{3C843EC8-0599-4D93-A696-A96B42A30199}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopBusinessLogic", "BlacksmithWorkshopBusinessLogic\BlacksmithWorkshopBusinessLogic.csproj", "{81DD48F2-F58D-4C86-AC0C-74E447366DFA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlacksmithWorkshopView", "BlacksmithWorkshopView\BlacksmithWorkshopView.csproj", "{B172C5B2-796C-4CC9-BB35-180AFBDB6AF7}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlacksmithWorkshopListImplement", "BlacksmithWorkshopListImplement\BlacksmithWorkshopListImplement.csproj", "{F6B2AA66-2A89-4DEA-AE90-84991C1EE424}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlacksmithWorkshopFileImplement", "BlackcmithWorkshopFileImplement\BlacksmithWorkshopFileImplement.csproj", "{63C0A1A4-FA76-4F7C-8144-A33085F7DF08}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@@ -19,31 +21,35 @@ Global
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{0C497766-56C5-43BE-B322-E2DF09E1F45B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0C497766-56C5-43BE-B322-E2DF09E1F45B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0C497766-56C5-43BE-B322-E2DF09E1F45B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0C497766-56C5-43BE-B322-E2DF09E1F45B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DCE9EE1E-E6B7-4692-B1A2-F891ED03B520}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DCE9EE1E-E6B7-4692-B1A2-F891ED03B520}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DCE9EE1E-E6B7-4692-B1A2-F891ED03B520}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DCE9EE1E-E6B7-4692-B1A2-F891ED03B520}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4F7BD599-9898-4A21-9446-E541F7AEBF11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4F7BD599-9898-4A21-9446-E541F7AEBF11}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4F7BD599-9898-4A21-9446-E541F7AEBF11}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4F7BD599-9898-4A21-9446-E541F7AEBF11}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3C843EC8-0599-4D93-A696-A96B42A30199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3C843EC8-0599-4D93-A696-A96B42A30199}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3C843EC8-0599-4D93-A696-A96B42A30199}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3C843EC8-0599-4D93-A696-A96B42A30199}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B172C5B2-796C-4CC9-BB35-180AFBDB6AF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B172C5B2-796C-4CC9-BB35-180AFBDB6AF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B172C5B2-796C-4CC9-BB35-180AFBDB6AF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B172C5B2-796C-4CC9-BB35-180AFBDB6AF7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{54575961-6705-47D3-8063-416A45518BED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{54575961-6705-47D3-8063-416A45518BED}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{54575961-6705-47D3-8063-416A45518BED}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{54575961-6705-47D3-8063-416A45518BED}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{96E8CFC7-A9D8-438B-AE8C-184ED25D5AAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{96E8CFC7-A9D8-438B-AE8C-184ED25D5AAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{96E8CFC7-A9D8-438B-AE8C-184ED25D5AAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{96E8CFC7-A9D8-438B-AE8C-184ED25D5AAC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{40A50297-20F6-4F73-834D-0902F6F7965B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{40A50297-20F6-4F73-834D-0902F6F7965B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{40A50297-20F6-4F73-834D-0902F6F7965B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{40A50297-20F6-4F73-834D-0902F6F7965B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{81DD48F2-F58D-4C86-AC0C-74E447366DFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{81DD48F2-F58D-4C86-AC0C-74E447366DFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{81DD48F2-F58D-4C86-AC0C-74E447366DFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{81DD48F2-F58D-4C86-AC0C-74E447366DFA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F6B2AA66-2A89-4DEA-AE90-84991C1EE424}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F6B2AA66-2A89-4DEA-AE90-84991C1EE424}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F6B2AA66-2A89-4DEA-AE90-84991C1EE424}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F6B2AA66-2A89-4DEA-AE90-84991C1EE424}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{63C0A1A4-FA76-4F7C-8144-A33085F7DF08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{63C0A1A4-FA76-4F7C-8144-A33085F7DF08}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{63C0A1A4-FA76-4F7C-8144-A33085F7DF08}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{63C0A1A4-FA76-4F7C-8144-A33085F7DF08}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {281A4CA0-E778-4FE3-B4C8-B86463BEB2C1}
|
||||
SolutionGuid = {8DF79FEE-7448-48A9-BF6C-BC36C78CDC16}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BlackcmithWorkshopFileImplement\BlacksmithWorkshopFileImplement.csproj" />
|
||||
<ProjectReference Include="..\BlacksmithWorkshopBusinessLogic\BlacksmithWorkshopBusinessLogic.csproj" />
|
||||
<ProjectReference Include="..\BlacksmithWorkshopListImplement\BlacksmithWorkshopListImplement.csproj" />
|
||||
</ItemGroup>
|
||||
@@ -32,6 +32,8 @@
|
||||
GuidesToolStripMenuItem = new ToolStripMenuItem();
|
||||
ComponentsToolStripMenuItem = new ToolStripMenuItem();
|
||||
ManufacturesToolStripMenuItem = new ToolStripMenuItem();
|
||||
ShopsToolStripMenuItem = new ToolStripMenuItem();
|
||||
SupplyToolStripMenuItem = new ToolStripMenuItem();
|
||||
dataGridView = new DataGridView();
|
||||
buttonCreateOrder = new Button();
|
||||
buttonRefresh = new Button();
|
||||
@@ -61,7 +63,7 @@
|
||||
// ComponentsToolStripMenuItem
|
||||
//
|
||||
ComponentsToolStripMenuItem.Name = "ComponentsToolStripMenuItem";
|
||||
ComponentsToolStripMenuItem.Size = new Size(181, 22);
|
||||
ComponentsToolStripMenuItem.Size = new Size(198, 22);
|
||||
ComponentsToolStripMenuItem.Text = "Компоненты";
|
||||
ComponentsToolStripMenuItem.Click += ComponentsStripMenuItem_Click;
|
||||
//
|
||||
@@ -71,7 +73,7 @@
|
||||
ManufacturesToolStripMenuItem.Size = new Size(181, 22);
|
||||
ManufacturesToolStripMenuItem.Text = "Кузнечные изделия";
|
||||
ManufacturesToolStripMenuItem.Click += ManufacturesStripMenuItem_Click;
|
||||
//
|
||||
//
|
||||
// dataGridView
|
||||
//
|
||||
dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
@@ -167,5 +169,7 @@
|
||||
private Button buttonIssued;
|
||||
private Button buttonReady;
|
||||
private Button buttonTakeInWork;
|
||||
private ToolStripMenuItem ShopsToolStripMenuItem;
|
||||
private ToolStripMenuItem SupplyToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
@@ -163,5 +163,21 @@ namespace BlacksmithWorkshop
|
||||
{
|
||||
LoadData();
|
||||
}
|
||||
//private void ShopsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// var service = Program.ServiceProvider?.GetService(typeof(FormShops));
|
||||
// if (service is FormShops form)
|
||||
// {
|
||||
// form.ShowDialog();
|
||||
// }
|
||||
//}
|
||||
//private void SupplyToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// var service = Program.ServiceProvider?.GetService(typeof(FormSupply));
|
||||
// if (service is FormSupply form)
|
||||
// {
|
||||
// form.ShowDialog();
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
using BlacksmithWorkshopBusinessLogic.BusinessLogic;
|
||||
using BlacksmithWorkshopBusinessLogic.BusinessLogics;
|
||||
using BlacksmithWorkshopContracts.BusinessLogicsContracts;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopListImplement.Implements;
|
||||
using BlacksmithWorkshopFileImplement.Implements;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NLog.Extensions.Logging;
|
||||
using System;
|
||||
|
||||
namespace BlacksmithWorkshop
|
||||
@@ -32,6 +32,7 @@ namespace BlacksmithWorkshop
|
||||
services.AddLogging(option =>
|
||||
{
|
||||
option.SetMinimumLevel(LogLevel.Information);
|
||||
option.AddNLog("nlog.config");
|
||||
});
|
||||
services.AddTransient<IComponentStorage, ComponentStorage>();
|
||||
services.AddTransient<IOrderStorage, OrderStorage>();
|
||||
@@ -39,7 +40,7 @@ namespace BlacksmithWorkshop
|
||||
services.AddTransient<IComponentLogic, ComponentLogic>();
|
||||
services.AddTransient<IOrderLogic, OrderLogic>();
|
||||
services.AddTransient<IManufactureLogic, ManufactureLogic>();
|
||||
services.AddTransient<FormMain>();
|
||||
services.AddTransient<FormMain>();
|
||||
services.AddTransient<FormComponent>();
|
||||
services.AddTransient<FormComponents>();
|
||||
services.AddTransient<FormCreateOrder>();
|
||||
@@ -7,15 +7,11 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
<ProjectReference Include="..\BlacksmithWorkshopContracts\BlacksmithWorkshopContracts.csproj" />
|
||||
<ProjectReference Include="..\BlacksmithWorkshopListImplement\BlacksmithWorkshopListImplement.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
|
||||
|
||||
@@ -1,160 +0,0 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.BusinessLogicsContracts;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopBusinessLogic.BusinessLogic
|
||||
{
|
||||
public class ManufactureLogic : IManufactureLogic
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
|
||||
private readonly IManufactureStorage _manufactureStorage;
|
||||
|
||||
//конструктор
|
||||
public ManufactureLogic(ILogger<ManufactureLogic> logger, IManufactureStorage manufactureStorage)
|
||||
{
|
||||
_logger = logger;
|
||||
_manufactureStorage = manufactureStorage;
|
||||
}
|
||||
|
||||
//вывод отфильтрованного списка
|
||||
public List<ManufactureViewModel>? ReadList(ManufactureSearchModel? model)
|
||||
{
|
||||
_logger.LogInformation("ReadList. ManufactureName:{ManufactureName}. Id:{Id}", model?.ManufactureName, model?.Id);
|
||||
|
||||
//list хранит весь список в случае, если model пришло со значением null на вход метода
|
||||
var list = model == null ? _manufactureStorage.GetFullList() : _manufactureStorage.GetFilteredList(model);
|
||||
|
||||
if(list == null)
|
||||
{
|
||||
_logger.LogWarning("ReadList return null list");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
//вывод конкретного изделия
|
||||
public ManufactureViewModel? ReadElement(ManufactureSearchModel model)
|
||||
{
|
||||
if(model == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
|
||||
_logger.LogInformation("ReadElement. ManufactureName:{ManufactureName}. Id:{Id}", model.ManufactureName, model.Id);
|
||||
|
||||
var element = _manufactureStorage.GetElement(model);
|
||||
|
||||
if(element == null)
|
||||
{
|
||||
_logger.LogWarning("ReadElement element not found");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
_logger.LogInformation("ReadElement find. Id:{Id}", model.Id);
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
//Создание изделия
|
||||
public bool Create(ManufactureBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
|
||||
if(_manufactureStorage.Insert(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Create operation failed");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//обновление изделия
|
||||
public bool Update(ManufactureBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
|
||||
if(_manufactureStorage.Update(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Update operation failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//удаление изделия
|
||||
public bool Delete(ManufactureBindingModel model)
|
||||
{
|
||||
CheckModel(model, false);
|
||||
|
||||
_logger.LogInformation("Delete. Id:{Id}", model.Id);
|
||||
|
||||
if(_manufactureStorage.Delete(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Delete operation failed");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//проверка входного аргумента для методов Insert, Update и Delete
|
||||
private void CheckModel(ManufactureBindingModel model, bool withParams = true)
|
||||
{
|
||||
if(model == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
|
||||
//так как при удалении параметром withParams передаём false
|
||||
if (!withParams)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//проверка на наличие названия изделия
|
||||
if (string.IsNullOrEmpty(model.ManufactureName))
|
||||
{
|
||||
throw new ArgumentNullException("Нет названия изделия", nameof(model.ManufactureName));
|
||||
}
|
||||
|
||||
//проверка на наличие нормальной цены у изделия
|
||||
if(model.Price <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("Цена изделия должна быть больше 0", nameof(model.Price));
|
||||
}
|
||||
|
||||
_logger.LogInformation("Manufacture. ManufactureName:{ManufactureName}. Price:{Price}. Id:{Id}",
|
||||
model.ManufactureName, model.Price, model.Id);
|
||||
|
||||
//проверка на наличие такого же изделия в списке
|
||||
var element = _manufactureStorage.GetElement(new ManufactureSearchModel
|
||||
{
|
||||
ManufactureName = model.ManufactureName,
|
||||
});
|
||||
|
||||
//если элемент найден и его Id не совпадает с Id объекта, переданного на вход
|
||||
if(element != null && element.Id != model.Id)
|
||||
{
|
||||
throw new InvalidOperationException("Изделие с таким названием уже есть");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,173 +0,0 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.BusinessLogicsContracts;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopDataModels.Enums;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopBusinessLogic.BusinessLogic
|
||||
{
|
||||
public class OrderLogic : IOrderLogic
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
|
||||
private readonly IOrderStorage _orderStorage;
|
||||
|
||||
public OrderLogic(ILogger<OrderLogic> logger, IOrderStorage orderStorage)
|
||||
{
|
||||
_logger = logger;
|
||||
_orderStorage = orderStorage;
|
||||
}
|
||||
|
||||
//вывод отфильтрованного списка компонентов
|
||||
public List<OrderViewModel>? ReadList(OrderSearchModel? model)
|
||||
{
|
||||
_logger.LogInformation("ReadList. Id:{Id}", model?.Id);
|
||||
|
||||
//list хранит весь список в случае, если model пришло со значением null на вход метода
|
||||
var list = model == null ? _orderStorage.GetFullList() : _orderStorage.GetFilteredList(model);
|
||||
|
||||
if(list == null)
|
||||
{
|
||||
_logger.LogWarning("ReadList return null list");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
//создание чека
|
||||
public bool CreateOrder(OrderBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
|
||||
if(model.Status != OrderStatus.Неизвестен)
|
||||
{
|
||||
_logger.LogWarning("Insert operation failed, incorrect order status");
|
||||
return false;
|
||||
}
|
||||
|
||||
model.Status = OrderStatus.Принят;
|
||||
|
||||
if(_orderStorage.Insert(model) == null)
|
||||
{
|
||||
model.Status = OrderStatus.Неизвестен;
|
||||
_logger.LogWarning("Insert operation failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool TakeOrderInWork(OrderBindingModel model)
|
||||
{
|
||||
return StatusUpdate(model, OrderStatus.Выполняется);
|
||||
}
|
||||
|
||||
public bool FinishOrder(OrderBindingModel model)
|
||||
{
|
||||
return StatusUpdate(model, OrderStatus.Готов);
|
||||
}
|
||||
|
||||
public bool DeliveryOrder(OrderBindingModel model)
|
||||
{
|
||||
return StatusUpdate(model, OrderStatus.Выдан);
|
||||
}
|
||||
|
||||
//проверка на пустоту входного параметра
|
||||
private void CheckModel(OrderBindingModel model, bool withParams = true)
|
||||
{
|
||||
if(model == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
|
||||
//так как при удалении параметром withParams передаём false
|
||||
if (!withParams)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//проверка на наличие товаров в заказе
|
||||
if(model.Count <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("В заказе не может быть 0 изделий", nameof(model.Count));
|
||||
}
|
||||
|
||||
//проверка на наличие нормальной суммарной стоимости чека
|
||||
if(model.Sum <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("Суммарная стоимость заказа должна быть больше 0", nameof(model.Sum));
|
||||
}
|
||||
|
||||
//проверка корректности id у изделий
|
||||
if (model.ManufactureId < 0)
|
||||
{
|
||||
throw new ArgumentNullException("Некорректный id у изделия", nameof(model.ManufactureId));
|
||||
}
|
||||
|
||||
//проверка корректности дат
|
||||
if(model.DateCreate > model.DateImplement)
|
||||
{
|
||||
throw new InvalidOperationException("Дата создания должна быть более ранней, нежели дата завершения");
|
||||
}
|
||||
|
||||
_logger.LogInformation("Order. OrderId:{Id}. Sun:{Sum}. ManufactureId:{Id}", model.Id, model.Sum, model.ManufactureId);
|
||||
}
|
||||
|
||||
//обновление статуса заказа
|
||||
public bool StatusUpdate(OrderBindingModel model, OrderStatus newOrderStatus)
|
||||
{
|
||||
var viewModel = _orderStorage.GetElement(new OrderSearchModel { Id = model.Id });
|
||||
|
||||
//если не смогли найти указанный заказ по его Id
|
||||
if(viewModel == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
|
||||
//проверка на возможность обновления статуса на следующий
|
||||
if (viewModel.Status + 1 != newOrderStatus)
|
||||
{
|
||||
_logger.LogWarning("Status update operation failed. New status " + newOrderStatus.ToString() + " incorrect");
|
||||
return false;
|
||||
}
|
||||
|
||||
model.Status = newOrderStatus;
|
||||
|
||||
//проверка на выдачу
|
||||
if(model.Status == OrderStatus.Выдан)
|
||||
{
|
||||
model.DateImplement = DateTime.Now;
|
||||
}
|
||||
else
|
||||
{
|
||||
model.DateImplement = viewModel.DateImplement;
|
||||
}
|
||||
|
||||
CheckModel(model, false);
|
||||
|
||||
//финальная проверка на возможность обновления
|
||||
if (_orderStorage.Update(model) == null)
|
||||
{
|
||||
model.Status--;
|
||||
|
||||
_logger.LogWarning("Update operation failed");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,34 +4,22 @@ using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
//класс, реализующий логику для заготовок
|
||||
public class ComponentLogic : IComponentLogic
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly IComponentStorage _componentStorage;
|
||||
|
||||
//конструктор
|
||||
public ComponentLogic(ILogger<ComponentLogic> logger, IComponentStorage
|
||||
componentStorage)
|
||||
{
|
||||
_logger = logger;
|
||||
_componentStorage = componentStorage;
|
||||
}
|
||||
|
||||
//вывод отфильтрованного списка компонентов
|
||||
public List<ComponentViewModel>? ReadList(ComponentSearchModel? model)
|
||||
{
|
||||
_logger.LogInformation("ReadList. ComponentName:{ComponentName}.Id:{ Id}", model?.ComponentName, model?.Id);
|
||||
|
||||
//list хранит весь список в случае, если model пришло со значением null на вход метода
|
||||
var list = model == null ? _componentStorage.GetFullList() :
|
||||
_componentStorage.GetFilteredList(model);
|
||||
if (list == null)
|
||||
@@ -42,8 +30,6 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||
return list;
|
||||
}
|
||||
|
||||
//вывод конкретного заготовки
|
||||
public ComponentViewModel? ReadElement(ComponentSearchModel model)
|
||||
{
|
||||
if (model == null)
|
||||
@@ -60,8 +46,6 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
_logger.LogInformation("ReadElement find. Id:{Id}", element.Id);
|
||||
return element;
|
||||
}
|
||||
|
||||
//создание заготовки
|
||||
public bool Create(ComponentBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
@@ -73,8 +57,6 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
//обновление заготовки
|
||||
public bool Update(ComponentBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
@@ -85,8 +67,6 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//удаление заготовки
|
||||
public bool Delete(ComponentBindingModel model)
|
||||
{
|
||||
CheckModel(model, false);
|
||||
@@ -98,8 +78,6 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//проверка входного аргумента для методов Insert, Update и Delete
|
||||
private void CheckModel(ComponentBindingModel model, bool withParams =
|
||||
true)
|
||||
{
|
||||
@@ -107,32 +85,24 @@ namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
//так как при удалении передаём как параметр false
|
||||
if (!withParams)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//проверка на наличие названия заготовки
|
||||
if (string.IsNullOrEmpty(model.ComponentName))
|
||||
{
|
||||
throw new ArgumentNullException("Нет названия компонента",
|
||||
nameof(model.ComponentName));
|
||||
}
|
||||
//проверка на наличие нормальной цены у заготовки
|
||||
if (model.Cost <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("Цена компонента должна быть больше 0", nameof(model.Cost));
|
||||
}
|
||||
_logger.LogInformation("Component. ComponentName:{ComponentName}. Cost:{ Cost}. Id: { Id} ",
|
||||
model.ComponentName, model.Cost, model.Id);
|
||||
|
||||
//проверка на наличие такой же заготовки в списке
|
||||
_logger.LogInformation("Component. ComponentName:{ComponentName}. Cost:{ Cost}. Id: { Id} ", model.ComponentName, model.Cost, model.Id);
|
||||
var element = _componentStorage.GetElement(new ComponentSearchModel
|
||||
{
|
||||
ComponentName = model.ComponentName
|
||||
});
|
||||
|
||||
//если элемент найден и его Id не совпадает с Id переданного объекта
|
||||
if (element != null && element.Id != model.Id)
|
||||
{
|
||||
throw new InvalidOperationException("Компонент с таким названием уже есть");
|
||||
@@ -0,0 +1,114 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.BusinessLogicsContracts;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
public class ManufactureLogic : IManufactureLogic
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly IManufactureStorage _ManufactureStorage;
|
||||
public ManufactureLogic(ILogger<ManufactureLogic> logger, IManufactureStorage ManufactureStorage)
|
||||
{
|
||||
_logger = logger;
|
||||
_ManufactureStorage = ManufactureStorage;
|
||||
}
|
||||
|
||||
public List<ManufactureViewModel>? ReadList(ManufactureSearchModel? model)
|
||||
{
|
||||
_logger.LogInformation("ReadList. ManufactureName:{ManufactureName}. Id:{ Id}", model?.ManufactureName, model?.Id);
|
||||
var list = model == null ? _ManufactureStorage.GetFullList() :
|
||||
_ManufactureStorage.GetFilteredList(model);
|
||||
if (list == null)
|
||||
{
|
||||
_logger.LogWarning("ReadList return null list");
|
||||
return null;
|
||||
}
|
||||
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||
return list;
|
||||
}
|
||||
public ManufactureViewModel? ReadElement(ManufactureSearchModel model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
_logger.LogInformation("ReadElement. ManufactureName:{ManufactureName}.Id:{ Id}", model.ManufactureName, model.Id);
|
||||
var element = _ManufactureStorage.GetElement(model);
|
||||
if (element == null)
|
||||
{
|
||||
_logger.LogWarning("ReadElement element not found");
|
||||
return null;
|
||||
}
|
||||
_logger.LogInformation("ReadElement find. Id:{Id}", element.Id);
|
||||
return element;
|
||||
}
|
||||
|
||||
public bool Create(ManufactureBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
if (_ManufactureStorage.Insert(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Insert operation failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool Update(ManufactureBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
if (_ManufactureStorage.Update(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Update operation failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public bool Delete(ManufactureBindingModel model)
|
||||
{
|
||||
CheckModel(model, false);
|
||||
_logger.LogInformation("Delete. Id:{Id}", model.Id);
|
||||
if (_ManufactureStorage.Delete(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Delete operation failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void CheckModel(ManufactureBindingModel model, bool withParams =
|
||||
true)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
if (!withParams)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.ManufactureName))
|
||||
{
|
||||
throw new ArgumentNullException("Нет названия кузнечного изделия",
|
||||
nameof(model.ManufactureName));
|
||||
}
|
||||
if (model.Price <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("Цена кузнечных изделий должна быть больше 0", nameof(model.Price));
|
||||
}
|
||||
_logger.LogInformation("Manufacture. Manufacture:{Manufacture}. Price:{ Price }. Id: { Id}", model.ManufactureName, model.Price, model.Id);
|
||||
var element = _ManufactureStorage.GetElement(new ManufactureSearchModel
|
||||
{
|
||||
ManufactureName = model.ManufactureName
|
||||
});
|
||||
if (element != null && element.Id != model.Id)
|
||||
{
|
||||
throw new InvalidOperationException("Компонент с таким названием уже есть");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.BusinessLogicsContracts;
|
||||
using BlacksmithWorkshopContracts.SearchModels;
|
||||
using BlacksmithWorkshopContracts.StoragesContracts;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopDataModels.Enums;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopBusinessLogic.BusinessLogics
|
||||
{
|
||||
public class OrderLogic : IOrderLogic
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly IOrderStorage _orderStorage;
|
||||
|
||||
public OrderLogic(ILogger<OrderLogic> logger, IOrderStorage orderStorage)
|
||||
{
|
||||
_logger = logger;
|
||||
_orderStorage = orderStorage;
|
||||
}
|
||||
|
||||
public List<OrderViewModel>? ReadList(OrderSearchModel? model)
|
||||
{
|
||||
_logger.LogInformation("ReadList. Id:{ Id}", model?.Id);
|
||||
var list = model == null ? _orderStorage.GetFullList() :
|
||||
_orderStorage.GetFilteredList(model);
|
||||
if (list == null)
|
||||
{
|
||||
_logger.LogWarning("ReadList return null list");
|
||||
return null;
|
||||
}
|
||||
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||
return list;
|
||||
}
|
||||
|
||||
public bool CreateOrder(OrderBindingModel model)
|
||||
{
|
||||
CheckModel(model);
|
||||
if (model.Status != OrderStatus.Неизвестен) return false;
|
||||
model.Status = OrderStatus.Принят;
|
||||
if (_orderStorage.Insert(model) == null)
|
||||
{
|
||||
_logger.LogWarning("Insert operation failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool ChangeStatus(OrderBindingModel model, OrderStatus status)
|
||||
{
|
||||
CheckModel(model);
|
||||
var element = _orderStorage.GetElement(new OrderSearchModel { Id = model.Id });
|
||||
if (element == null)
|
||||
{
|
||||
_logger.LogWarning("Read operation failed");
|
||||
return false;
|
||||
}
|
||||
if (element.Status != status - 1)
|
||||
{
|
||||
_logger.LogWarning("Status change operation failed");
|
||||
throw new InvalidOperationException("Текущий статус заказа не может быть переведен в выбранный");
|
||||
}
|
||||
model.Status = status;
|
||||
if (model.Status == OrderStatus.Выдан)
|
||||
model.DateImplement = DateTime.Now;
|
||||
_orderStorage.Update(model);
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool TakeOrderInWork(OrderBindingModel model)
|
||||
{
|
||||
return ChangeStatus(model, OrderStatus.Выполняется);
|
||||
}
|
||||
|
||||
public bool FinishOrder(OrderBindingModel model)
|
||||
{
|
||||
return ChangeStatus(model, OrderStatus.Готов);
|
||||
}
|
||||
|
||||
public bool DeliveryOrder(OrderBindingModel model)
|
||||
{
|
||||
return ChangeStatus(model, OrderStatus.Выдан);
|
||||
}
|
||||
|
||||
private void CheckModel(OrderBindingModel model, bool withParams =
|
||||
true)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
if (!withParams)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (model.Sum <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("Цена заказа должна быть больше 0", nameof(model.Sum));
|
||||
}
|
||||
if (model.Count <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("Количество элементов в заказе должно быть больше 0", nameof(model.Count));
|
||||
}
|
||||
_logger.LogInformation("Order. Sum:{ Cost}. Id: { Id}", model.Sum, model.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,7 @@
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.BindingModels
|
||||
{
|
||||
//реализация сущности "Компонент"
|
||||
public class ComponentBindingModel : IComponentModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
@@ -15,4 +9,4 @@ namespace BlacksmithWorkshopContracts.BindingModels
|
||||
public double Cost { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -7,15 +7,15 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.BindingModels
|
||||
{
|
||||
//реализация сущности "Изделие"
|
||||
public class ManufactureBindingModel : IManufactureModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public string ManufactureName { get; set; } = string.Empty;
|
||||
|
||||
public double Price { get; set; }
|
||||
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents { get; set; } = new();
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = new();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.BindingModels
|
||||
{
|
||||
//реализация сущности "Заказ"
|
||||
public class OrderBindingModel : IOrderModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
@@ -9,17 +9,12 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.BusinessLogicsContracts
|
||||
{
|
||||
//бизнес-логика для компонентов
|
||||
public interface IComponentLogic
|
||||
{
|
||||
List<ComponentViewModel>? ReadList(ComponentSearchModel? model);
|
||||
|
||||
ComponentViewModel? ReadElement(ComponentSearchModel model);
|
||||
|
||||
bool Create(ComponentBindingModel model);
|
||||
|
||||
bool Update(ComponentBindingModel model);
|
||||
|
||||
bool Delete(ComponentBindingModel model);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,17 +9,12 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.BusinessLogicsContracts
|
||||
{
|
||||
//бизнес-логика для продуктов
|
||||
public interface IManufactureLogic
|
||||
{
|
||||
List<ManufactureViewModel>? ReadList(ManufactureSearchModel? model);
|
||||
|
||||
ManufactureViewModel? ReadElement(ManufactureSearchModel model);
|
||||
|
||||
bool Create(ManufactureBindingModel model);
|
||||
|
||||
bool Update(ManufactureBindingModel model);
|
||||
|
||||
bool Delete(ManufactureBindingModel model);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,17 +9,12 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.BusinessLogicsContracts
|
||||
{
|
||||
//бизнес-логика для заказов
|
||||
public interface IOrderLogic
|
||||
{
|
||||
List<OrderViewModel>? ReadList(OrderSearchModel? model);
|
||||
|
||||
bool CreateOrder(OrderBindingModel model);
|
||||
|
||||
bool TakeOrderInWork(OrderBindingModel model);
|
||||
|
||||
bool FinishOrder(OrderBindingModel model);
|
||||
|
||||
bool DeliveryOrder(OrderBindingModel model);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,14 +6,9 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.SearchModels
|
||||
{
|
||||
//модель для поиска сущности "Компонент" (она же заготовка)
|
||||
public class ComponentSearchModel
|
||||
{
|
||||
//для поиска по идентификатору
|
||||
public int? Id { get; set; }
|
||||
|
||||
//для поиска по названию
|
||||
public string? ComponentName { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,13 +6,9 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.SearchModels
|
||||
{
|
||||
//модель для поиска заготовки "Продукт" (она же изделие)
|
||||
public class ManufactureSearchModel
|
||||
{
|
||||
//для поиска по идентификатору
|
||||
public int? Id { get; set; }
|
||||
|
||||
//для поиска по названию
|
||||
public string? ManufactureName { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,11 +6,8 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.SearchModels
|
||||
{
|
||||
//для поиска сущности "Заказ"
|
||||
public class OrderSearchModel
|
||||
{
|
||||
//для поиска по идентификатору
|
||||
public int? Id { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,19 +9,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.StoragesContracts
|
||||
{
|
||||
//класс хранилища компонентов (заготовок)
|
||||
public interface IComponentStorage
|
||||
{
|
||||
List<ComponentViewModel> GetFullList();
|
||||
|
||||
List<ComponentViewModel> GetFilteredList(ComponentSearchModel model);
|
||||
|
||||
ComponentViewModel? GetElement(ComponentSearchModel model);
|
||||
|
||||
ComponentViewModel? Insert(ComponentBindingModel model);
|
||||
|
||||
ComponentViewModel? Update(ComponentBindingModel model);
|
||||
|
||||
ComponentViewModel? Delete(ComponentBindingModel model);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,19 +9,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.StoragesContracts
|
||||
{
|
||||
//класс для хранилища продуктов (изделий)
|
||||
public interface IManufactureStorage
|
||||
{
|
||||
List<ManufactureViewModel> GetFullList();
|
||||
|
||||
List<ManufactureViewModel> GetFilteredList(ManufactureSearchModel model);
|
||||
|
||||
ManufactureViewModel? GetElement(ManufactureSearchModel model);
|
||||
|
||||
ManufactureViewModel? Insert(ManufactureBindingModel model);
|
||||
|
||||
ManufactureViewModel? Update(ManufactureBindingModel model);
|
||||
|
||||
ManufactureViewModel? Delete(ManufactureBindingModel model);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,19 +9,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.StoragesContracts
|
||||
{
|
||||
//класс для хранилища заказов
|
||||
public interface IOrderStorage
|
||||
{
|
||||
List<OrderViewModel> GetFullList();
|
||||
|
||||
List<OrderViewModel> GetFilteredList(OrderSearchModel model);
|
||||
|
||||
OrderViewModel? GetElement(OrderSearchModel model);
|
||||
|
||||
OrderViewModel? Insert(OrderBindingModel model);
|
||||
|
||||
OrderViewModel? Update(OrderBindingModel model);
|
||||
|
||||
OrderViewModel? Delete(OrderBindingModel model);
|
||||
OrderViewModel? Update(OrderBindingModel model);
|
||||
OrderViewModel? Delete(OrderBindingModel model);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,19 @@
|
||||
using BlacksmithWorkshopDataModels;
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System.ComponentModel;
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.ViewModels
|
||||
{
|
||||
//класс для отображения пользователю данных о заготовких (заготовках)
|
||||
public class ComponentViewModel : IComponentModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[DisplayName("Название заготовки")]
|
||||
public string WorkPieceName { get; set; } = string.Empty;
|
||||
|
||||
[DisplayName("Название компонента")]
|
||||
public string ComponentName { get; set; } = string.Empty;
|
||||
[DisplayName("Цена")]
|
||||
public double Cost { get; set; }
|
||||
public string ComponentName { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,17 +8,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.ViewModels
|
||||
{
|
||||
//класс для отображения пользователю информаци о продуктах (изделиях)
|
||||
public class ManufactureViewModel : IManufactureModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
[DisplayName("Навание изделия")]
|
||||
[DisplayName("Название кузнечного изделия")]
|
||||
public string ManufactureName { get; set; } = string.Empty;
|
||||
|
||||
[DisplayName("Цена")]
|
||||
public double Price { get; set; }
|
||||
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents { get; set; }
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = new();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,29 +9,21 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopContracts.ViewModels
|
||||
{
|
||||
//класс для отображения пользователю информации о заказах
|
||||
public class OrderViewModel : IOrderModel
|
||||
{
|
||||
[DisplayName("Номер")]
|
||||
public int Id { get; set; }
|
||||
|
||||
public int ManufactureId { get; set; }
|
||||
|
||||
[DisplayName("Изделие")]
|
||||
[DisplayName("Кузнечное изделие")]
|
||||
public string ManufactureName { get; set; } = string.Empty;
|
||||
|
||||
[DisplayName("Количество")]
|
||||
public int Count { get; set; }
|
||||
|
||||
[DisplayName("Сумма")]
|
||||
public double Sum { get; set; }
|
||||
|
||||
[DisplayName("Статус")]
|
||||
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
||||
|
||||
[DisplayName("Дата создания")]
|
||||
public DateTime DateCreate { get; set; } = DateTime.Now;
|
||||
|
||||
[DisplayName("Дата выполнения")]
|
||||
public DateTime? DateImplement { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopDataModels.Enums
|
||||
namespace BlacksmithWorkshopDataModels.Enums
|
||||
{
|
||||
//статус заказа
|
||||
public enum OrderStatus
|
||||
{
|
||||
Неизвестен = -1,
|
||||
|
||||
@@ -6,9 +6,8 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopDataModels
|
||||
{
|
||||
//интерфейс, отвечающий за id у компонентов, продуктов и чеков
|
||||
public interface IId
|
||||
{
|
||||
int Id { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,13 +6,10 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopDataModels.Models
|
||||
{
|
||||
//интерфейс, отвечающий за компоненты
|
||||
public interface IComponentModel : IId
|
||||
{
|
||||
//название составляющей (изделие состоит из составляющих)
|
||||
string ComponentName { get; }
|
||||
|
||||
//цена составляющей
|
||||
double Cost { get; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,16 +6,10 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopDataModels.Models
|
||||
{
|
||||
//интерфейс, отвечающий за продукт
|
||||
public interface IManufactureModel : IId
|
||||
{
|
||||
//наименование изделия
|
||||
string ManufactureName { get; }
|
||||
|
||||
//цена изделия
|
||||
double Price { get; }
|
||||
|
||||
//словарь, хранящий пары кол-во + компонент и его цена
|
||||
Dictionary<int, (IComponentModel, int)> ManufactureComponents { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,25 +7,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopDataModels.Models
|
||||
{
|
||||
//интерфейс, отвечающий за заказ
|
||||
public interface IOrderModel : IId
|
||||
{
|
||||
//ID продукта
|
||||
int ManufactureId { get; }
|
||||
|
||||
//кол-во продуктов
|
||||
int Count { get; }
|
||||
|
||||
//суммарная стоимость продуктов
|
||||
double Sum { get; }
|
||||
|
||||
//статус заказа
|
||||
OrderStatus Status { get; }
|
||||
|
||||
//дата создания заказа
|
||||
DateTime DateCreate { get; }
|
||||
|
||||
//дата завершения заказа
|
||||
DateTime? DateImplement { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BlacksmithWorkshopContracts\BlacksmithWorkshopContracts.csproj" />
|
||||
<ProjectReference Include="..\BlacksmithWorkshopDataModels\BlacksmithWorkshopDataModels.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -7,34 +7,24 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement
|
||||
{
|
||||
//класс для списков, в которых будет храниться информация при работе приложения
|
||||
public class DataListSingleton
|
||||
{
|
||||
private static DataListSingleton? _instance;
|
||||
|
||||
//список для хранения заготовок
|
||||
public List<Component> Components { get; set; }
|
||||
|
||||
//список для хранения изделий
|
||||
public List<Manufacture> Manufactures { get; set; }
|
||||
|
||||
//список для хранения заказов
|
||||
public List<Order> Orders { get; set; }
|
||||
|
||||
public DataListSingleton()
|
||||
public List<Manufacture> Manufactures { get; set; }
|
||||
private DataListSingleton()
|
||||
{
|
||||
Components = new List<Component>();
|
||||
Manufactures = new List<Manufacture>();
|
||||
Orders = new List<Order>();
|
||||
Manufactures = new List<Manufacture>();
|
||||
}
|
||||
|
||||
public static DataListSingleton GetInstance()
|
||||
{
|
||||
if(_instance == null)
|
||||
if (_instance == null)
|
||||
{
|
||||
_instance = new DataListSingleton();
|
||||
}
|
||||
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,19 +11,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement.Implements
|
||||
{
|
||||
//класс, реализующий интерфейс хранилища заготовок
|
||||
public class ComponentStorage : IComponentStorage
|
||||
{
|
||||
//поле для работы со списком заготовок
|
||||
private readonly DataListSingleton _source;
|
||||
|
||||
//получение в конструкторе объекта DataListSingleton
|
||||
public ComponentStorage()
|
||||
{
|
||||
_source = DataListSingleton.GetInstance();
|
||||
}
|
||||
|
||||
//получение полного списка заготовок
|
||||
public List<ComponentViewModel> GetFullList()
|
||||
{
|
||||
var result = new List<ComponentViewModel>();
|
||||
@@ -33,8 +27,6 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//получение отфильтрованного списка заготовок
|
||||
public List<ComponentViewModel> GetFilteredList(ComponentSearchModel
|
||||
model)
|
||||
{
|
||||
@@ -52,8 +44,6 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//получение элемента из списка заготовок
|
||||
public ComponentViewModel? GetElement(ComponentSearchModel model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(model.ComponentName) && !model.Id.HasValue)
|
||||
@@ -71,8 +61,6 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//при создании заготовки определяем для него новый id: ищем max id и прибавляем к нему 1
|
||||
public ComponentViewModel? Insert(ComponentBindingModel model)
|
||||
{
|
||||
model.Id = 1;
|
||||
@@ -91,8 +79,6 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
_source.Components.Add(newComponent);
|
||||
return newComponent.GetViewModel;
|
||||
}
|
||||
|
||||
//обновление заготовки
|
||||
public ComponentViewModel? Update(ComponentBindingModel model)
|
||||
{
|
||||
foreach (var component in _source.Components)
|
||||
@@ -105,8 +91,6 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//удаление заготовки
|
||||
public ComponentViewModel? Delete(ComponentBindingModel model)
|
||||
{
|
||||
for (int i = 0; i < _source.Components.Count; ++i)
|
||||
|
||||
@@ -11,127 +11,97 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement.Implements
|
||||
{
|
||||
//класс, реализующий интерфейс хранилища изделий
|
||||
public class ManufactureStorage : IManufactureStorage
|
||||
{
|
||||
//поле для работы со списком изделий
|
||||
private readonly DataListSingleton _source;
|
||||
|
||||
//получение в конструкторе объекта DataListSingleton
|
||||
public ManufactureStorage()
|
||||
{
|
||||
_source = DataListSingleton.GetInstance();
|
||||
}
|
||||
|
||||
//получение полного списка изделий
|
||||
public List<ManufactureViewModel> GetFullList()
|
||||
{
|
||||
var result = new List<ManufactureViewModel>();
|
||||
|
||||
foreach(var manufacture in _source.Manufactures)
|
||||
foreach (var Manufacture in _source.Manufactures)
|
||||
{
|
||||
result.Add(manufacture.GetViewModel);
|
||||
result.Add(Manufacture.GetViewModel);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//получение отфильтрованного списка изделий
|
||||
public List<ManufactureViewModel> GetFilteredList(ManufactureSearchModel model)
|
||||
public List<ManufactureViewModel> GetFilteredList(ManufactureSearchModel
|
||||
model)
|
||||
{
|
||||
var result = new List<ManufactureViewModel>();
|
||||
|
||||
if (string.IsNullOrEmpty(model.ManufactureName))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
foreach(var manufacture in _source.Manufactures)
|
||||
foreach (var Manufacture in _source.Manufactures)
|
||||
{
|
||||
if(manufacture.ManufactureName.Contains(model.ManufactureName))
|
||||
if (Manufacture.ManufactureName.Contains(model.ManufactureName))
|
||||
{
|
||||
result.Add(manufacture.GetViewModel);
|
||||
result.Add(Manufacture.GetViewModel);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//получение элемента из списка изделий
|
||||
public ManufactureViewModel? GetElement(ManufactureSearchModel model)
|
||||
{
|
||||
if(string.IsNullOrEmpty(model.ManufactureName) && !model.Id.HasValue)
|
||||
if (string.IsNullOrEmpty(model.ManufactureName) && !model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach(var manufacture in _source.Manufactures)
|
||||
foreach (var Manufacture in _source.Manufactures)
|
||||
{
|
||||
if((!string.IsNullOrEmpty(model.ManufactureName) && manufacture.ManufactureName == model.ManufactureName) ||
|
||||
(model.Id.HasValue && manufacture.Id == model.Id))
|
||||
if ((!string.IsNullOrEmpty(model.ManufactureName) &&
|
||||
Manufacture.ManufactureName == model.ManufactureName) ||
|
||||
(model.Id.HasValue && Manufacture.Id == model.Id))
|
||||
{
|
||||
return manufacture.GetViewModel;
|
||||
return Manufacture.GetViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//при создании изделия определяем для него новый id: ищем max id и прибавлляем к нему 1
|
||||
public ManufactureViewModel? Insert(ManufactureBindingModel model)
|
||||
{
|
||||
model.Id = 1;
|
||||
|
||||
foreach(var manufacture in _source.Manufactures)
|
||||
foreach (var Manufacture in _source.Manufactures)
|
||||
{
|
||||
if(model.Id <= manufacture.Id)
|
||||
if (model.Id <= Manufacture.Id)
|
||||
{
|
||||
model.Id = manufacture.Id + 1;
|
||||
model.Id = Manufacture.Id + 1;
|
||||
}
|
||||
}
|
||||
|
||||
var newManufacture = Manufacture.Create(model);
|
||||
|
||||
if(newManufacture == null)
|
||||
if (newManufacture == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
_source.Manufactures.Add(newManufacture);
|
||||
|
||||
return newManufacture.GetViewModel;
|
||||
}
|
||||
|
||||
//обновление изделия
|
||||
public ManufactureViewModel? Update(ManufactureBindingModel model)
|
||||
{
|
||||
foreach (var manufacture in _source.Manufactures)
|
||||
foreach (var Manufacture in _source.Manufactures)
|
||||
{
|
||||
if (manufacture.Id == model.Id)
|
||||
if (Manufacture.Id == model.Id)
|
||||
{
|
||||
manufacture.Update(model);
|
||||
|
||||
return manufacture.GetViewModel;
|
||||
Manufacture.Update(model);
|
||||
return Manufacture.GetViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//удаление изделия
|
||||
public ManufactureViewModel? Delete(ManufactureBindingModel model)
|
||||
{
|
||||
for(int i = 0; i < _source.Manufactures.Count; ++i)
|
||||
for (int i = 0; i < _source.Manufactures.Count; ++i)
|
||||
{
|
||||
if (_source.Manufactures[i].Id == model.Id)
|
||||
{
|
||||
var element = _source.Manufactures[i];
|
||||
_source.Manufactures.RemoveAt(i);
|
||||
|
||||
return element.GetViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,94 +11,57 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement.Implements
|
||||
{
|
||||
//класс, реализующий интерфейс хранилища заказов
|
||||
public class OrderStorage : IOrderStorage
|
||||
{
|
||||
//поле для работы со списком заказов
|
||||
private readonly DataListSingleton _source;
|
||||
|
||||
//получение в конструкторе объекта DataListSingleton
|
||||
public OrderStorage()
|
||||
{
|
||||
_source = DataListSingleton.GetInstance();
|
||||
}
|
||||
|
||||
//получение полного списка заготовок
|
||||
public List<OrderViewModel> GetFullList()
|
||||
{
|
||||
var result = new List<OrderViewModel>();
|
||||
|
||||
foreach (var order in _source.Orders)
|
||||
{
|
||||
result.Add(GetViewModel(order));
|
||||
result.Add(AccessManufactureStorage(order.GetViewModel));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//получение отфильтрованного списка заказов
|
||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel
|
||||
model)
|
||||
{
|
||||
var result = new List<OrderViewModel>();
|
||||
|
||||
if (!model.Id.HasValue)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
foreach (var order in _source.Orders)
|
||||
{
|
||||
if (order.Id == model.Id)
|
||||
{
|
||||
result.Add(GetViewModel(order));
|
||||
result.Add(AccessManufactureStorage(order.GetViewModel));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//получение элемента из списка заказов
|
||||
public OrderViewModel? GetElement(OrderSearchModel model)
|
||||
{
|
||||
if (!model.Id.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (var order in _source.Orders)
|
||||
{
|
||||
if (model.Id.HasValue && order.Id == model.Id)
|
||||
{
|
||||
return GetViewModel(order);
|
||||
return order.GetViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//метод для записи названия изделия на форме с заказами
|
||||
private OrderViewModel GetViewModel(Order order)
|
||||
{
|
||||
var viewModel = order.GetViewModel;
|
||||
|
||||
foreach (var manufactures in _source.Manufactures)
|
||||
{
|
||||
if (manufactures.Id == order.ManufactureId)
|
||||
{
|
||||
viewModel.ManufactureName = manufactures.ManufactureName;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return viewModel;
|
||||
}
|
||||
|
||||
//при создании заказа определяем для него новый id: ищем max id и прибавляем к нему 1
|
||||
public OrderViewModel? Insert(OrderBindingModel model)
|
||||
{
|
||||
model.Id = 1;
|
||||
|
||||
foreach (var order in _source.Orders)
|
||||
{
|
||||
if (model.Id <= order.Id)
|
||||
@@ -106,20 +69,14 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
model.Id = order.Id + 1;
|
||||
}
|
||||
}
|
||||
|
||||
var newOrder = Order.Create(model);
|
||||
|
||||
if (newOrder == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
_source.Orders.Add(newOrder);
|
||||
|
||||
return GetViewModel(newOrder);
|
||||
return newOrder.GetViewModel;
|
||||
}
|
||||
|
||||
//обновление заказа
|
||||
public OrderViewModel? Update(OrderBindingModel model)
|
||||
{
|
||||
foreach (var order in _source.Orders)
|
||||
@@ -127,15 +84,11 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
if (order.Id == model.Id)
|
||||
{
|
||||
order.Update(model);
|
||||
|
||||
return GetViewModel(order);
|
||||
return order.GetViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
//удаление заказа
|
||||
public OrderViewModel? Delete(OrderBindingModel model)
|
||||
{
|
||||
for (int i = 0; i < _source.Orders.Count; ++i)
|
||||
@@ -144,12 +97,22 @@ namespace BlacksmithWorkshopListImplement.Implements
|
||||
{
|
||||
var element = _source.Orders[i];
|
||||
_source.Orders.RemoveAt(i);
|
||||
|
||||
return GetViewModel(element);
|
||||
return element.GetViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
public OrderViewModel AccessManufactureStorage(OrderViewModel model)
|
||||
{
|
||||
foreach (var Manufacture in _source.Manufactures)
|
||||
{
|
||||
if (Manufacture.Id == model.ManufactureId)
|
||||
{
|
||||
model.ManufactureName = Manufacture.ManufactureName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return model;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,20 @@
|
||||
using BlacksmithWorkshopContracts.BindingModels;
|
||||
using BlacksmithWorkshopContracts.ViewModels;
|
||||
using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement.Models
|
||||
{
|
||||
//реализация интерфейса модели заготовки
|
||||
public class Component : IComponentModel
|
||||
{
|
||||
//методы set делаем приватным, чтобы исключить неразрешённые манипуляции
|
||||
public int Id { get; private set; }
|
||||
|
||||
public string ComponentName { get; private set; } = string.Empty;
|
||||
|
||||
public double Cost { get; private set; }
|
||||
|
||||
//метод для создания объекта от класса-компонента на основе класса-BindingModel
|
||||
public double Cost { get; set; }
|
||||
public static Component? Create(ComponentBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Component()
|
||||
{
|
||||
Id = model.Id,
|
||||
@@ -34,20 +22,15 @@ namespace BlacksmithWorkshopListImplement.Models
|
||||
Cost = model.Cost
|
||||
};
|
||||
}
|
||||
|
||||
//метод изменения существующего объекта
|
||||
public void Update(ComponentBindingModel? model)
|
||||
{
|
||||
if(model == null)
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ComponentName = model.ComponentName;
|
||||
Cost = model.Cost;
|
||||
}
|
||||
|
||||
//метод для создания объекта класса ViewModel на основе данных объекта класса-компонента
|
||||
public ComponentViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
@@ -55,4 +38,4 @@ namespace BlacksmithWorkshopListImplement.Models
|
||||
Cost = Cost
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,26 +9,22 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement.Models
|
||||
{
|
||||
//класс реализующий интерфейс модели изделия
|
||||
public class Manufacture : IManufactureModel
|
||||
{
|
||||
//методы set делаем приватным, чтобы исключить неразрешённые манипуляции
|
||||
public int Id { get; private set; }
|
||||
|
||||
public string ManufactureName { get; private set; } = string.Empty;
|
||||
|
||||
public double Price { get; private set; }
|
||||
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents { get; private set; } = new Dictionary<int, (IComponentModel, int)>();
|
||||
|
||||
//метод для создания объекта от класса-компонента на основе класса-BindingModel
|
||||
public Dictionary<int, (IComponentModel, int)> ManufactureComponents
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
} = new Dictionary<int, (IComponentModel, int)>();
|
||||
public static Manufacture? Create(ManufactureBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Manufacture()
|
||||
{
|
||||
Id = model.Id,
|
||||
@@ -37,21 +33,16 @@ namespace BlacksmithWorkshopListImplement.Models
|
||||
ManufactureComponents = model.ManufactureComponents
|
||||
};
|
||||
}
|
||||
|
||||
//метод изменения существующего объекта
|
||||
public void Update(ManufactureBindingModel? model)
|
||||
{
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ManufactureName = model.ManufactureName;
|
||||
Price = model.Price;
|
||||
ManufactureComponents = model.ManufactureComponents;
|
||||
}
|
||||
|
||||
//метод для создания объекта класса ViewModel на основе данных объекта класса-компонента
|
||||
public ManufactureViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
|
||||
@@ -5,28 +5,19 @@ using BlacksmithWorkshopDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection.PortableExecutable;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BlacksmithWorkshopListImplement.Models
|
||||
{
|
||||
//класс, реализующий интерфейс модели заказа
|
||||
public class Order : IOrderModel
|
||||
{
|
||||
//методы set сделали приватными, чтобы исключить неразрешённые манипуляции
|
||||
public int Id { get; private set; }
|
||||
|
||||
public int ManufactureId { get; private set; }
|
||||
|
||||
public int Count { get; private set; }
|
||||
|
||||
public double Sum { get; private set; }
|
||||
|
||||
public OrderStatus Status { get; private set; }
|
||||
|
||||
public DateTime DateCreate { get; private set; } = DateTime.Now;
|
||||
|
||||
public DateTime DateCreate { get; private set; }
|
||||
public DateTime? DateImplement { get; private set; }
|
||||
|
||||
public static Order? Create(OrderBindingModel? model)
|
||||
@@ -35,7 +26,6 @@ namespace BlacksmithWorkshopListImplement.Models
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Order()
|
||||
{
|
||||
Id = model.Id,
|
||||
@@ -44,22 +34,18 @@ namespace BlacksmithWorkshopListImplement.Models
|
||||
Sum = model.Sum,
|
||||
Status = model.Status,
|
||||
DateCreate = model.DateCreate,
|
||||
DateImplement = model.DateImplement
|
||||
DateImplement = model.DateImplement,
|
||||
};
|
||||
}
|
||||
|
||||
//метод изменения существующего объекта
|
||||
public void Update(OrderBindingModel? model)
|
||||
{
|
||||
if(model == null)
|
||||
if (model == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Status = model.Status;
|
||||
DateImplement = model.DateImplement;
|
||||
}
|
||||
|
||||
//метод для создания объекта класса ViewModel на основе данных объекта класса-компонента
|
||||
public OrderViewModel GetViewModel => new()
|
||||
{
|
||||
Id = Id,
|
||||
@@ -68,7 +54,7 @@ namespace BlacksmithWorkshopListImplement.Models
|
||||
Sum = Sum,
|
||||
Status = Status,
|
||||
DateCreate = DateCreate,
|
||||
DateImplement = DateImplement
|
||||
DateImplement = DateImplement,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net6.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BlacksmithWorkshopBusinessLogic\BlacksmithWorkshopBusinessLogic.csproj" />
|
||||
<ProjectReference Include="..\BlacksmithWorkshopListImplement\BlacksmithWorkshopListImplement.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user