From 63874944b22cd322dc3bd2c2bbf32c00b7738114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sat, 18 May 2024 20:38:44 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BD=D1=83=20=D0=B2=D1=80=D0=BE=D0=B4=D0=B5?= =?UTF-8?q?=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB,=20=D1=89=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=82=D1=8C=20=D0=B1=D1=83=D0=B4?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImplementationExtension.cs | 27 ++++++++++++ .../Implements/BackUpInfo.cs | 44 +++++++++++++++++++ .../Models/Client.cs | 6 +++ .../Models/Component.cs | 5 +++ .../Models/Implementer.cs | 9 +++- .../JewerlyStoreFileImplement/Models/Jewel.cs | 5 +++ .../Models/MessageInfo.cs | 10 ++++- .../JewerlyStoreFileImplement/Models/Order.cs | 13 +++++- 8 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 JewelryStore/JewerlyStoreFileImplement/ImplementationExtension.cs create mode 100644 JewelryStore/JewerlyStoreFileImplement/Implements/BackUpInfo.cs diff --git a/JewelryStore/JewerlyStoreFileImplement/ImplementationExtension.cs b/JewelryStore/JewerlyStoreFileImplement/ImplementationExtension.cs new file mode 100644 index 0000000..3337452 --- /dev/null +++ b/JewelryStore/JewerlyStoreFileImplement/ImplementationExtension.cs @@ -0,0 +1,27 @@ +using JewelryStoreContracts.DI; +using JewelryStoreContracts.StoragesContracts; +using JewerlyStoreFileImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewerlyStoreFileImplement +{ + public class ImplementationExtension : IImplementationExtension + { + public int Priority => 1; + + public void RegisterServices() + { + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + } +} diff --git a/JewelryStore/JewerlyStoreFileImplement/Implements/BackUpInfo.cs b/JewelryStore/JewerlyStoreFileImplement/Implements/BackUpInfo.cs new file mode 100644 index 0000000..ef98777 --- /dev/null +++ b/JewelryStore/JewerlyStoreFileImplement/Implements/BackUpInfo.cs @@ -0,0 +1,44 @@ +using JewelryStoreContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace JewerlyStoreFileImplement.Implements +{ + public class BackUpInfo : IBackUpInfo + { + private readonly DataFileSingleton source; + private readonly PropertyInfo[] sourceProperties; + + public BackUpInfo() + { + source = DataFileSingleton.GetInstance(); + sourceProperties = source.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public); + } + + public List? GetList() where T : class, new() + { + var requredType = typeof(T); + return (List?)sourceProperties.FirstOrDefault(x => x.PropertyType.IsGenericType && x.PropertyType.GetGenericArguments()[0] == requredType) + ?.GetValue(source); + + } + + public Type? GetTypeByModelInterface(string modelInterfaceName) + { + var assembly = typeof(BackUpInfo).Assembly; + var types = assembly.GetTypes(); + foreach (var type in types) + { + if (type.IsClass && type.GetInterface(modelInterfaceName) != null) + { + return type; + } + } + return null; + } + } +} diff --git a/JewelryStore/JewerlyStoreFileImplement/Models/Client.cs b/JewelryStore/JewerlyStoreFileImplement/Models/Client.cs index f64ee78..d1e9543 100644 --- a/JewelryStore/JewerlyStoreFileImplement/Models/Client.cs +++ b/JewelryStore/JewerlyStoreFileImplement/Models/Client.cs @@ -4,17 +4,23 @@ using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JewerlyStoreFileImplement.Models { + [DataContract] public class Client : IClientModel { + [DataMember] public int Id { get; set; } + [DataMember] public string ClientFIO { get; set; } = string.Empty; + [DataMember] public string Email { get; set; } = string.Empty; + [DataMember] public string Password { get; set; } = string.Empty; public static Client? Create(ClientBindingModel? model) { diff --git a/JewelryStore/JewerlyStoreFileImplement/Models/Component.cs b/JewelryStore/JewerlyStoreFileImplement/Models/Component.cs index 88426cf..91af7e9 100644 --- a/JewelryStore/JewerlyStoreFileImplement/Models/Component.cs +++ b/JewelryStore/JewerlyStoreFileImplement/Models/Component.cs @@ -4,16 +4,21 @@ using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JewerlyStoreFileImplement.Models { + [DataContract] public class Component : IComponentModel { + [DataMember] public int Id { get; private set; } + [DataMember] public string ComponentName { get; private set; } = string.Empty; + [DataMember] public double Cost { get; set; } public static Component? Create(ComponentBindingModel model) diff --git a/JewelryStore/JewerlyStoreFileImplement/Models/Implementer.cs b/JewelryStore/JewerlyStoreFileImplement/Models/Implementer.cs index def3efc..ba33945 100644 --- a/JewelryStore/JewerlyStoreFileImplement/Models/Implementer.cs +++ b/JewelryStore/JewerlyStoreFileImplement/Models/Implementer.cs @@ -4,21 +4,28 @@ using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JewerlyStoreFileImplement.Models { - public class Implementer : IImplementerModel + [DataContract] + public class Implementer : IImplementerModel { + [DataMember] public string ImplementerFIO { get; private set; } = string.Empty; + [DataMember] public string Password { get; private set; } = string.Empty; + [DataMember] public int WorkExperience { get; private set; } + [DataMember] public int Qualification { get; private set; } + [DataMember] public int Id { get; private set; } diff --git a/JewelryStore/JewerlyStoreFileImplement/Models/Jewel.cs b/JewelryStore/JewerlyStoreFileImplement/Models/Jewel.cs index 23c9f2c..e270417 100644 --- a/JewelryStore/JewerlyStoreFileImplement/Models/Jewel.cs +++ b/JewelryStore/JewerlyStoreFileImplement/Models/Jewel.cs @@ -4,16 +4,21 @@ using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JewerlyStoreFileImplement.Models { + [DataContract] public class Jewel : IJewelModel { + [DataMember] public int Id { get; private set; } + [DataMember] public string JewelName { get; private set; } = string.Empty; + [DataMember] public double Price { get; private set; } public Dictionary Components { get; private set; } = new(); private Dictionary? _jewelComponents = null; diff --git a/JewelryStore/JewerlyStoreFileImplement/Models/MessageInfo.cs b/JewelryStore/JewerlyStoreFileImplement/Models/MessageInfo.cs index 4747b09..3217918 100644 --- a/JewelryStore/JewerlyStoreFileImplement/Models/MessageInfo.cs +++ b/JewelryStore/JewerlyStoreFileImplement/Models/MessageInfo.cs @@ -4,23 +4,31 @@ using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JewerlyStoreFileImplement.Models { - public class MessageInfo : IMessageInfoModel + [DataContract] + public class MessageInfo : IMessageInfoModel { + [DataMember] public string MessageId { get; set; } = string.Empty; + [DataMember] public int? ClientId { get; set; } + [DataMember] public string SenderName { get; set; } = string.Empty; + [DataMember] public DateTime DateDelivery { get; set; } + [DataMember] public string Subject { get; set; } = string.Empty; + [DataMember] public string Body { get; set; } = string.Empty; diff --git a/JewelryStore/JewerlyStoreFileImplement/Models/Order.cs b/JewelryStore/JewerlyStoreFileImplement/Models/Order.cs index af6dfac..65370a1 100644 --- a/JewelryStore/JewerlyStoreFileImplement/Models/Order.cs +++ b/JewelryStore/JewerlyStoreFileImplement/Models/Order.cs @@ -5,22 +5,33 @@ using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace JewerlyStoreFileImplement.Models { + [DataContract] public class Order : IOrderModel { + [DataMember] public int JewelId { get; private set; } + [DataMember] public int ClientId { get; private set; } // восстановление с 5 лабы потеряшки - public int? ImplementerId { get; private set; } + [DataMember] + public int? ImplementerId { get; private set; } + [DataMember] public int Count { get; private set; } + [DataMember] public double Sum { get; private set; } + [DataMember] public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; + [DataMember] public DateTime DateCreate { get; private set; } = DateTime.Now; + [DataMember] public DateTime? DateImplement { get; private set; } + [DataMember] public int Id { get; private set; } public static Order? Create(OrderBindingModel? model)