This commit is contained in:
georgiy semikolenov 2023-11-23 03:56:29 +04:00
parent aecb2bdf42
commit fdd0cd0433
18 changed files with 133 additions and 30 deletions

Binary file not shown.

Binary file not shown.

View File

@ -22,6 +22,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\PlumbingRepairBusinessLogic\PlumbingRepairBusinessLogic.csproj" /> <ProjectReference Include="..\PlumbingRepairBusinessLogic\PlumbingRepairBusinessLogic.csproj" />
<ProjectReference Include="..\PlumbingRepairContracts\PlumbingRepairContracts.csproj" /> <ProjectReference Include="..\PlumbingRepairContracts\PlumbingRepairContracts.csproj" />
<ProjectReference Include="..\PlumbingRepairDatabaseImplement\PlumbingRepairDatabaseImplement.csproj" />
<ProjectReference Include="..\PlumbingRepairListImplement\PlumbingRepairListImplement.csproj" /> <ProjectReference Include="..\PlumbingRepairListImplement\PlumbingRepairListImplement.csproj" />
<ProjectReference Include="..\PlumpingRepairFileImplement\PlumbingRepairFileImplement.csproj" /> <ProjectReference Include="..\PlumpingRepairFileImplement\PlumbingRepairFileImplement.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -0,0 +1,22 @@
using PlumbingRepairContracts.DI;
using PlumbingRepairContracts.StoragesContracts;
using PlumbingRepairDatabaseImplement.Implements;
namespace PlumbingRepairDatabaseImplement
{
public class DatabaseImplementationExtension : IImplementationExtension
{
public int Priority => 2;
public void RegisterServices()
{
DependencyManager.Instance.RegisterType<IClientStorage, ClientStorage>();
DependencyManager.Instance.RegisterType<IComponentStorage, ComponentStorage>();
DependencyManager.Instance.RegisterType<IImplementerStorage, ImplementerStorage>();
DependencyManager.Instance.RegisterType<IMessageInfoStorage, MessageInfoStorage>();
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
DependencyManager.Instance.RegisterType<IWorkStorage, WorkStorage>();
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
}
}
}

View File

@ -0,0 +1,29 @@
using PlumbingRepairContracts.StoragesContracts;
namespace PlumbingRepairDatabaseImplement.Implements
{
public class BackUpInfo : IBackUpInfo
{
public List<T>? GetList<T>() where T : class, new()
{
using var context = new PlumbingRepairDataBase();
return context.Set<T>().ToList();
}
public Type? GetTypeByModelInterface(string modelInterfaceName)
{
var assembly = typeof(BackUpInfo).Assembly;
var types = assembly.GetTypes();
foreach (var type in types)
{
if (type.IsClass && type.GetInterface(modelInterfaceName) != null)
{
return type;
}
}
return null;
}
}
}

View File

