ISEbd-21.Fedotov.I.A.LabWork08 #8
@ -15,7 +15,7 @@ namespace DinerContracts.DI {
|
||||
private static readonly object _locjObject = new();
|
||||
|
||||
private DependencyManager() {
|
||||
_dependencyManager = new ServiceDependencyContainer();
|
||||
_dependencyManager = new UnityDependencyContainer();
|
||||
}
|
||||
|
||||
public static DependencyManager Instance {
|
||||
|
35
Diner/DinerContracts/DI/UnityDependencyContainer.cs
Normal file
35
Diner/DinerContracts/DI/UnityDependencyContainer.cs
Normal file
@ -0,0 +1,35 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Unity;
|
||||
using Unity.Microsoft.Logging;
|
||||
|
||||
namespace DinerContracts.DI {
|
||||
public class UnityDependencyContainer : IDependencyContainer {
|
||||
|
||||
private readonly IUnityContainer _container;
|
||||
|
||||
public UnityDependencyContainer() {
|
||||
_container = new UnityContainer();
|
||||
}
|
||||
|
||||
public void AddLogging(Action<ILoggingBuilder> configure) {
|
||||
_container.AddExtension(new LoggingExtension(LoggerFactory.Create(configure)));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,8 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
||||
<PackageReference Include="Unity" Version="5.11.10" />
|
||||
<PackageReference Include="Unity.Microsoft.Logging" Version="5.11.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -7,21 +7,28 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerDataBaseImplement.Models {
|
||||
|
||||
[DataContract]
|
||||
public class Client : IClientModel {
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string ClientFIO { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string Email { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; private set; }
|
||||
|
||||
[ForeignKey("ClientID")]
|
||||
|
@ -6,20 +6,25 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace DinerDataBaseImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
public class Food : IFoodModel
|
||||
{
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string ComponentName { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public double Price { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
[ForeignKey("ComponentID")]
|
||||
|
@ -6,24 +6,32 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerDataBaseImplement.Models {
|
||||
|
||||
[DataContract]
|
||||
public class Implementer : IImplementerModel {
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string ImplementerFIO { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int WorkExperience { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int Qualification { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
[ForeignKey("ImplementerID")]
|
||||
|
@ -6,26 +6,35 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerDataBaseImplement.Models {
|
||||
|
||||
[DataContract]
|
||||
public class MessageInfo : IMessageInfoModel {
|
||||
|
||||
[NotMapped]
|
||||
public int ID { get; private set; }
|
||||
|
||||
[Key]
|
||||
[DataMember]
|
||||
public string MessageID { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int? ClientID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string SenderName { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public DateTime DateDelivery { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Subject { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public string Body { get; set; } = string.Empty;
|
||||
|
||||
public virtual Client? Client { get; set; }
|
||||
|
@ -6,33 +6,45 @@ using DinerDataModels.Models;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace DinerDataBaseImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
public class Order : IOrderModel
|
||||
{
|
||||
[ForeignKey("SnackID")]
|
||||
[DataMember]
|
||||
public int SnackID { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int ClientID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int? ImplementerID { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int Count { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public double Sum { get; private set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public OrderStatus Status { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public DateTime DateCreate { get; private set; }
|
||||
|
||||
|
||||
[DataMember]
|
||||
public DateTime? DateImplement { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; private set; }
|
||||
|
||||
public virtual Snack Snack { get; set; }
|
||||
|
@ -8,25 +8,31 @@ using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace DinerDataBaseImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
public class Snack : ISnackModel
|
||||
{
|
||||
[Required]
|
||||
[DataMember]
|
||||
public string ProductName { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public double Price { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
private Dictionary<int, (IFoodModel, int)>? _productComponents = null;
|
||||
|
||||
[NotMapped]
|
||||
[DataMember]
|
||||
public Dictionary<int, (IFoodModel, int)> ProductComponents
|
||||
{
|
||||
get
|
||||
|
@ -1,18 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace DinerDataBaseImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
public class SnackFood
|
||||
{
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int SnackID { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int ComponentID { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataMember]
|
||||
public int Count { get; set; }
|
||||
|
||||
public virtual Food Component { get; set; } = new();
|
||||
|
@ -14,7 +14,7 @@ namespace DinerFileImplement.Implements {
|
||||
|
||||
private readonly DataFileSingleton _source;
|
||||
|
||||
private ImplementerStorage() {
|
||||
public ImplementerStorage() {
|
||||
_source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ namespace DinerFileImplement.Implements
|
||||
|
||||
private readonly DataFileSingleton _source;
|
||||
|
||||
private MessageInfoStorage() {
|
||||
public MessageInfoStorage() {
|
||||
_source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
|
||||
|
@ -4,18 +4,25 @@ using DinerDataModels.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 DinerFileImplement.Models {
|
||||
[DataContract]
|
||||
public class Client : IClientModel {
|
||||
|
||||
[DataMember]
|
||||
public string ClientFIO { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public string Email { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
public static Client? Create(ClientBindingModel? model) {
|
||||
|
@ -4,18 +4,23 @@ using DinerDataModels.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 DinerFileImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
internal class Food : IFoodModel
|
||||
{
|
||||
[DataMember]
|
||||
public string ComponentName { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public double Price { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
public static Food? Create(FoodBindingModel? model)
|
||||
@ -33,7 +38,7 @@ namespace DinerFileImplement.Models
|
||||
return new Food()
|
||||
{
|
||||
ID = Convert.ToInt32(element.Attribute("ID")!.Value),
|
||||
ComponentName = element.Element("ProductName")!.Value,
|
||||
ComponentName = element.Element("ComponentName")!.Value,
|
||||
Price = Convert.ToDouble(element.Element("Price")!.Value)
|
||||
};
|
||||
}
|
||||
|
@ -4,19 +4,29 @@ using DinerDataModels.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 DinerFileImplement.Models {
|
||||
|
||||
[DataContract]
|
||||
public class Implementer : IImplementerModel {
|
||||
|
||||
[DataMember]
|
||||
public string ImplementerFIO { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int WorkExperience { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Qualification { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; set; }
|
||||
|
||||
public static Implementer? Create(ImplementerBindingModel? model) {
|
||||
|
@ -4,25 +4,34 @@ using DinerDataModels.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 DinerFileImplement.Models {
|
||||
[DataContract]
|
||||
public class MessageInfo : IMessageInfoModel {
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public string MessageID { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public int? ClientID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string SenderName { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public DateTime DateDelivery { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Subject { get; set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public string Body { get; set; } = string.Empty;
|
||||
|
||||
public static MessageInfo? Create(MessageInfoBindingModel? model) {
|
||||
|
@ -5,6 +5,7 @@ using DinerDataModels.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;
|
||||
@ -12,29 +13,43 @@ using System.Xml.Schema;
|
||||
|
||||
namespace DinerFileImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
internal class Order : IOrderModel {
|
||||
|
||||
[DataMember]
|
||||
public int SnackID { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public int ClientID { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public int? ImplementerID { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Count { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public double Sum { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public OrderStatus Status { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime DateCreate { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public DateTime? DateImplement { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public string? ProductName { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public string ClientFIO { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public string ImplementerFIO { get; private set; }
|
||||
|
||||
public static Order? Create(OrderBindingModel? model)
|
||||
|
@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
@ -12,15 +13,21 @@ using System.Xml.XPath;
|
||||
|
||||
namespace DinerFileImplement.Models
|
||||
{
|
||||
[DataContract]
|
||||
internal class Snack : ISnackModel
|
||||
{
|
||||
[DataMember]
|
||||
public string ProductName { get; private set; } = string.Empty;
|
||||
|
||||
[DataMember]
|
||||
public double Price { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public int ID { get; private set; }
|
||||
|
||||
public Dictionary<int, int> Components { get; private set; } = new();
|
||||
|
||||
[DataMember]
|
||||
private Dictionary<int, (IFoodModel, int)>? _productComponents = null;
|
||||
public Dictionary<int, (IFoodModel, int)> ProductComponents
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user