diff --git a/Confectionery/ConfectioneryFileImplement/ConfectioneryFileImplement.csproj b/Confectionery/ConfectioneryFileImplement/ConfectioneryFileImplement.csproj
deleted file mode 100644
index f0eca47..0000000
--- a/Confectionery/ConfectioneryFileImplement/ConfectioneryFileImplement.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- net8.0
- enable
- enable
-
-
-
-
-
-
-
-
diff --git a/Confectionery/ConfectioneryFileImplement/DataFileSingleton.cs b/Confectionery/ConfectioneryFileImplement/DataFileSingleton.cs
deleted file mode 100644
index 38b16f6..0000000
--- a/Confectionery/ConfectioneryFileImplement/DataFileSingleton.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using ConfectioneryFileImplement.Models;
-using System.Xml.Linq;
-namespace ConfectioneryFileImplement
-{
- internal class DataFileSingleton
- {
- private static DataFileSingleton? instance;
- private readonly string ComponentFileName = "Component.xml";
- private readonly string OrderFileName = "Order.xml";
- private readonly string PastryFileName = "Pastry.xml";
- public List Components { get; private set; }
- public List Orders { get; private set; }
- public List Pastries { 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 SavePastries() => SaveData(Pastries, PastryFileName,
- "Pastries", x => x.GetXElement);
- public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders",
- x => x.GetXElement);
- private DataFileSingleton()
- {
- Components = LoadData(ComponentFileName, "Component",
- x => Component.Create(x)!)!;
- Pastries = LoadData(PastryFileName, "Pastry",
- x => Pastry.Create(x)!)!;
- Orders = LoadData(OrderFileName, "Order",
- x => Order.Create(x)!)!;
- }
- private static List? LoadData(string filename,
- string xmlNodeName, Func selectFunction)
- {
- if (File.Exists(filename))
- {
- return XDocument.Load(filename)?.Root?.Elements(xmlNodeName)?
- .Select(selectFunction)?.ToList();
- }
- return new List();
- }
- private static void SaveData(List data, string filename,
- string xmlNodeName, Func selectFunction)
- {
- if (data != null)
- {
- new XDocument(new XElement(xmlNodeName,
- data.Select(selectFunction).ToArray())).Save(filename);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Confectionery/ConfectioneryFileImplement/Implements/ComponentStorage.cs b/Confectionery/ConfectioneryFileImplement/Implements/ComponentStorage.cs
deleted file mode 100644
index a0b0639..0000000
--- a/Confectionery/ConfectioneryFileImplement/Implements/ComponentStorage.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using ConfectioneryContracts.BindingModels;
-using ConfectioneryContracts.SearchModels;
-using ConfectioneryContracts.StoragesContracts;
-using ConfectioneryContracts.ViewModels;
-using ConfectioneryFileImplement.Models;
-namespace ConfectioneryFileImplement.Implements
-{
- public class ComponentStorage : IComponentStorage
- {
- private readonly DataFileSingleton source;
- public ComponentStorage()
- {
- source = DataFileSingleton.GetInstance();
- }
- public List GetFullList()
- {
- return source.Components
- .Select(x => x.GetViewModel)
- .ToList();
- }
- public List 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;
- }
- }
-}
diff --git a/Confectionery/ConfectioneryFileImplement/Implements/OrderStorage.cs b/Confectionery/ConfectioneryFileImplement/Implements/OrderStorage.cs
deleted file mode 100644
index 801bbdd..0000000
--- a/Confectionery/ConfectioneryFileImplement/Implements/OrderStorage.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using ConfectioneryContracts.BindingModels;
-using ConfectioneryContracts.SearchModels;
-using ConfectioneryContracts.StoragesContracts;
-using ConfectioneryContracts.ViewModels;
-using ConfectioneryFileImplement.Models;
-
-namespace ConfectioneryFileImplement.Implements
-{
- public class OrderStorage : IOrderStorage
- {
- private readonly DataFileSingleton source;
- public OrderStorage()
- {
- source = DataFileSingleton.GetInstance();
- }
-
- public List GetFullList()
- {
- return source.Orders
- .Select(x => AccessPastryStorage(x.GetViewModel))
- .ToList();
- }
-
- public List GetFilteredList(OrderSearchModel model)
- {
- if (!model.Id.HasValue)
- {
- return new();
- }
- return source.Orders
- .Where(x => x.Id == model.Id)
- .Select(x => AccessPastryStorage(x.GetViewModel))
- .ToList();
- }
-
- public OrderViewModel? GetElement(OrderSearchModel model)
- {
- if (!model.Id.HasValue)
- {
- return null;
- }
- return AccessPastryStorage(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 AccessPastryStorage(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 AccessPastryStorage(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 AccessPastryStorage(element.GetViewModel);
- }
- return null;
- }
-
- public OrderViewModel AccessPastryStorage(OrderViewModel model)
- {
- if (model == null)
- return null;
- foreach (var Pastry in source.Pastries)
- {
- if (Pastry.Id == model.PastryId)
- {
- model.PastryName = Pastry.PastryName;
- break;
- }
- }
- return model;
- }
- }
-}
\ No newline at end of file
diff --git a/Confectionery/ConfectioneryFileImplement/Implements/PastryStorage.cs b/Confectionery/ConfectioneryFileImplement/Implements/PastryStorage.cs
deleted file mode 100644
index fff167d..0000000
--- a/Confectionery/ConfectioneryFileImplement/Implements/PastryStorage.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using ConfectioneryContracts.BindingModels;
-using ConfectioneryContracts.SearchModels;
-using ConfectioneryContracts.StoragesContracts;
-using ConfectioneryContracts.ViewModels;
-using ConfectioneryFileImplement.Models;
-
-namespace ConfectioneryFileImplement.Implements
-{
- public class PastryStorage : IPastryStorage
- {
- private readonly DataFileSingleton source;
- public PastryStorage()
- {
- source = DataFileSingleton.GetInstance();
- }
- public List GetFullList()
- {
- return source.Pastries
- .Select(x => x.GetViewModel)
- .ToList();
- }
-
- public List GetFilteredList(PastrySearchModel model)
- {
- if (string.IsNullOrEmpty(model.PastryName))
- {
- return new();
- }
- return source.Pastries
- .Where(x => x.PastryName.Contains(model.PastryName))
- .Select(x => x.GetViewModel)
- .ToList();
- }
-
- public PastryViewModel? GetElement(PastrySearchModel model)
- {
- if (string.IsNullOrEmpty(model.PastryName) && !model.Id.HasValue)
- {
- return null;
- }
- return source.Pastries.FirstOrDefault(x => (!string.IsNullOrEmpty(
- model.PastryName) && x.PastryName == model.PastryName) ||
- (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
- }
-
- public PastryViewModel? Insert(PastryBindingModel model)
- {
- model.Id = source.Pastries.Count > 0 ?
- source.Pastries.Max(x => x.Id) + 1 : 1;
- var newPastry = Pastry.Create(model);
- if (newPastry == null)
- {
- return null;
- }
- source.Pastries.Add(newPastry);
- source.SavePastries();
- return newPastry.GetViewModel;
- }
-
- public PastryViewModel? Update(PastryBindingModel model)
- {
- var Pastry = source.Pastries.FirstOrDefault(x => x.Id == model.Id);
- if (Pastry == null)
- {
- return null;
- }
- Pastry.Update(model);
- source.SavePastries();
- return Pastry.GetViewModel;
- }
- public PastryViewModel? Delete(PastryBindingModel model)
- {
- var Pastry = source.Pastries.FirstOrDefault(x => x.Id == model.Id);
- if (Pastry != null)
- {
- source.Pastries.Remove(Pastry);
- source.SavePastries();
- return Pastry.GetViewModel;
- }
- return null;
- }
- }
-}
\ No newline at end of file
diff --git a/Confectionery/ConfectioneryFileImplement/Models/Component.cs b/Confectionery/ConfectioneryFileImplement/Models/Component.cs
deleted file mode 100644
index bd01ea4..0000000
--- a/Confectionery/ConfectioneryFileImplement/Models/Component.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using ConfectioneryContracts.BindingModels;
-using ConfectioneryContracts.ViewModels;
-using ConfectioneryDataModels.Models;
-using System.Xml.Linq;
-namespace ConfectioneryFileImplement.Models
-{
- public class Component : IComponentModel
- {
- public int Id { get; private set; }
- public string ComponentName { get; private 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()));
- }
-}
diff --git a/Confectionery/ConfectioneryFileImplement/Models/Order.cs b/Confectionery/ConfectioneryFileImplement/Models/Order.cs
deleted file mode 100644
index 1dd7492..0000000
--- a/Confectionery/ConfectioneryFileImplement/Models/Order.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using ConfectioneryContracts.BindingModels;
-using ConfectioneryContracts.ViewModels;
-using ConfectioneryDataModels.Enums;
-using ConfectioneryDataModels.Models;
-using System.Xml.Linq;
-
-namespace ConfectioneryFileImplement.Models
-{
- public class Order : IOrderModel
- {
- public int Id { get; private set; }
- public int PastryId { 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,
- PastryId = model.PastryId,
- 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),
- PastryId = Convert.ToInt32(element.Element("PastryId")!.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,
- PastryId = PastryId,
- Count = Count,
- Sum = Sum,
- Status = Status,
- DateCreate = DateCreate,
- DateImplement = DateImplement,
- };
- public XElement GetXElement => new("Order",
- new XAttribute("Id", Id),
- new XElement("PastryId", PastryId),
- new XElement("Sum", Sum.ToString()),
- new XElement("Count", Count),
- new XElement("Status", Status.ToString()),
- new XElement("DateCreate", DateCreate.ToString()),
- new XElement("DateImplement", DateImplement.ToString())
- );
- }
-}
\ No newline at end of file
diff --git a/Confectionery/ConfectioneryFileImplement/Models/Pastry.cs b/Confectionery/ConfectioneryFileImplement/Models/Pastry.cs
deleted file mode 100644
index 7740b0a..0000000
--- a/Confectionery/ConfectioneryFileImplement/Models/Pastry.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using ConfectioneryContracts.BindingModels;
-using ConfectioneryContracts.ViewModels;
-using ConfectioneryDataModels.Models;
-using System.Xml.Linq;
-namespace ConfectioneryFileImplement.Models
-{
- public class Pastry : IPastryModel
- {
- public int Id { get; private set; }
- public string PastryName { get; private set; } = string.Empty;
- public double Price { get; private set; }
- public Dictionary Components { get; private set; } = new();
- private Dictionary?
- _pastryComponents = null;
- public Dictionary PastryComponents
- {
- get
- {
- if (_pastryComponents == null)
- {
- var source = DataFileSingleton.GetInstance();
- _pastryComponents = Components.ToDictionary(
- x => x.Key, y => ((source.Components.FirstOrDefault(
- z => z.Id == y.Key) as
- IComponentModel)!, y.Value));
- }
- return _pastryComponents;
- }
- }
- public static Pastry? Create(PastryBindingModel model)
- {
- if (model == null)
- {
- return null;
- }
- return new Pastry()
- {
- Id = model.Id,
- PastryName = model.PastryName,
- Price = model.Price,
- Components = model.PastryComponents.ToDictionary(
- x => x.Key, x => x.Value.Item2)
- };
- }
- public static Pastry? Create(XElement element)
- {
- if (element == null)
- {
- return null;
- }
- return new Pastry()
- {
- Id = Convert.ToInt32(element.Attribute("Id")!.Value),
- PastryName = element.Element("PastryName")!.Value,
- Price = Convert.ToDouble(element.Element("Price")!.Value),
- Components = element.Element(
- "PastryComponents")!.Elements("PastryComponent")
- .ToDictionary(x => Convert.ToInt32(x.Element("Key")
- ?.Value), x => Convert.ToInt32(x.Element("Value")?.Value))
- };
- }
- public void Update(PastryBindingModel model)
- {
- if (model == null)
- {
- return;
- }
- PastryName = model.PastryName;
- Price = model.Price;
- Components = model.PastryComponents.ToDictionary(
- x => x.Key, x => x.Value.Item2);
- _pastryComponents = null;
- }
- public PastryViewModel GetViewModel => new()
- {
- Id = Id,
- PastryName = PastryName,
- Price = Price,
- PastryComponents = PastryComponents
- };
- public XElement GetXElement => new("Pastry",
- new XAttribute("Id", Id),
- new XElement("PastryName", PastryName),
- new XElement("Price", Price.ToString()),
- new XElement("PastryComponents", Components.Select(x =>
- new XElement("PastryComponent",
- new XElement("Key", x.Key),
- new XElement("Value", x.Value)))
- .ToArray()));
- }
-}