using DinerContracts.BindingModels; using DinerContracts.ViewModels; using DinerDataModels.Enums; using DinerDataModels.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; using System.Xml.Schema; namespace DinerFileImplement.Models { internal class Order : IOrderModel { public int SnackID { get; private set; } public int ClientID { get; private set; } public int? ImplementerID { get; set; } public int Count { get; set; } public double Sum { get; private set; } public OrderStatus Status { get; set; } public DateTime DateCreate { get; private set; } public DateTime? DateImplement { get; set; } public int ID { get; private set; } public string? ProductName { get; private set; } public string ClientFIO { get; private set; } public string ImplementerFIO { get; private set; } public static Order? Create(OrderBindingModel? model) { if (model == null) return null; return new Order() { ID = model.ID, SnackID = model.SnackID, Count = model.Count, Sum = model.Sum, Status = model.Status, DateCreate = model.DateCreate, DateImplement = model.DateImplement, ClientID = model.ClientID, ImplementerID = model.ImplementerID }; } public static Order? Create(XElement element) { if (element == null) return null; return new Order() { ID = Convert.ToInt32(element.Attribute("ID")!.Value), SnackID = Convert.ToInt32(element.Element("SnackID")!.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), DateCreate = Convert.ToDateTime(element.Element("DateCreate")!.Value), DateImplement = string.IsNullOrEmpty(element.Element("DateImplement")!.Value) ? null : Convert.ToDateTime(element.Element("DateImplement")!.Value), ClientID = Convert.ToInt32(element.Element("ClientID")!.Value), ImplementerID = Convert.ToInt32(element.Element("ImplementerID")!.Value) }; } public void Update(OrderBindingModel? model) { if (model == null) return; Status = model.Status; DateImplement = model?.DateImplement; } public OrderViewModel GetViewModel => new() { ID = ID, SnackID = SnackID, Count = Count, Sum = Sum, Status = Status, DateCreate = DateCreate, DateImplement = DateImplement, ClientID = ClientID, ImplementerID = ImplementerID, ClientFIO = ClientFIO, ImplementerFIO = ImplementerFIO }; public XElement GetXElement => new("Order", new XAttribute("ID", ID), new XElement("SnackID", SnackID), new XElement("Count", Count.ToString()), new XElement("Sum", Sum.ToString()), new XElement("Status", Status.ToString()), new XElement("DateCreate", DateCreate.ToString()), new XElement("DateImplement", DateImplement.ToString()), new XElement("ClientID", ClientID.ToString()), new XElement("ImplementerID", ImplementerID.ToString()), new XElement("ClientFIO", ClientFIO), new XElement("ImplementerFIO", ImplementerFIO)); } }