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.Logging" Version="7.0.0" />
<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>

View File

@ -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;

View File

@ -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; }

View File

@ -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<int, (IComponentModel, int)>? _dishComponents = null;
//??
[DataMember]
[NotMapped]
public Dictionary<int, (IComponentModel, int)> DishComponents
{

View File

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

View File

@ -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)

View File

@ -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<Order> Orders { get; private set; } = new();

View File

@ -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)

View File

@ -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)

View File

@ -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)
{

View File

@ -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<int, int> Components { get; private set; } = new();
private Dictionary<int, (IComponentModel, int)>? _dishComponents = null;
[DataMember]
public Dictionary<int, (IComponentModel, int)> DishComponents
{
get

View File

@ -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)
{

View File

@ -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)

View File

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

View File

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

View File

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

View File

@ -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; }

View File

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