@ -12,7 +12,7 @@ using PlumbingRepairDatabaseImplement;
namespace PlumbingRepairDatabaseImplement.Migrations namespace PlumbingRepairDatabaseImplement.Migrations
{ {
[DbContext(typeof(PlumbingRepairDataBase))] [DbContext(typeof(PlumbingRepairDataBase))]
[Migration("20231108203013_init")] [Migration("20231122235359_init")]
partial class init partial class init
{ {
/// <inheritdoc /> /// <inheritdoc />
@ -223,7 +223,7 @@ namespace PlumbingRepairDatabaseImplement.Migrations
modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Message", b => modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Message", b =>
{ {
b.HasOne("PlumbingRepairDatabaseImplement.Models.Client", "Client") b.HasOne("PlumbingRepairDatabaseImplement.Models.Client", "Client")
.WithMany() .WithMany("Messages")
.HasForeignKey("ClientId"); .HasForeignKey("ClientId");
b.Navigation("Client"); b.Navigation("Client");
@ -275,6 +275,8 @@ namespace PlumbingRepairDatabaseImplement.Migrations
modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Client", b => modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Client", b =>
{ {
b.Navigation("Messages");
b.Navigation("Orders"); b.Navigation("Orders");
}); });

View File

@ -220,7 +220,7 @@ namespace PlumbingRepairDatabaseImplement.Migrations
modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Message", b => modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Message", b =>
{ {
b.HasOne("PlumbingRepairDatabaseImplement.Models.Client", "Client") b.HasOne("PlumbingRepairDatabaseImplement.Models.Client", "Client")
.WithMany() .WithMany("Messages")
.HasForeignKey("ClientId"); .HasForeignKey("ClientId");
b.Navigation("Client"); b.Navigation("Client");
@ -272,6 +272,8 @@ namespace PlumbingRepairDatabaseImplement.Migrations
modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Client", b => modelBuilder.Entity("PlumbingRepairDatabaseImplement.Models.Client", b =>
{ {
b.Navigation("Messages");
b.Navigation("Orders"); b.Navigation("Orders");
}); });

View File

@ -3,18 +3,24 @@ using PlumbingRepairContracts.ViewModels;
using PlumbingRepairDataModels.Models; using PlumbingRepairDataModels.Models;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace PlumbingRepairDatabaseImplement.Models namespace PlumbingRepairDatabaseImplement.Models
{ {
public class Client : IClientModel [DataContract]
public class Client : IClientModel
{ {
public int Id { get; set; } [DataMember]
public int Id { get; set; }
[Required] [Required]
public string ClientFIO { get; set; } = string.Empty; [DataMember]
public string ClientFIO { get; set; } = string.Empty;
[Required] [Required]
public string Email { get; set; } = string.Empty; [DataMember]
public string Email { get; set; } = string.Empty;
[Required] [Required]
public string Password { get; set; } = string.Empty; [DataMember]
public string Password { get; set; } = string.Empty;
[ForeignKey("ClientId")] [ForeignKey("ClientId")]
public virtual List<Order> Orders { get; set; } = new(); public virtual List<Order> Orders { get; set; } = new();
[ForeignKey("ClientId")] [ForeignKey("ClientId")]

View File

@ -3,18 +3,23 @@ using PlumbingRepairContracts.ViewModels;
using PlumbingRepairDataModels.Models; using PlumbingRepairDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace PlumbingRepairDatabaseImplement.Models namespace PlumbingRepairDatabaseImplement.Models
{ {
public class Component : IComponentModel [DataContract]
public class Component : IComponentModel
{ {
public int Id { get; private set; } [DataMember]
public int Id { get; private set; }
[Required] [Required]
public string ComponentName { get; private set; } = string.Empty; [DataMember]
public string ComponentName { get; private set; } = string.Empty;
[Required] [Required]
public double Cost { get; set; } [DataMember]
public double Cost { get; set; }
[ForeignKey("ComponentId")] [ForeignKey("ComponentId")]
public virtual List<WorkComponent> WorkComponents { get; set; } = new(); public virtual List<WorkComponent> WorkComponents { get; set; } = new();

View File

@ -3,23 +3,30 @@ using PlumbingRepairContracts.ViewModels;
using PlumbingRepairDataModels.Models; using PlumbingRepairDataModels.Models;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace PlumbingRepairDatabaseImplement.Models namespace PlumbingRepairDatabaseImplement.Models
{ {
[DataContract]
public class Implementer : IImplementerModel public class Implementer : IImplementerModel
{ {
[DataMember]
public int Id { get; set; } public int Id { get; set; }
[Required] [Required]
[DataMember]
public string ImplementerFIO { get; set; } = string.Empty; public string ImplementerFIO { get; set; } = string.Empty;
[Required] [Required]
[DataMember]
public string Password { get; set; } = string.Empty; public string Password { get; set; } = string.Empty;
[Required] [Required]
[DataMember]
public int WorkExperience { get; set; } public int WorkExperience { get; set; }
[Required] [Required]
[DataMember]
public int Qualification { get; set; } public int Qualification { get; set; }
[ForeignKey("ImplementerId")] [ForeignKey("ImplementerId")]

View File

@ -2,17 +2,25 @@
using PlumbingRepairContracts.ViewModels; using PlumbingRepairContracts.ViewModels;
using PlumbingRepairDataModels.Models; using PlumbingRepairDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace PlumbingRepairDatabaseImplement.Models namespace PlumbingRepairDatabaseImplement.Models
{ {
[DataContract]
public class Message : IMessageInfoModel public class Message : IMessageInfoModel
{ {
[Key] [Key]
[DataMember]
public string MessageId { get; private set; } = string.Empty; public string MessageId { get; private set; } = string.Empty;
[DataMember]
public int? ClientId { get; private set; } public int? ClientId { get; private set; }
[DataMember]
public string SenderName { get; private set; } = string.Empty; public string SenderName { get; private set; } = string.Empty;
[DataMember]
public DateTime DateDelivery { get; private set; } = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc); public DateTime DateDelivery { get; private set; } = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc);
[DataMember]
public string Subject { get; private set; } = string.Empty; public string Subject { get; private set; } = string.Empty;
[DataMember]
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; }
@ -43,5 +51,7 @@ namespace PlumbingRepairDatabaseImplement.Models
SenderName = SenderName, SenderName = SenderName,
DateDelivery = DateDelivery DateDelivery = DateDelivery
}; };
public int Id => throw new NotImplementedException();
} }
} }

View File

@ -3,33 +3,41 @@ using PlumbingRepairContracts.ViewModels;
using PlumbingRepairDataModels.Enums; using PlumbingRepairDataModels.Enums;
using PlumbingRepairDataModels.Models; using PlumbingRepairDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace PlumbingRepairDatabaseImplement.Models namespace PlumbingRepairDatabaseImplement.Models
{ {
public class Order : IOrderModel [DataContract]
public class Order : IOrderModel
{ {
public int Id { get; private set; } [DataMember]
public int Id { get; private set; }
public int WorkId { get; private set; } [DataMember]
public int WorkId { get; private set; }
public string WorkName { get; private set; } = string.Empty; [DataMember]
public string WorkName { get; private set; } = string.Empty;
[Required] [Required]
public int ClientId { get; private set; } [DataMember]
public int ClientId { get; private set; }
[DataMember]
public int? ImplementerId { get; set; } public int? ImplementerId { get; set; }
[Required] [Required]
[DataMember]
public int Count { get; private set; } public int Count { get; private set; }
[Required] [Required]
public double Sum { get; private set; } [DataMember]
public double Sum { get; private set; }
[Required] [Required]
public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; [DataMember]
public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен;
[Required] [Required]
public DateTime DateCreate { get; private set; } = DateTime.Now; [DataMember]
public DateTime DateCreate { get; private set; } = DateTime.Now;
public DateTime? DateImplement { get; private set; } [DataMember]
public DateTime? DateImplement { get; private set; }
public virtual Work Work { get; set; } public virtual Work Work { get; set; }
public virtual Client Client { get; set; } public virtual Client Client { get; set; }

View File

@ -3,23 +3,29 @@ using PlumbingRepairContracts.ViewModels;
using PlumbingRepairDataModels.Models; using PlumbingRepairDataModels.Models;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
namespace PlumbingRepairDatabaseImplement.Models namespace PlumbingRepairDatabaseImplement.Models
{ {
public class Work : IWorkModel [DataContract]
public class Work : IWorkModel
{ {
public int Id { get; set; } [DataMember]
public int Id { get; set; }
[Required] [Required]
public string WorkName { get; set; } = string.Empty; [DataMember]
public string WorkName { get; set; } = string.Empty;
[Required] [Required]
public double Price { get; set; } [DataMember]
public double Price { get; set; }
private Dictionary<int, (IComponentModel, int)>? _workComponents = null; private Dictionary<int, (IComponentModel, int)>? _workComponents = null;
[NotMapped] [NotMapped]
public Dictionary<int, (IComponentModel, int)> WorkComponents [DataMember]
public Dictionary<int, (IComponentModel, int)> WorkComponents
{ {
get get
{ {

View File

@ -20,4 +20,8 @@
<ProjectReference Include="..\PlumbingRepairDataModels\PlumbingRepairDataModels.csproj" /> <ProjectReference Include="..\PlumbingRepairDataModels\PlumbingRepairDataModels.csproj" />
</ItemGroup> </ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="copy /Y &quot;$(TargetDir)*.dll&quot; &quot;$(SolutionDir)ImplementationExtensions\*.dll&quot;&#xD;&#xA;" />
</Target>
</Project> </Project>

View File

@ -13,6 +13,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\PlumbingRepairBusinessLogic\PlumbingRepairBusinessLogic.csproj" /> <ProjectReference Include="..\PlumbingRepairBusinessLogic\PlumbingRepairBusinessLogic.csproj" />
<ProjectReference Include="..\PlumbingRepairDatabaseImplement\PlumbingRepairDatabaseImplement.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>