From 1004237bb71eebcf7540a23df884fa63f0dd1277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D0=BB=D0=B0?= Date: Sun, 2 Apr 2023 18:13:33 +0400 Subject: [PATCH] . --- .../FoodOrderFileImplement.csproj | 14 ++++ .../Models/Component.cs | 64 ++++++++++++++++ .../FoodOrderFileImplement/Models/Food.cs | 72 ++++++++++++++++++ .../FoodOrderFileImplement/Models/Order.cs | 76 +++++++++++++++++++ FoodOrders/FoodOrders.sln | 6 ++ 5 files changed, 232 insertions(+) create mode 100644 FoodOrders/FoodOrderFileImplement/FoodOrderFileImplement.csproj create mode 100644 FoodOrders/FoodOrderFileImplement/Models/Component.cs create mode 100644 FoodOrders/FoodOrderFileImplement/Models/Food.cs create mode 100644 FoodOrders/FoodOrderFileImplement/Models/Order.cs diff --git a/FoodOrders/FoodOrderFileImplement/FoodOrderFileImplement.csproj b/FoodOrders/FoodOrderFileImplement/FoodOrderFileImplement.csproj new file mode 100644 index 0000000..958f091 --- /dev/null +++ b/FoodOrders/FoodOrderFileImplement/FoodOrderFileImplement.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + + + + + + + + diff --git a/FoodOrders/FoodOrderFileImplement/Models/Component.cs b/FoodOrders/FoodOrderFileImplement/Models/Component.cs new file mode 100644 index 0000000..c22b05c --- /dev/null +++ b/FoodOrders/FoodOrderFileImplement/Models/Component.cs @@ -0,0 +1,64 @@ +using FoodOrdersContracts.BindingModels; +using FoodOrdersContracts.ViewModels; +using FoodOrdersDataModel.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace FoodOrderFileImplement.Models +{ + internal 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.ToInt32(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/FoodOrders/FoodOrderFileImplement/Models/Food.cs b/FoodOrders/FoodOrderFileImplement/Models/Food.cs new file mode 100644 index 0000000..b50aae6 --- /dev/null +++ b/FoodOrders/FoodOrderFileImplement/Models/Food.cs @@ -0,0 +1,72 @@ +using FoodOrdersContracts.BindingModels; +using FoodOrdersContracts.ViewModels; +using FoodOrdersDataModel.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace FoodOrderFileImplement.Models +{ + public class Food : IFoodModel + { + public int Id { get; private set; } + public string FoodName { get; private set; } = string.Empty; + public double Price { get; private set; } + public Dictionary Components { get; private set; } = new(); + private Dictionary _foodComponents = null; + public Dictionary FoodComponents + { + get; + private set; + } = new Dictionary(); + public static Food? Create(FoodBindingModel? model) + { + if (model == null) + { + return null; + } + return new Food() + { + Id = model.Id, + FoodName = model.FoodName, + Price = model.Price, + Components = model.FoodComponents.ToDictionary(x=>x.Key, x=>x.Value.Item2) + }; + } + public static Food? Create(XElement element) + { + if(element == null) + { + return null; + } + return new Food() + { + Id = Convert.ToInt32(element.Attribute("Id")!.Value), + FoodName = element.Element("FoodName")!.Value, + Price = Convert.ToDouble(element.Element("Price")!.Value), + Components = element.Element("FoodComponents")!.Elements("FoodComponent").ToDictionary(x => Convert.ToInt32(x.Element("Key")?.Value), x => Convert.ToInt32(x.Element("Value")?.Value)) + }; + } + public void Update(FoodBindingModel? model) + { + if (model == null) + { + return; + } + FoodName = model.FoodName; + Price = model.Price; + FoodComponents = model.FoodComponents; + } + public FoodViewModel GetViewModel => new() + { + Id = Id, + FoodName = FoodName, + Price = Price, + FoodComponents = FoodComponents + }; + } +} diff --git a/FoodOrders/FoodOrderFileImplement/Models/Order.cs b/FoodOrders/FoodOrderFileImplement/Models/Order.cs new file mode 100644 index 0000000..b38cd85 --- /dev/null +++ b/FoodOrders/FoodOrderFileImplement/Models/Order.cs @@ -0,0 +1,76 @@ +using FoodOrdersContracts.BindingModels; +using FoodOrdersContracts.ViewModels; +using FoodOrdersDataModel.Enums; +using FoodOrdersDataModel.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http.Headers; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace FoodOrderFileImplement.Models +{ + internal class Order : IOrderModel + { + public int Id { get; private set; } + public int FoodId { get; private set; } + public string FoodName { get; private set; } + public int Count { get; private set; } + public double Sum { get; private set; } + public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; + public DateTime DateCreate { get; private set; } = DateTime.Now; + public DateTime? DateImplement { get; private set; } + + public static Order? Create(OrderBindingModel? model) + { + if (model == null) + { + return null; + } + return new Order() + { + Id = model.Id, + FoodId = model.FoodId, + FoodName = model.FoodName, + Count = model.Count, + Sum = model.Sum, + Status = model.Status, + DateCreate = model.DateCreate, + DateImplement = model.DateImplement + }; + } + public static Order? Create(XElement element) + { + return new Order(); + } + public void Update(OrderBindingModel? model) + { + if (model == null) + { + return; + } + FoodId = model.FoodId; + FoodName = model.FoodName; + Count = model.Count; + Sum = model.Sum; + Status = model.Status; + DateCreate = model.DateCreate; + DateImplement = model.DateImplement; + } + + public OrderViewModel GetViewModel => new() + { + Id = Id, + FoodId = FoodId, + FoodName = FoodName, + Count = Count, + Sum = Sum, + Status = Status, + DateCreate = DateCreate, + DateImplement = DateImplement + }; + public XElement GetXElement => new("Order"); + } +} diff --git a/FoodOrders/FoodOrders.sln b/FoodOrders/FoodOrders.sln index df5dd1c..e30e91e 100644 --- a/FoodOrders/FoodOrders.sln +++ b/FoodOrders/FoodOrders.sln @@ -13,6 +13,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FoodOrdersListImplement", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FoodOrderBusinessLogic", "FoodOrdersBusinessLogic\FoodOrderBusinessLogic.csproj", "{B3E18E56-A55D-47DC-8BFD-51689EE95375}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FoodOrderFileImplement", "FoodOrderFileImplement\FoodOrderFileImplement.csproj", "{0F8C8473-B376-4D36-88DA-478AFBE81BFB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {B3E18E56-A55D-47DC-8BFD-51689EE95375}.Debug|Any CPU.Build.0 = Debug|Any CPU {B3E18E56-A55D-47DC-8BFD-51689EE95375}.Release|Any CPU.ActiveCfg = Release|Any CPU {B3E18E56-A55D-47DC-8BFD-51689EE95375}.Release|Any CPU.Build.0 = Release|Any CPU + {0F8C8473-B376-4D36-88DA-478AFBE81BFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0F8C8473-B376-4D36-88DA-478AFBE81BFB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0F8C8473-B376-4D36-88DA-478AFBE81BFB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0F8C8473-B376-4D36-88DA-478AFBE81BFB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE