diff --git a/LawFirm/LawFirm.sln b/LawFirm/LawFirm.sln
index 93a0ebb..362180a 100644
--- a/LawFirm/LawFirm.sln
+++ b/LawFirm/LawFirm.sln
@@ -11,7 +11,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LawFirmContracts", "LawFirm
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LawFirmBusinessLogic", "LawFirmBusinessLogic\LawFirmBusinessLogic.csproj", "{1A498224-4BAC-48FF-B6BC-E829BF86C5E4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmListImplements", "LawFirmListImplements\LawFirmListImplements.csproj", "{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LawFirmListImplements", "LawFirmListImplements\LawFirmListImplements.csproj", "{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmFileImplement", "LawFirmFileImplement\LawFirmFileImplement.csproj", "{E75AF81D-A466-470A-A3F7-EC0E6F33C866}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -39,6 +41,10 @@ Global
{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{43B2BE7C-83F0-4A91-B2F1-F2F2A2BE5CAE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E75AF81D-A466-470A-A3F7-EC0E6F33C866}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/LawFirm/LawFirmFileImplement/LawFirmFileImplement.csproj b/LawFirm/LawFirmFileImplement/LawFirmFileImplement.csproj
new file mode 100644
index 0000000..7c491f4
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/LawFirmFileImplement.csproj
@@ -0,0 +1,14 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
diff --git a/LawFirm/LawFirmFileImplement/Models/Blank.cs b/LawFirm/LawFirmFileImplement/Models/Blank.cs
new file mode 100644
index 0000000..2e7bbfd
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/Models/Blank.cs
@@ -0,0 +1,74 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.ViewModels;
+using LawFirmDataModels.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 LawFirmFileImplement.Models
+{
+ public class Blank : IBlankModel
+ {
+ public string BlankName { get; private set; } = String.Empty;
+
+ public double Cost { get; set; }
+
+ public int Id { get; private set; }
+
+ public static Blank? Create(BlankBindingModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new Blank()
+ {
+ Id = model.Id,
+ BlankName = model.BlankName,
+ Cost = model.Cost
+ };
+ }
+
+ public static Blank? Create(XElement element)
+ {
+ if (element == null)
+ {
+ return null;
+ }
+ return new Blank()
+ {
+ Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+ BlankName = element.Element("BlankName")!.Value,
+ Cost = Convert.ToDouble(element.Element("Cost")!.Value)
+ };
+ }
+
+ public void Update(BlankBindingModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ BlankName = model.BlankName;
+ Cost = model.Cost;
+ }
+ public BlankViewModel GetViewModel => new()
+ {
+ Id = Id,
+ BlankName = BlankName,
+ Cost = Cost
+ };
+
+ public XElement GetXElement => new(
+ "Blank",
+ new XAttribute("Id", Id),
+ new XElement("BlankName", BlankName),
+ new XElement("Cost", Cost.ToString())
+ );
+
+ }
+}
diff --git a/LawFirm/LawFirmFileImplement/Models/Document.cs b/LawFirm/LawFirmFileImplement/Models/Document.cs
new file mode 100644
index 0000000..6484a59
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/Models/Document.cs
@@ -0,0 +1,105 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.ViewModels;
+using LawFirmDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace LawFirmFileImplement.Models
+{
+ public class Document : IDocumentModel
+ {
+ public string DocumentName { get; private set; } = string.Empty;
+
+ public double Price { get; private set; }
+
+ public int Id { get; private set; }
+
+ public Dictionary Blanks { get; private set; } = new();
+
+ private Dictionary? _documentBlanks = null;
+ public Dictionary DocumentBlanks
+ {
+ get
+ {
+ if (_documentBlanks == null)
+ {
+ var source = DataFileSingleton.GetInstance();
+ _documentBlanks = Blanks.ToDictionary(
+ x => x.Key,
+ y => ((source.Blanks.FirstOrDefault(z => z.Id == y.Key) as IBlankModel)!, y.Value)
+ );
+ }
+ return _documentBlanks;
+ }
+ }
+
+
+ public static Document? Create(DocumentBindingModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new Document()
+ {
+ Id = model.Id,
+ DocumentName = model.DocumentName,
+ Price = model.Price,
+ Blanks = model.DocumentBlanks.ToDictionary(x => x.Key, x => x.Value.Item2)
+ };
+ }
+
+ public static Document? Create(XElement element)
+ {
+ if (element == null)
+ {
+ return null;
+ }
+ return new Document()
+ {
+ Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+ DocumentName = element.Element("DocumentName")!.Value,
+ Price = Convert.ToDouble(element.Element("Price")!.Value),
+ Blanks = element.Element("DocumentBlanks")!.Elements("DocumentBlank").ToDictionary(
+ x => Convert.ToInt32(x.Element("Key")?.Value),
+ x => Convert.ToInt32(x.Element("Value")?.Value)
+ )
+ };
+ }
+
+
+ public void Update(DocumentBindingModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ DocumentName = model.DocumentName;
+ Price = model.Price;
+ Blanks = model.DocumentBlanks.ToDictionary(x => x.Key, x => x.Value.Item2);
+ _documentBlanks = null;
+ }
+ public DocumentViewModel GetViewModel => new()
+ {
+ Id = Id,
+ DocumentName = DocumentName,
+ Price = Price,
+ DocumentBlanks = DocumentBlanks
+ };
+
+ public XElement GetXElement => new(
+ "Document",
+ new XAttribute("Id", Id),
+ new XElement("DocumentName", DocumentName),
+ new XElement("Price", Price.ToString()),
+ new XElement("DocumentBlanks", Blanks.Select(x =>
+ new XElement("DocumentBlank",
+ new XElement("Key", x.Key),
+ new XElement("Value", x.Value)))
+ .ToArray()));
+ }
+}
diff --git a/LawFirm/LawFirmFileImplement/Models/Order.cs b/LawFirm/LawFirmFileImplement/Models/Order.cs
new file mode 100644
index 0000000..28a6a3a
--- /dev/null
+++ b/LawFirm/LawFirmFileImplement/Models/Order.cs
@@ -0,0 +1,110 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.ViewModels;
+using LawFirmDataModels.Enums;
+using LawFirmDataModels.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace LawFirmFileImplement.Models
+{
+ public class Order : IOrderModel
+ {
+ public int DocumentId { get; private set; }
+
+ public string DocumentName { get; private set; } = string.Empty;
+
+ 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 int Id { get; private set; }
+
+ public static Order? Create(OrderBindingModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new Order
+ {
+ DocumentId = model.DocumentId,
+ DocumentName = model.DocumentName,
+ Count = model.Count,
+ Sum = model.Sum,
+ Status = model.Status,
+ DateCreate = model.DateCreate,
+ DateImplement = model.DateImplement,
+ Id = model.Id,
+ };
+ }
+
+ public static Order? Create(XElement element)
+ {
+ if (element == null)
+ {
+ return null;
+ }
+ return new Order()
+ {
+ Id = Convert.ToInt32(element.Attribute("Id")!.Value),
+ DocumentName = element.Element("DocumentName")!.Value,
+ DocumentId = Convert.ToInt32(element.Element("DocumentId")!.Value),
+ Sum = Convert.ToDouble(element.Element("Sum")!.Value),
+ Count = Convert.ToInt32(element.Element("Count")!.Value),
+ Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value),
+ DateCreate = Convert.ToDateTime(element.Element("DateCreate")!.Value),
+ DateImplement = Convert.ToDateTime(element.Element("DateCreate")!.Value)
+ };
+ }
+
+ public void Update(OrderBindingModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ DocumentId = model.DocumentId;
+ DocumentName = model.DocumentName;
+ Count = model.Count;
+ Sum = model.Sum;
+ Status = model.Status;
+ DateCreate = model.DateCreate;
+ DateImplement = model.DateImplement;
+ Id = model.Id;
+ }
+
+ public OrderViewModel GetViewModel => new()
+ {
+ DocumentId = DocumentId,
+ DocumentName = DocumentName,
+ Count = Count,
+ Sum = Sum,
+ DateCreate = DateCreate,
+ DateImplement = DateImplement,
+ Id = Id,
+ Status = Status,
+ };
+
+ public XElement GetXElement => new(
+ "Order",
+ new XAttribute("Id", Id),
+ new XElement("DocumentName", DocumentName),
+ new XElement("DocumentId", DocumentId.ToString()),
+ 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())
+ );
+ }
+}