This commit is contained in:
Николай 2023-04-29 15:03:30 +04:00
parent ea8061a424
commit 9a6529e0ab
19 changed files with 147 additions and 50 deletions

View File

@ -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<ILoggingBuilder> configure)
{
var factory = LoggerFactory.Create(configure);
_container.AddExtension(new LoggingExtension(factory));
}
public void RegisterType<T>(bool isSingle) where T : class
{
_container.RegisterType<T>(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient);
}
public T Resolve<T>()
{
return _container.Resolve<T>();
}
void IDependencyContainer.RegisterType<T, U>(bool isSingle)
{
_container.RegisterType<T, U>(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient);
}
}
}

View File

@ -10,6 +10,8 @@
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.2.1" /> <PackageReference Include="NLog.Extensions.Logging" Version="5.2.1" />
<PackageReference Include="Unity" Version="5.11.10" />
<PackageReference Include="Unity.Microsoft.Logging" Version="5.11.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -4,19 +4,22 @@ using FoodOrdersDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
[DataContract]
public class Client : IClientModel public class Client : IClientModel
{ {
[DataMember]
public int Id { get; set; } public int Id { get; set; }
[DataMember]
[Required] [Required]
public string ClientFIO { get; set; } = string.Empty; public string ClientFIO { get; set; } = string.Empty;
[DataMember]
[Required] [Required]
public string Email { get; set; } = string.Empty; public string Email { get; set; } = string.Empty;
[DataMember]
[Required] [Required]
public string Password { get; set; } = string.Empty; public string Password { get; set; } = string.Empty;

View File

@ -3,16 +3,19 @@ using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
[DataContract]
public class Component : IComponentModel public class Component : IComponentModel
{ {
[DataMember]
public int Id { get; private set; } public int Id { get; private set; }
[DataMember]
[Required] [Required]
public string ComponentName { get; private set; } = string.Empty; public string ComponentName { get; private set; } = string.Empty;
[DataMember]
[Required] [Required]
public double Cost { get; set; } public double Cost { get; set; }

View File

@ -3,22 +3,25 @@ using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
[DataContract]
public class Dish : IDishModel public class Dish : IDishModel
{ {
[DataMember]
public int Id { get; set; } public int Id { get; set; }
[DataMember]
[Required] [Required]
public string DishName { get; set; } = string.Empty; public string DishName { get; set; } = string.Empty;
[DataMember]
[Required] [Required]
public double Price { get; set; } public double Price { get; set; }
private Dictionary<int, (IComponentModel, int)>? _dishComponents = null; private Dictionary<int, (IComponentModel, int)>? _dishComponents = null;
//?? [DataMember]
[NotMapped] [NotMapped]
public Dictionary<int, (IComponentModel, int)> DishComponents public Dictionary<int, (IComponentModel, int)> DishComponents
{ {

View File

@ -1,7 +1,9 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
[DataContract]
public class DishComponent public class DishComponent
{ {
public int Id { get; set; } public int Id { get; set; }

View File

@ -2,22 +2,29 @@
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
public class EmailMessage : IMessageInfoModel [DataContract]
public class EmailMessage : IMessageInfoModel
{ {
[Key] [Key]
public string MessageId { get; private set; } = string.Empty; [DataMember]
public string MessageId { get; private set; } = string.Empty;
public int? ClientId { get; private set; } [DataMember]
[Required] public int? ClientId { get; private set; }
[DataMember]
[Required]
public string SenderName { get; private set; } = string.Empty; public string SenderName { get; private set; } = string.Empty;
[Required] [DataMember]
[Required]
public DateTime DateDelivery { get; private set; } public DateTime DateDelivery { get; private set; }
[Required] [DataMember]
[Required]
public string Subject { get; private set; } = string.Empty; public string Subject { get; private set; } = string.Empty;
[Required] [DataMember]
[Required]
public string Body { get; private set; } = string.Empty; public string Body { get; private set; } = string.Empty;
public virtual Client? Client { get; set; } public virtual Client? Client { get; set; }
public static EmailMessage? Create(MessageInfoBindingModel model) public static EmailMessage? Create(MessageInfoBindingModel model)

View File

@ -3,20 +3,23 @@ using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels; using FoodOrdersDataModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
public class Implementer : IImplementerModel [DataContract]
public class Implementer : IImplementerModel
{ {
public int Id { get; private set; } [DataMember]
public int Id { get; private set; }
public string ImplementerFIO { get; private set; } = string.Empty; [DataMember]
public string ImplementerFIO { get; private set; } = string.Empty;
public string Password { get; private set; } = string.Empty; [DataMember]
public string Password { get; private set; } = string.Empty;
public int WorkExperience { get; private set; } [DataMember]
public int WorkExperience { get; private set; }
public int Qualification { get; private set; } [DataMember]
public int Qualification { get; private set; }
[ForeignKey("ImplementerId")] [ForeignKey("ImplementerId")]
public virtual List<Order> Orders { get; private set; } = new(); public virtual List<Order> Orders { get; private set; } = new();

View File

@ -3,29 +3,33 @@ using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Enums; using FoodOrdersDataModels.Enums;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace FoodOrdersDatabaseImplement.Models namespace FoodOrdersDatabaseImplement.Models
{ {
[DataContract]
public class Order : IOrderModel public class Order : IOrderModel
{ {
[DataMember]
public int Id { get; set; } public int Id { get; set; }
[DataMember]
[Required] [Required]
public int DishId { get; set; } public int DishId { get; set; }
[DataMember]
[Required] [Required]
public int ClientId { get; set; } public int ClientId { get; set; }
[DataMember]
public int? ImplementerId { get; set; } public int? ImplementerId { get; set; }
[DataMember]
[Required] [Required]
public int Count { get; set; } public int Count { get; set; }
[DataMember]
[Required] [Required]
public double Sum { get; set; } public double Sum { get; set; }
[DataMember]
[Required] [Required]
public OrderStatus Status { get; set; } public OrderStatus Status { get; set; }
[DataMember]
[Required] [Required]
public DateTime DateCreate { get; set; } public DateTime DateCreate { get; set; }
@ -34,7 +38,7 @@ namespace FoodOrdersDatabaseImplement.Models
public virtual Client Client { get; set; } public virtual Client Client { get; set; }
public Implementer? Implementer { get; private set; } public Implementer? Implementer { get; private set; }
[DataMember]
public DateTime? DateImplement { get; set; } public DateTime? DateImplement { get; set; }
public static Order? Create(OrderBindingModel? model) public static Order? Create(OrderBindingModel? model)

View File

@ -1,18 +1,21 @@
using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.BindingModels;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Runtime.Serialization;
using System.Xml.Linq; using System.Xml.Linq;
namespace FoodOrdersFileImplement.Models namespace FoodOrdersFileImplement.Models
{ {
[DataContract]
public class Client : IClientModel public class Client : IClientModel
{ {
[DataMember]
public int Id { get; set; } public int Id { get; set; }
[DataMember]
public string ClientFIO { get; set; } = string.Empty; public string ClientFIO { get; set; } = string.Empty;
[DataMember]
public string Email { get; set; } = string.Empty; public string Email { get; set; } = string.Empty;
[DataMember]
public string Password { get; set; } = string.Empty; public string Password { get; set; } = string.Empty;
public static Client? Create(ClientBindingModel? model) public static Client? Create(ClientBindingModel? model)

View File

@ -1,13 +1,18 @@
using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.BindingModels;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Runtime.Serialization;
using System.Xml.Linq; using System.Xml.Linq;
namespace FoodOrdersFileImplement.Models namespace FoodOrdersFileImplement.Models
{ {
[DataContract]
public class Component : IComponentModel public class Component : IComponentModel
{ {
[DataMember]
public int Id { get; private set; } public int Id { get; private set; }
[DataMember]
public string ComponentName { get; private set; } = string.Empty; public string ComponentName { get; private set; } = string.Empty;
[DataMember]
public double Cost { get; set; } public double Cost { get; set; }
public static Component? Create(ComponentBindingModel model) public static Component? Create(ComponentBindingModel model)
{ {

View File

@ -2,22 +2,25 @@
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using FoodOrdersFileImplement; using FoodOrdersFileImplement;
using System.Runtime.Serialization;
using System.Xml.Linq; using System.Xml.Linq;
namespace FoodOrdersFileImplement.Models namespace FoodOrdersFileImplement.Models
{ {
[DataContract]
public class Dish : IDishModel public class Dish : IDishModel
{ {
[DataMember]
public int Id { get; private set; } public int Id { get; private set; }
[DataMember]
public string DishName { get; private set; } = string.Empty; public string DishName { get; private set; } = string.Empty;
[DataMember]
public double Price { get; private set; } public double Price { get; private set; }
//словарь для файла, так как нам в файле нужно хранить просто id компонента и его количество //словарь для файла, так как нам в файле нужно хранить просто id компонента и его количество
public Dictionary<int, int> Components { get; private set; } = new(); public Dictionary<int, int> Components { get; private set; } = new();
private Dictionary<int, (IComponentModel, int)>? _dishComponents = null; private Dictionary<int, (IComponentModel, int)>? _dishComponents = null;
[DataMember]
public Dictionary<int, (IComponentModel, int)> DishComponents public Dictionary<int, (IComponentModel, int)> DishComponents
{ {
get get

View File

@ -6,23 +6,26 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Linq; using System.Linq;
using System.Runtime.Serialization;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml.Linq; using System.Xml.Linq;
namespace FoodOrdersFileImplement.Models namespace FoodOrdersFileImplement.Models
{ {
public class Implementer : IImplementerModel [DataContract]
public class Implementer : IImplementerModel
{ {
public int Id { get; private set; } [DataMember]
public int Id { get; private set; }
public string ImplementerFIO { get; private set; } = string.Empty; [DataMember]
public string ImplementerFIO { get; private set; } = string.Empty;
public string Password { get; private set; } = string.Empty; [DataMember]
public string Password { get; private set; } = string.Empty;
public int WorkExperience { get; private set; } [DataMember]
public int WorkExperience { get; private set; }
public int Qualification { get; private set; } [DataMember]
public int Qualification { get; private set; }
public static Implementer? Create(XElement element) public static Implementer? Create(XElement element)
{ {

View File

@ -4,20 +4,31 @@ using FoodOrdersDataModels.Enums;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Reflection; using System.Reflection;
using System.Reflection.Metadata; using System.Reflection.Metadata;
using System.Runtime.Serialization;
using System.Xml.Linq; using System.Xml.Linq;
namespace FoodOrdersFileImplement.Models namespace FoodOrdersFileImplement.Models
{ {
[DataContract]
public class Order : IOrderModel public class Order : IOrderModel
{ {
[DataMember]
public int Id { get; private set; } public int Id { get; private set; }
[DataMember]
public int DishId { get; private set; } public int DishId { get; private set; }
[DataMember]
public int ClientId { get; private set; } public int ClientId { get; private set; }
[DataMember]
public int? ImplementerId { get; set; } public int? ImplementerId { get; set; }
[DataMember]
public int Count { get; private set; } public int Count { get; private set; }
[DataMember]
public double Sum { get; private set; } public double Sum { get; private set; }
[DataMember]
public OrderStatus Status { get; private set; } public OrderStatus Status { get; private set; }
[DataMember]
public DateTime DateCreate { get; private set; } public DateTime DateCreate { get; private set; }
[DataMember]
public DateTime? DateImplement { get; private set; } public DateTime? DateImplement { get; private set; }
public static Order? Create(XElement element) public static Order? Create(XElement element)

View File

@ -2,6 +2,7 @@
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization;
namespace FoodOrdersListImplement.Models namespace FoodOrdersListImplement.Models
{ {

View File

@ -1,6 +1,7 @@
using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.BindingModels;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Runtime.Serialization;
namespace FoodOrdersListImplement.Models namespace FoodOrdersListImplement.Models
{ {

View File

@ -1,6 +1,7 @@
using FoodOrdersContracts.BindingModels; using FoodOrdersContracts.BindingModels;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Runtime.Serialization;
namespace FoodOrdersListImplement.Models namespace FoodOrdersListImplement.Models
{ {

View File

@ -2,10 +2,11 @@
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels; using FoodOrdersDataModels;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Runtime.Serialization;
namespace FoodOrdersListImplement.Models namespace FoodOrdersListImplement.Models
{ {
public class Implementer : IImplementerModel public class Implementer : IImplementerModel
{ {
public int Id { get; private set; } public int Id { get; private set; }

View File

@ -3,6 +3,7 @@ using FoodOrdersContracts.ViewModels;
using FoodOrdersDataModels.Enums; using FoodOrdersDataModels.Enums;
using FoodOrdersDataModels.Models; using FoodOrdersDataModels.Models;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization;
namespace FoodOrdersListImplement.Models namespace FoodOrdersListImplement.Models
{ {