вроде готово
This commit is contained in:
parent
ecf2e10885
commit
8f1bcf00fc
@ -0,0 +1,34 @@
|
|||||||
|
using PlumbingRepairBusinessLogic.BusinessLogics;
|
||||||
|
using PlumbingRepairBusinessLogic.MailWorker;
|
||||||
|
using PlumbingRepairBusinessLogic.OfficePackage.Implements;
|
||||||
|
using PlumbingRepairBusinessLogic.OfficePackage;
|
||||||
|
using PlumbingRepairContracts.BusinessLogicsContracts;
|
||||||
|
using PlumbingRepairContracts.DI;
|
||||||
|
|
||||||
|
namespace PlumbingRepairBusinessLogic
|
||||||
|
{
|
||||||
|
public class ImplementationBusinessLogicExtension : IImplementationBusinessLogicExtension
|
||||||
|
{
|
||||||
|
public int Priority => 0;
|
||||||
|
|
||||||
|
public void RegisterServices()
|
||||||
|
{
|
||||||
|
DependencyManager.Instance.RegisterType<IComponentLogic, ComponentLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IOrderLogic, OrderLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IWorkLogic, WorkLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IReportLogic, ReportLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IClientLogic, ClientLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IImplementerLogic, ImplementerLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IMessageInfoLogic, MessageInfoLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IWorkProcess, WorkModeling>();
|
||||||
|
DependencyManager.Instance.RegisterType<IBackUpLogic, BackUpLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IShopLogic, ShopLogic>();
|
||||||
|
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractMailWorker, MailKitWorker>(true);
|
||||||
|
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractSaveToExcel, SaveToExcel>();
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractSaveToWord, SaveToWord>();
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractSaveToPdf, SaveToPdf>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -20,4 +20,8 @@
|
|||||||
<ProjectReference Include="..\PlumbingRepairContracts\PlumbingRepairContracts.csproj" />
|
<ProjectReference Include="..\PlumbingRepairContracts\PlumbingRepairContracts.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
|
<Exec Command="copy /Y "$(TargetDir)*.dll" "$(SolutionDir)BusinessLogicImplementationExtensions\*.dll"" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -12,14 +12,16 @@
|
|||||||
public GridViewAutoSize GridViewAutoSize { get; private set; }
|
public GridViewAutoSize GridViewAutoSize { get; private set; }
|
||||||
|
|
||||||
public bool IsUseAutoSize { get; private set; }
|
public bool IsUseAutoSize { get; private set; }
|
||||||
|
public string Format { get; private set; }
|
||||||
|
|
||||||
public ColumnAttribute(string title = "", bool visible = true, int width = 0, GridViewAutoSize gridViewAutoSize = GridViewAutoSize.None, bool isUseAutoSize = false)
|
public ColumnAttribute(string title = "", bool visible = true, int width = 0, GridViewAutoSize gridViewAutoSize = GridViewAutoSize.None, bool isUseAutoSize = false, string format = "")
|
||||||
{
|
{
|
||||||
Title = title;
|
Title = title;
|
||||||
Visible = visible;
|
Visible = visible;
|
||||||
Width = width;
|
Width = width;
|
||||||
GridViewAutoSize = gridViewAutoSize;
|
GridViewAutoSize = gridViewAutoSize;
|
||||||
IsUseAutoSize = isUseAutoSize;
|
IsUseAutoSize = isUseAutoSize;
|
||||||
|
Format = format;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -29,6 +29,14 @@ namespace PlumbingRepairContracts.DI
|
|||||||
}
|
}
|
||||||
// регистрируем зависимости
|
// регистрируем зависимости
|
||||||
ext.RegisterServices();
|
ext.RegisterServices();
|
||||||
|
|
||||||
|
var bsExtensions = ServiceProviderLoader.GetBusinessLogicImplementationExtensions();
|
||||||
|
if (bsExtensions == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей бизнес-логики");
|
||||||
|
}
|
||||||
|
// регистрируем зависимости
|
||||||
|
bsExtensions.RegisterServices();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
namespace PlumbingRepairContracts.DI
|
||||||
|
{
|
||||||
|
public interface IImplementationBusinessLogicExtension
|
||||||
|
{
|
||||||
|
public void RegisterServices();
|
||||||
|
}
|
||||||
|
}
|
@ -36,7 +36,34 @@ namespace PlumbingRepairContracts.DI
|
|||||||
}
|
}
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
|
public static IImplementationBusinessLogicExtension? GetBusinessLogicImplementationExtensions()
|
||||||
|
{
|
||||||
|
IImplementationBusinessLogicExtension? source = null;
|
||||||
|
var files = Directory.GetFiles(TryGetBusinessLogicImplementationExtensionsFolder(), "*.dll", SearchOption.AllDirectories);
|
||||||
|
foreach (var file in files.Distinct())
|
||||||
|
{
|
||||||
|
Assembly asm = Assembly.LoadFrom(file);
|
||||||
|
foreach (var t in asm.GetExportedTypes())
|
||||||
|
{
|
||||||
|
if (t.IsClass && typeof(IImplementationBusinessLogicExtension).IsAssignableFrom(t))
|
||||||
|
{
|
||||||
|
source = (IImplementationBusinessLogicExtension)Activator.CreateInstance(t)!;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
private static string TryGetBusinessLogicImplementationExtensionsFolder()
|
||||||
|
{
|
||||||
|
var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
|
||||||
|
while (directory != null && !directory.GetDirectories("BusinessLogicImplementationExtensions", SearchOption.AllDirectories).Any(x => x.Name == "BusinessLogicImplementationExtensions"))
|
||||||
|
{
|
||||||
|
directory = directory.Parent;
|
||||||
|
}
|
||||||
|
return $"{directory?.FullName}\\BusinessLogicImplementationExtensions";
|
||||||
|
}
|
||||||
|
|
||||||
private static string TryGetImplementationExtensionsFolder()
|
private static string TryGetImplementationExtensionsFolder()
|
||||||
{
|
{
|
||||||
var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
|
var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
|
||||||
|
@ -12,7 +12,7 @@ namespace PlumbingRepairContracts.ViewModels
|
|||||||
public int? ClientId { get; set; }
|
public int? ClientId { get; set; }
|
||||||
[Column(title: "Отправитель", width: 150)]
|
[Column(title: "Отправитель", width: 150)]
|
||||||
public string SenderName { get; set; } = string.Empty;
|
public string SenderName { get; set; } = string.Empty;
|
||||||
[Column(title: "Дата отправления", width: 150)]
|
[Column(title: "Дата отправления", width: 150, format: "Date: dd/MM/yyyy")]
|
||||||
public DateTime DateDelivery { get; set; }
|
public DateTime DateDelivery { get; set; }
|
||||||
[Column(title: "Заголовок", width: 150)]
|
[Column(title: "Заголовок", width: 150)]
|
||||||
public string Subject { get; set; } = string.Empty;
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
@ -36,10 +36,10 @@ namespace PlumbingRepairContracts.ViewModels
|
|||||||
[Column(title: "Статус", width: 150)]
|
[Column(title: "Статус", width: 150)]
|
||||||
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
||||||
|
|
||||||
[Column(title: "Дата создания", width: 150)]
|
[Column(title: "Дата создания", width: 150, format: "Date: dd/MM/yyyy")]
|
||||||
public DateTime DateCreate { get; set; } = DateTime.Now;
|
public DateTime DateCreate { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
[Column(title: "Дата выполнения", width: 150)]
|
[Column(title: "Дата выполнения", width: 150, format: "Date: dd/MM/yyyy")]
|
||||||
public DateTime? DateImplement { get; set; }
|
public DateTime? DateImplement { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,20 +1,22 @@
|
|||||||
using PlumbingRepairDataModels.Models;
|
using PlumbingRepairContracts.Attributes;
|
||||||
|
using PlumbingRepairDataModels.Models;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace PlumbingRepairContracts.ViewModels
|
namespace PlumbingRepairContracts.ViewModels
|
||||||
{
|
{
|
||||||
public class ShopViewModel
|
public class ShopViewModel
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
[Column(visible: false)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
[DisplayName("Название магазина")]
|
[Column(title: "Название магазина", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
||||||
public string ShopName { get; set; } = string.Empty;
|
public string ShopName { get; set; } = string.Empty;
|
||||||
|
|
||||||
[DisplayName("Адрес")]
|
[Column(title: "Адрес", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
||||||
public string Address { get; set; } = string.Empty;
|
public string Address { get; set; } = string.Empty;
|
||||||
[DisplayName("Максимальное количество работ")]
|
[Column(title: "Максимальное количество работ", width: 150)]
|
||||||
public int maxCountWorks { get; set; }
|
public int maxCountWorks { get; set; }
|
||||||
[DisplayName("Дата открытия")]
|
[Column(title: "Дата открытия", width: 150, format: "Date: dd/MM/yyyy")]
|
||||||
public DateTime DateOpening { get; set; }
|
public DateTime DateOpening { get; set; }
|
||||||
public Dictionary<int, (IWorkModel, int)> ShopWorks { get; set; } = new();
|
public Dictionary<int, (IWorkModel, int)> ShopWorks { get; set; } = new();
|
||||||
|
|
||||||
|
@ -4,26 +4,34 @@ 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 Shop
|
[DataContract]
|
||||||
|
public class Shop
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
[DataMember]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public string ShopName { get; set; } = string.Empty;
|
[DataMember]
|
||||||
|
public string ShopName { get; set; } = string.Empty;
|
||||||
[Required]
|
[Required]
|
||||||
public string Address { get; set; } = string.Empty;
|
[DataMember]
|
||||||
|
public string Address { get; set; } = string.Empty;
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime DateOpening { get; set; }
|
[DataMember]
|
||||||
|
public DateTime DateOpening { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public int maxCountWorks { get; set; }
|
[DataMember]
|
||||||
|
public int maxCountWorks { get; set; }
|
||||||
|
|
||||||
private Dictionary<int, (IWorkModel, int)>? _shopWorks = null;
|
private Dictionary<int, (IWorkModel, int)>? _shopWorks = null;
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public Dictionary<int, (IWorkModel, int)> ShopWorks
|
[DataMember]
|
||||||
|
public Dictionary<int, (IWorkModel, int)> ShopWorks
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -24,7 +24,8 @@ namespace PlumbingRepairDatabaseImplement.Models
|
|||||||
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
|
||||||
{
|
{
|
||||||
|
@ -1,23 +1,28 @@
|
|||||||
using PlumbingRepairContracts.BindingModels;
|
using PlumbingRepairContracts.BindingModels;
|
||||||
using PlumbingRepairContracts.ViewModels;
|
using PlumbingRepairContracts.ViewModels;
|
||||||
using PlumbingRepairDataModels.Models;
|
using PlumbingRepairDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace PlumbingRepairFileImplement.Models
|
namespace PlumbingRepairFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Shop : IShopModel
|
public class Shop : IShopModel
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
[DataMember]
|
||||||
|
public int Id { get; private set; }
|
||||||
public string ShopName { get; private set; } = string.Empty;
|
[DataMember]
|
||||||
public string Address { get; private set; } = string.Empty;
|
public string ShopName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public DateTime DateOpening { get; private set; }
|
public string Address { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
|
public DateTime DateOpening { get; private set; }
|
||||||
|
|
||||||
public Dictionary<int, int> Works { get; private set; } = new();
|
public Dictionary<int, int> Works { get; private set; } = new();
|
||||||
|
|
||||||
private Dictionary<int, (IWorkModel, int)>? _shopWorks = null;
|
private Dictionary<int, (IWorkModel, int)>? _shopWorks = null;
|
||||||
public Dictionary<int, (IWorkModel, int)> ShopWorks
|
[DataMember]
|
||||||
|
public Dictionary<int, (IWorkModel, int)> ShopWorks
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -19,8 +19,8 @@ namespace PlumbingRepairFileImplement.Models
|
|||||||
public Dictionary<int, int> Components { get; private set; } = new();
|
public Dictionary<int, int> Components { get; private set; } = new();
|
||||||
|
|
||||||
private Dictionary<int, (IComponentModel, int)>? _workComponents = null;
|
private Dictionary<int, (IComponentModel, int)>? _workComponents = null;
|
||||||
|
[DataMember]
|
||||||
public Dictionary<int, (IComponentModel, int)> WorkComponents
|
public Dictionary<int, (IComponentModel, int)> WorkComponents
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -1,21 +1,25 @@
|
|||||||
using PlumbingRepairContracts.BindingModels;
|
using PlumbingRepairContracts.BindingModels;
|
||||||
using PlumbingRepairContracts.ViewModels;
|
using PlumbingRepairContracts.ViewModels;
|
||||||
using PlumbingRepairDataModels.Models;
|
using PlumbingRepairDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace PlumbingRepairListImplement.Models
|
namespace PlumbingRepairListImplement.Models
|
||||||
{
|
{
|
||||||
public class Shop
|
[DataContract]
|
||||||
|
public class Shop
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public string ShopName { get; private set; } = string.Empty;
|
public string ShopName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public string Address { get; private set; } = string.Empty;
|
public string Address { get; private set; } = string.Empty;
|
||||||
public DateTime DateOpening { get; private set; }
|
[DataMember]
|
||||||
|
public DateTime DateOpening { get; private set; }
|
||||||
public Dictionary<int, (IWorkModel, int)> ShopWorks { get; private set; } = new Dictionary<int, (IWorkModel, int)>();
|
[DataMember]
|
||||||
|
public Dictionary<int, (IWorkModel, int)> ShopWorks { get; private set; } = new Dictionary<int, (IWorkModel, int)>();
|
||||||
public int maxCountWorks { get; private set; }
|
[DataMember]
|
||||||
|
public int maxCountWorks { get; private set; }
|
||||||
|
|
||||||
public static Shop? Create(ShopBindingModel? model)
|
public static Shop? Create(ShopBindingModel? model)
|
||||||
{
|
{
|
||||||
|
@ -14,8 +14,8 @@ namespace PlumbingRepairListImplement.Models
|
|||||||
public string WorkName { get; private set; } = string.Empty;
|
public string WorkName { get; private set; } = string.Empty;
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public double Price { get; private set; }
|
public double Price { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public Dictionary<int, (IComponentModel, int)> WorkComponents { get; private set; } = new Dictionary<int, (IComponentModel, int)>();
|
public Dictionary<int, (IComponentModel, int)> WorkComponents { get; private set; } = new Dictionary<int, (IComponentModel, int)>();
|
||||||
|
|
||||||
public static Work? Create(WorkBindingModel? model)
|
public static Work? Create(WorkBindingModel? model)
|
||||||
{
|
{
|
||||||
|
@ -57,16 +57,6 @@ namespace PlumbingRepairView
|
|||||||
option.SetMinimumLevel(LogLevel.Information);
|
option.SetMinimumLevel(LogLevel.Information);
|
||||||
option.AddNLog("nlog.config");
|
option.AddNLog("nlog.config");
|
||||||
});
|
});
|
||||||
|
|
||||||
DependencyManager.Instance.RegisterType<IComponentLogic, ComponentLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IOrderLogic, OrderLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IWorkLogic, WorkLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IReportLogic, ReportLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IClientLogic, ClientLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IShopLogic, ShopLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IImplementerLogic, ImplementerLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IMessageInfoLogic, MessageInfoLogic>();
|
|
||||||
|
|
||||||
DependencyManager.Instance.RegisterType<AbstractSaveToExcel, SaveToExcel>();
|
DependencyManager.Instance.RegisterType<AbstractSaveToExcel, SaveToExcel>();
|
||||||
DependencyManager.Instance.RegisterType<AbstractSaveToWord, SaveToWord>();
|
DependencyManager.Instance.RegisterType<AbstractSaveToWord, SaveToWord>();
|
||||||
DependencyManager.Instance.RegisterType<AbstractSaveToPdf, SaveToPdf>();
|
DependencyManager.Instance.RegisterType<AbstractSaveToPdf, SaveToPdf>();
|
||||||
@ -80,13 +70,15 @@ namespace PlumbingRepairView
|
|||||||
DependencyManager.Instance.RegisterType<FormCreateOrder>();
|
DependencyManager.Instance.RegisterType<FormCreateOrder>();
|
||||||
DependencyManager.Instance.RegisterType<FormWork>();
|
DependencyManager.Instance.RegisterType<FormWork>();
|
||||||
DependencyManager.Instance.RegisterType<FormWorks>();
|
DependencyManager.Instance.RegisterType<FormWorks>();
|
||||||
DependencyManager.Instance.RegisterType<FormWorkComponent>();
|
DependencyManager.Instance.RegisterType<FormReportShopWorks>();
|
||||||
DependencyManager.Instance.RegisterType<FormReportWorkComponents>();
|
DependencyManager.Instance.RegisterType<FormReportWorkComponents>();
|
||||||
DependencyManager.Instance.RegisterType<FormReportOrders>();
|
DependencyManager.Instance.RegisterType<FormReportOrders>();
|
||||||
DependencyManager.Instance.RegisterType<FormClients>();
|
DependencyManager.Instance.RegisterType<FormClients>();
|
||||||
DependencyManager.Instance.RegisterType<FormImplementers>();
|
DependencyManager.Instance.RegisterType<FormImplementers>();
|
||||||
DependencyManager.Instance.RegisterType<FormImplementer>();
|
DependencyManager.Instance.RegisterType<FormImplementer>();
|
||||||
|
DependencyManager.Instance.RegisterType<FormMail>();
|
||||||
DependencyManager.Instance.RegisterType<FormMails>();
|
DependencyManager.Instance.RegisterType<FormMails>();
|
||||||
|
|
||||||
}
|
}
|
||||||
private static void MailCheck(object obj) => DependencyManager.Instance.Resolve<AbstractMailWorker>()?.MailCheck();
|
private static void MailCheck(object obj) => DependencyManager.Instance.Resolve<AbstractMailWorker>()?.MailCheck();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user