From 9a6529e0abf71b5abe7b05b19fdeb8a816f3725f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9?= Date: Sat, 29 Apr 2023 15:03:30 +0400 Subject: [PATCH] fix --- .../DI/UnityDependencyContainer.cs | 40 +++++++++++++++++++ .../FoodOrdersContracts.csproj | 2 + .../Models/Client.cs | 9 +++-- .../Models/Component.cs | 7 +++- .../Models/Dish.cs | 9 +++-- .../Models/DishComponent.cs | 2 + .../Models/EmailMessage.cs | 23 +++++++---- .../Models/Implementer.cs | 23 ++++++----- .../Models/Order.cs | 18 +++++---- .../FoodOrdersFileImplement/Models/Client.cs | 9 +++-- .../Models/Component.cs | 5 +++ .../FoodOrdersFileImplement/Models/Dish.cs | 9 +++-- .../Models/Implementer.cs | 23 ++++++----- .../FoodOrdersFileImplement/Models/Order.cs | 11 +++++ .../FoodOrdersListImplement/Models/Client.cs | 1 + .../Models/Component.cs | 1 + .../FoodOrdersListImplement/Models/Dish.cs | 1 + .../Models/Implementer.cs | 3 +- .../FoodOrdersListImplement/Models/Order.cs | 1 + 19 files changed, 147 insertions(+), 50 deletions(-) create mode 100644 FoodOrders/FoodOrdersContracts/DI/UnityDependencyContainer.cs diff --git a/FoodOrders/FoodOrdersContracts/DI/UnityDependencyContainer.cs b/FoodOrders/FoodOrdersContracts/DI/UnityDependencyContainer.cs new file mode 100644 index 0000000..2201ada --- /dev/null +++ b/FoodOrders/FoodOrdersContracts/DI/UnityDependencyContainer.cs @@ -0,0 +1,40 @@ +using Microsoft.Extensions.Logging; +using System.ComponentModel; +using Unity; +using Unity.Lifetime; +using Unity.Microsoft.Logging; + +namespace FoodOrdersContracts.DI +{ + public class UnityDependencyContainer : IDependencyContainer + { + private readonly IUnityContainer _container; + + public UnityDependencyContainer() + { + _container = new UnityContainer(); + } + + public void AddLogging(Action configure) + { + var factory = LoggerFactory.Create(configure); + _container.AddExtension(new LoggingExtension(factory)); + } + + public void RegisterType(bool isSingle) where T : class + { + _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); + + } + + public T Resolve() + { + return _container.Resolve(); + } + + void IDependencyContainer.RegisterType(bool isSingle) + { + _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); + } + } +} diff --git a/FoodOrders/FoodOrdersContracts/FoodOrdersContracts.csproj b/FoodOrders/FoodOrdersContracts/FoodOrdersContracts.csproj index 5fabb46..d632e6a 100644 --- a/FoodOrders/FoodOrdersContracts/FoodOrdersContracts.csproj +++ b/FoodOrders/FoodOrdersContracts/FoodOrdersContracts.csproj @@ -10,6 +10,8 @@ + + diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/Client.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/Client.cs index cd26def..e964a77 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/Client.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/Client.cs @@ -4,19 +4,22 @@ using FoodOrdersDataModels.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Reflection; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { + [DataContract] public class Client : IClientModel { + [DataMember] public int Id { get; set; } - + [DataMember] [Required] public string ClientFIO { get; set; } = string.Empty; - + [DataMember] [Required] public string Email { get; set; } = string.Empty; - + [DataMember] [Required] public string Password { get; set; } = string.Empty; diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/Component.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/Component.cs index 557ba1b..23eabe8 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/Component.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/Component.cs @@ -3,16 +3,19 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { + [DataContract] public class Component : IComponentModel { + [DataMember] public int Id { get; private set; } - + [DataMember] [Required] public string ComponentName { get; private set; } = string.Empty; - + [DataMember] [Required] public double Cost { get; set; } diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/Dish.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/Dish.cs index e4508ca..9719378 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/Dish.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/Dish.cs @@ -3,22 +3,25 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { + [DataContract] public class Dish : IDishModel { + [DataMember] public int Id { get; set; } - + [DataMember] [Required] public string DishName { get; set; } = string.Empty; - + [DataMember] [Required] public double Price { get; set; } private Dictionary? _dishComponents = null; - //?? + [DataMember] [NotMapped] public Dictionary DishComponents { diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/DishComponent.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/DishComponent.cs index 7f79526..a96627e 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/DishComponent.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/DishComponent.cs @@ -1,7 +1,9 @@ using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { + [DataContract] public class DishComponent { public int Id { get; set; } diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs index d9d60d7..ac7f203 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs @@ -2,22 +2,29 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { - public class EmailMessage : IMessageInfoModel + [DataContract] + public class EmailMessage : IMessageInfoModel { [Key] - public string MessageId { get; private set; } = string.Empty; - - public int? ClientId { get; private set; } - [Required] + [DataMember] + public string MessageId { get; private set; } = string.Empty; + [DataMember] + public int? ClientId { get; private set; } + [DataMember] + [Required] public string SenderName { get; private set; } = string.Empty; - [Required] + [DataMember] + [Required] public DateTime DateDelivery { get; private set; } - [Required] + [DataMember] + [Required] public string Subject { get; private set; } = string.Empty; - [Required] + [DataMember] + [Required] public string Body { get; private set; } = string.Empty; public virtual Client? Client { get; set; } public static EmailMessage? Create(MessageInfoBindingModel model) diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/Implementer.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/Implementer.cs index 7013a79..ae3e8ea 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/Implementer.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/Implementer.cs @@ -3,20 +3,23 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels; using FoodOrdersDataModels.Models; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { - public class Implementer : IImplementerModel + [DataContract] + public class Implementer : IImplementerModel { - public int Id { get; private set; } - - public string ImplementerFIO { get; private set; } = string.Empty; - - public string Password { get; private set; } = string.Empty; - - public int WorkExperience { get; private set; } - - public int Qualification { get; private set; } + [DataMember] + public int Id { get; private set; } + [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; } [ForeignKey("ImplementerId")] public virtual List Orders { get; private set; } = new(); diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/Order.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/Order.cs index 6edfea4..af512cf 100644 --- a/FoodOrders/FoodOrdersDatabaseImplement/Models/Order.cs +++ b/FoodOrders/FoodOrdersDatabaseImplement/Models/Order.cs @@ -3,29 +3,33 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Enums; using FoodOrdersDataModels.Models; using System.ComponentModel.DataAnnotations; +using System.Runtime.Serialization; namespace FoodOrdersDatabaseImplement.Models { + [DataContract] public class Order : IOrderModel { + [DataMember] public int Id { get; set; } - + [DataMember] [Required] public int DishId { get; set; } + [DataMember] [Required] public int ClientId { get; set; } - + [DataMember] public int? ImplementerId { get; set; } - + [DataMember] [Required] public int Count { get; set; } - + [DataMember] [Required] public double Sum { get; set; } - + [DataMember] [Required] public OrderStatus Status { get; set; } - + [DataMember] [Required] public DateTime DateCreate { get; set; } @@ -34,7 +38,7 @@ namespace FoodOrdersDatabaseImplement.Models public virtual Client Client { get; set; } public Implementer? Implementer { get; private set; } - + [DataMember] public DateTime? DateImplement { get; set; } public static Order? Create(OrderBindingModel? model) diff --git a/FoodOrders/FoodOrdersFileImplement/Models/Client.cs b/FoodOrders/FoodOrdersFileImplement/Models/Client.cs index edba1c4..60b6d7b 100644 --- a/FoodOrders/FoodOrdersFileImplement/Models/Client.cs +++ b/FoodOrders/FoodOrdersFileImplement/Models/Client.cs @@ -1,18 +1,21 @@ using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; +using System.Runtime.Serialization; using System.Xml.Linq; namespace FoodOrdersFileImplement.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/FoodOrders/FoodOrdersFileImplement/Models/Component.cs b/FoodOrders/FoodOrdersFileImplement/Models/Component.cs index 951dad9..8511fec 100644 --- a/FoodOrders/FoodOrdersFileImplement/Models/Component.cs +++ b/FoodOrders/FoodOrdersFileImplement/Models/Component.cs @@ -1,13 +1,18 @@ using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; +using System.Runtime.Serialization; using System.Xml.Linq; namespace FoodOrdersFileImplement.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/FoodOrders/FoodOrdersFileImplement/Models/Dish.cs b/FoodOrders/FoodOrdersFileImplement/Models/Dish.cs index 46cded5..b4a25a6 100644 --- a/FoodOrders/FoodOrdersFileImplement/Models/Dish.cs +++ b/FoodOrders/FoodOrdersFileImplement/Models/Dish.cs @@ -2,22 +2,25 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; using FoodOrdersFileImplement; +using System.Runtime.Serialization; using System.Xml.Linq; namespace FoodOrdersFileImplement.Models { + [DataContract] public class Dish : IDishModel { + [DataMember] public int Id { get; private set; } - + [DataMember] public string DishName { get; private set; } = string.Empty; - + [DataMember] public double Price { get; private set; } //словарь для файла, так как нам в файле нужно хранить просто id компонента и его количество public Dictionary Components { get; private set; } = new(); private Dictionary? _dishComponents = null; - + [DataMember] public Dictionary DishComponents { get diff --git a/FoodOrders/FoodOrdersFileImplement/Models/Implementer.cs b/FoodOrders/FoodOrdersFileImplement/Models/Implementer.cs index 57cea33..8e4086b 100644 --- a/FoodOrders/FoodOrdersFileImplement/Models/Implementer.cs +++ b/FoodOrders/FoodOrdersFileImplement/Models/Implementer.cs @@ -6,23 +6,26 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace FoodOrdersFileImplement.Models { - public class Implementer : IImplementerModel + [DataContract] + public class Implementer : IImplementerModel { - public int Id { get; private set; } - - public string ImplementerFIO { get; private set; } = string.Empty; - - public string Password { get; private set; } = string.Empty; - - public int WorkExperience { get; private set; } - - public int Qualification { get; private set; } + [DataMember] + public int Id { get; private set; } + [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; } public static Implementer? Create(XElement element) { diff --git a/FoodOrders/FoodOrdersFileImplement/Models/Order.cs b/FoodOrders/FoodOrdersFileImplement/Models/Order.cs index b1f0312..a6ccf46 100644 --- a/FoodOrders/FoodOrdersFileImplement/Models/Order.cs +++ b/FoodOrders/FoodOrdersFileImplement/Models/Order.cs @@ -4,20 +4,31 @@ using FoodOrdersDataModels.Enums; using FoodOrdersDataModels.Models; using System.Reflection; using System.Reflection.Metadata; +using System.Runtime.Serialization; using System.Xml.Linq; namespace FoodOrdersFileImplement.Models { + [DataContract] public class Order : IOrderModel { + [DataMember] public int Id { get; private set; } + [DataMember] public int DishId { get; private set; } + [DataMember] public int ClientId { get; private set; } + [DataMember] public int? ImplementerId { get; set; } + [DataMember] public int Count { get; private set; } + [DataMember] public double Sum { get; private set; } + [DataMember] public OrderStatus Status { get; private set; } + [DataMember] public DateTime DateCreate { get; private set; } + [DataMember] public DateTime? DateImplement { get; private set; } public static Order? Create(XElement element) diff --git a/FoodOrders/FoodOrdersListImplement/Models/Client.cs b/FoodOrders/FoodOrdersListImplement/Models/Client.cs index 2657ed5..41a5bd3 100644 --- a/FoodOrders/FoodOrdersListImplement/Models/Client.cs +++ b/FoodOrders/FoodOrdersListImplement/Models/Client.cs @@ -2,6 +2,7 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; using System.Reflection; +using System.Runtime.Serialization; namespace FoodOrdersListImplement.Models { diff --git a/FoodOrders/FoodOrdersListImplement/Models/Component.cs b/FoodOrders/FoodOrdersListImplement/Models/Component.cs index 9ae5b6a..e702003 100644 --- a/FoodOrders/FoodOrdersListImplement/Models/Component.cs +++ b/FoodOrders/FoodOrdersListImplement/Models/Component.cs @@ -1,6 +1,7 @@ using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; +using System.Runtime.Serialization; namespace FoodOrdersListImplement.Models { diff --git a/FoodOrders/FoodOrdersListImplement/Models/Dish.cs b/FoodOrders/FoodOrdersListImplement/Models/Dish.cs index f9d40a4..5d0d9ba 100644 --- a/FoodOrders/FoodOrdersListImplement/Models/Dish.cs +++ b/FoodOrders/FoodOrdersListImplement/Models/Dish.cs @@ -1,6 +1,7 @@ using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Models; +using System.Runtime.Serialization; namespace FoodOrdersListImplement.Models { diff --git a/FoodOrders/FoodOrdersListImplement/Models/Implementer.cs b/FoodOrders/FoodOrdersListImplement/Models/Implementer.cs index 90a8f0f..ad66ba9 100644 --- a/FoodOrders/FoodOrdersListImplement/Models/Implementer.cs +++ b/FoodOrders/FoodOrdersListImplement/Models/Implementer.cs @@ -2,10 +2,11 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels; using FoodOrdersDataModels.Models; +using System.Runtime.Serialization; namespace FoodOrdersListImplement.Models { - public class Implementer : IImplementerModel + public class Implementer : IImplementerModel { public int Id { get; private set; } diff --git a/FoodOrders/FoodOrdersListImplement/Models/Order.cs b/FoodOrders/FoodOrdersListImplement/Models/Order.cs index 9f26c67..1469273 100644 --- a/FoodOrders/FoodOrdersListImplement/Models/Order.cs +++ b/FoodOrders/FoodOrdersListImplement/Models/Order.cs @@ -3,6 +3,7 @@ using FoodOrdersContracts.ViewModels; using FoodOrdersDataModels.Enums; using FoodOrdersDataModels.Models; using System.Reflection; +using System.Runtime.Serialization; namespace FoodOrdersListImplement.Models {