ISEbd-21.Fedotov.I.A.LabWork08 #8

Closed
Ilfedotov.01 wants to merge 5 commits from ISEbd-21.Fedotov.I.A.LabWork08 into ISEbd-21.Fedotov.I.A.LabWork07
18 changed files with 148 additions and 5 deletions
Showing only changes of commit af780dc6ef - Show all commits

View File

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

View 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);
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -14,7 +14,7 @@ namespace DinerFileImplement.Implements {
private readonly DataFileSingleton _source;
private ImplementerStorage() {
public ImplementerStorage() {
_source = DataFileSingleton.GetInstance();
}

View File

@ -16,7 +16,7 @@ namespace DinerFileImplement.Implements
private readonly DataFileSingleton _source;
private MessageInfoStorage() {
public MessageInfoStorage() {
_source = DataFileSingleton.GetInstance();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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