From e39c65e22897786e16d0b3e0d949ed71f760d895 Mon Sep 17 00:00:00 2001 From: Ivan_Starostin Date: Fri, 21 Jun 2024 21:51:45 +0400 Subject: [PATCH] Upload files to 'ShipyardDatabaseImplement' --- ShipyardDatabaseImplement/BackUpInfo.cs | 32 +++++ ShipyardDatabaseImplement/Client.cs | 113 ++++++++++-------- ShipyardDatabaseImplement/Component.cs | 15 ++- .../DatabaseImplementationExtension.cs | 33 +++++ .../ShipyardDatabaseImplement.csproj | 52 ++++---- 5 files changed, 162 insertions(+), 83 deletions(-) create mode 100644 ShipyardDatabaseImplement/BackUpInfo.cs create mode 100644 ShipyardDatabaseImplement/DatabaseImplementationExtension.cs diff --git a/ShipyardDatabaseImplement/BackUpInfo.cs b/ShipyardDatabaseImplement/BackUpInfo.cs new file mode 100644 index 0000000..29749d1 --- /dev/null +++ b/ShipyardDatabaseImplement/BackUpInfo.cs @@ -0,0 +1,32 @@ +using ShipyardContracts.StorageContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShipyardDatabaseImplement +{ + public class BackUpInfo : IBackUpInfo + { + public List? GetList() where T : class, new() + { + using var context = new ShipyardDataBase(); + return context.Set().ToList(); + } + 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/ShipyardDatabaseImplement/Client.cs b/ShipyardDatabaseImplement/Client.cs index 94b36e2..346d04f 100644 --- a/ShipyardDatabaseImplement/Client.cs +++ b/ShipyardDatabaseImplement/Client.cs @@ -8,62 +8,69 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Runtime.Serialization; namespace ShipyardDatabaseImplement.Models { - public class Client : IClientModel - { - public int Id { get; private set; } - [Required] - public string ClientFIO { get; private set; } = string.Empty; - [Required] - public string Email { get; set; } = string.Empty; - [Required] - public string Password { get; set; } = string.Empty; - [ForeignKey("ClientId")] - public virtual List Orders { get; set; } = new(); + [DataContract] + public class Client : IClientModel + { + [DataMember] + public int Id { get; private set; } + [Required] + [DataMember] + public string ClientFIO { get; private set; } = string.Empty; + [Required] + [DataMember] + public string Email { get; set; } = string.Empty; + [Required] + [DataMember] + public string Password { get; set; } = string.Empty; [ForeignKey("ClientId")] - public virtual List ClientMessages { get; set; } = new(); + public virtual List Orders { get; set; } = new(); + [ForeignKey("ClientId")] + public virtual List MessageInfos { get; set; } = new(); public static Client? Create(ClientBindingModel model) - { - if (model == null) - { - return null; - } - return new Client() - { - Id = model.Id, - ClientFIO = model.ClientFIO, - Email = model.Email, - Password = model.Password - }; - } - public static Client Create(ClientViewModel model) - { - return new Client() - { - Id = model.Id, - ClientFIO = model.ClientFIO, - Email = model.Email, - Password = model.Password - }; - } - public void Update(ClientBindingModel model) - { - if (model == null) - { - return; - } - ClientFIO = model.ClientFIO; - Email = model.Email; - Password = model.Password; - } - public ClientViewModel GetViewModel => new() - { - Id = Id, - ClientFIO = ClientFIO, - Email = Email, - Password = Password - }; - } + { + if (model == null) + { + return null; + } + return new Client() + { + Id = model.Id, + ClientFIO = model.ClientFIO, + Email = model.Email, + Password = model.Password + }; + } + public static Client Create(ClientViewModel model) + { + return new Client() + { + Id = model.Id, + ClientFIO = model.ClientFIO, + Email = model.Email, + Password = model.Password + }; + } + public void Update(ClientBindingModel model) + { + if (model == null) + { + return; + } + ClientFIO = model.ClientFIO; + Email = model.Email; + Password = model.Password; + } + public ClientViewModel GetViewModel => new() + { + Id = Id, + ClientFIO = ClientFIO, + Email = Email, + Password = Password + }; + } + } diff --git a/ShipyardDatabaseImplement/Component.cs b/ShipyardDatabaseImplement/Component.cs index 563058e..3cd86ea 100644 --- a/ShipyardDatabaseImplement/Component.cs +++ b/ShipyardDatabaseImplement/Component.cs @@ -3,16 +3,19 @@ using ShipyardContracts.ViewModels; using ShipyardDataModels.Models; using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; namespace ShipyardDatabaseImplement.Models { - public class Component : IComponentModel + [DataContract] + public class Component : IComponentModel { - public int Id { get; private set; } - [Required] - public string ComponentName { get; private set; } = string.Empty; - [Required] - public double Cost { get; set; } + [DataMember] + public int Id { get; private set; } + [DataMember] + public string ComponentName { get; private set; } = string.Empty; + [DataMember] + public double Cost { get; set; } [ForeignKey("ComponentId")] public virtual List ShipComponents { get; set; } = new(); diff --git a/ShipyardDatabaseImplement/DatabaseImplementationExtension.cs b/ShipyardDatabaseImplement/DatabaseImplementationExtension.cs new file mode 100644 index 0000000..2ac23c7 --- /dev/null +++ b/ShipyardDatabaseImplement/DatabaseImplementationExtension.cs @@ -0,0 +1,33 @@ +using ShipyardContracts.DI; +using ShipyardContracts.StorageContracts; +using ShipyardContracts.StoragesContracts; +using ShipyardDatabaseImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShipyardDatabaseImplement +{ + public class DatabaseImplementationExtension : IImplementationExtension + { + public int Priority => 2; + 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/ShipyardDatabaseImplement/ShipyardDatabaseImplement.csproj b/ShipyardDatabaseImplement/ShipyardDatabaseImplement.csproj index 8faa2b5..2c5d57f 100644 --- a/ShipyardDatabaseImplement/ShipyardDatabaseImplement.csproj +++ b/ShipyardDatabaseImplement/ShipyardDatabaseImplement.csproj @@ -1,24 +1,28 @@ - - - - net6.0 - enable - enable - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - + + + + net6.0 + enable + enable + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + +