From 0f18f2bf17ba3f26cebbd676d15cdfe608c4fa8f Mon Sep 17 00:00:00 2001 From: Ivan_Starostin Date: Fri, 21 Jun 2024 21:40:58 +0400 Subject: [PATCH] Upload files to 'ShipyardFileImplement' --- ShipyardFileImplement/BackUpInfo.cs | 41 +++++++++++++++++++ ShipyardFileImplement/Client.cs | 6 +++ ShipyardFileImplement/Component.cs | 17 +++++--- .../FileImplementationExtension.cs | 34 +++++++++++++++ ShipyardFileImplement/Implementer.cs | 7 ++++ 5 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 ShipyardFileImplement/BackUpInfo.cs create mode 100644 ShipyardFileImplement/FileImplementationExtension.cs diff --git a/ShipyardFileImplement/BackUpInfo.cs b/ShipyardFileImplement/BackUpInfo.cs new file mode 100644 index 0000000..98f8c16 --- /dev/null +++ b/ShipyardFileImplement/BackUpInfo.cs @@ -0,0 +1,41 @@ +using ShipyardContracts.StorageContracts; +using ShipyardFileImplement; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace ShipyardFileImplemented +{ + 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 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; + } + 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); + } + } +} diff --git a/ShipyardFileImplement/Client.cs b/ShipyardFileImplement/Client.cs index eadcdd1..b4aa6bd 100644 --- a/ShipyardFileImplement/Client.cs +++ b/ShipyardFileImplement/Client.cs @@ -4,17 +4,23 @@ using ShipyardDataModels; 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 ShipyardFileImplemented.Models { + [DataContract] public class Client : IClientModel { + [DataMember] public int Id { get; private set; } + [DataMember] public string ClientFIO { get; private 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/ShipyardFileImplement/Component.cs b/ShipyardFileImplement/Component.cs index 7e000f2..2c15e3d 100644 --- a/ShipyardFileImplement/Component.cs +++ b/ShipyardFileImplement/Component.cs @@ -4,18 +4,23 @@ using ShipyardDataModels.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 ShipyardFileImplement.Models { - public class Component : IComponentModel - { - public int Id { get; set; } - public string ComponentName { get; set; } = string.Empty; - public double Cost { get; set; } - public static Component? Create(ComponentBindingModel model) + [DataContract] + public class Component : IComponentModel + { + [DataMember] + public int Id { get; set; } + [DataMember] + public string ComponentName { get; set; } = string.Empty; + [DataMember] + public double Cost { get; set; } + public static Component? Create(ComponentBindingModel model) { if (model == null) { diff --git a/ShipyardFileImplement/FileImplementationExtension.cs b/ShipyardFileImplement/FileImplementationExtension.cs new file mode 100644 index 0000000..b3862f2 --- /dev/null +++ b/ShipyardFileImplement/FileImplementationExtension.cs @@ -0,0 +1,34 @@ +using ShipyardContracts.DI; +using ShipyardContracts.StorageContracts; +using ShipyardContracts.StoragesContracts; +using ShipyardFileImplement.Implements; +using ShipyardFileImplemented.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShipyardFileImplemented +{ + public class FileImplementationExtension : IImplementationExtension + { + public int Priority => 0; + 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/ShipyardFileImplement/Implementer.cs b/ShipyardFileImplement/Implementer.cs index b40f7ef..5660183 100644 --- a/ShipyardFileImplement/Implementer.cs +++ b/ShipyardFileImplement/Implementer.cs @@ -4,18 +4,25 @@ using ShipyardDataModels.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 ShipyardFileImplemented.Models { + [DataContract] public class Implementer : IImplementerModel { + [DataMember] public int Id { get; private set; } + [DataMember] public string ImplementerFIO { get; private set; } = string.Empty; + [DataMember] public string Password { get; set; } = string.Empty; + [DataMember] public int Qualification { get; set; } = 0; + [DataMember] public int WorkExperience { get; set; } = 0; public static Implementer? Create(ImplementerBindingModel model) {