diff --git a/JewelryStore/FormComponents.cs b/JewelryStore/FormComponents.cs index 76cf58a..6071dc4 100644 --- a/JewelryStore/FormComponents.cs +++ b/JewelryStore/FormComponents.cs @@ -32,25 +32,18 @@ namespace JewelryStore } private void LoadData() { - try - { - var list = _logic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["Id"].Visible = false; - dataGridView.Columns["ComponentName"].AutoSizeMode = - DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка компонентов"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки компонентов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + try + { + DataGridView.FillAndConfigGrid(_logic.ReadList(null)); + _logger.LogInformation("Загрузка компонентов"); + + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки компонентов"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } private void buttonAdd_Click(object sender, EventArgs e) { diff --git a/JewelryStore/FormImplementers.cs b/JewelryStore/FormImplementers.cs index 22fa746..5970a0c 100644 --- a/JewelryStore/FormImplementers.cs +++ b/JewelryStore/FormImplementers.cs @@ -96,25 +96,17 @@ namespace JewelryStore private void LoadData() { - try - { - var list = _logic.ReadList(null); - - if (list != null) - { - DataGridView.DataSource = list; - DataGridView.Columns["Id"].Visible = false; - DataGridView.Columns["ImplementerFIO"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - - _logger.LogInformation("Загрузка исполнителей"); - } - - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки исполнителей"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } + try + { + dataGridView.FillAndConfigGrid(_logic.ReadList(null)); + _logger.LogInformation("Загрузка исполнителей"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки исполнителей"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } } } diff --git a/JewelryStore/FormJewels.cs b/JewelryStore/FormJewels.cs index 5f5f06f..fd2ffe0 100644 --- a/JewelryStore/FormJewels.cs +++ b/JewelryStore/FormJewels.cs @@ -27,28 +27,18 @@ namespace JewelryStore private void LoadData() { - try - { - var list = _logic.ReadList(null); + try + { + DataGridView.FillAndConfigGrid(_logic.ReadList(null)); + _logger.LogInformation("Загрузка изделий"); - if (list != null) - { - DataGridView.DataSource = list; - DataGridView.Columns["Id"].Visible = false; - DataGridView.Columns["JewelName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - DataGridView.Columns["JewelComponents"].Visible = false; - - } - - _logger.LogInformation("Загрузка компонентов"); - - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки компонентов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки изделий"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } private void AddButton_Click(object sender, EventArgs e) { diff --git a/JewelryStore/FormMails.cs b/JewelryStore/FormMails.cs index 5e37d56..6e44a70 100644 --- a/JewelryStore/FormMails.cs +++ b/JewelryStore/FormMails.cs @@ -29,15 +29,8 @@ namespace JewelryStore { try { - var list = _logic.ReadList(null); - if (list != null) - { - DataGridView.DataSource = list; - DataGridView.Columns["ClientId"].Visible = false; - DataGridView.Columns["MessageId"].Visible = false; - DataGridView.Columns["Body"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка писем"); + dataGridView.FillAndConfigGrid(_logic.ReadList(null)); + _logger.LogInformation("Загрузка списка писем"); } catch (Exception ex) { diff --git a/JewelryStore/FormMain.cs b/JewelryStore/FormMain.cs index 702f776..a7a23e1 100644 --- a/JewelryStore/FormMain.cs +++ b/JewelryStore/FormMain.cs @@ -42,27 +42,18 @@ namespace JewelryStore } private void LoadData() { - _logger.LogInformation("Загрузка заказов"); - try - { - var list = _orderLogic.ReadList(null); - - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["JewelId"].Visible = false; - dataGridView.Columns["ClientId"].Visible = false; - dataGridView.Columns["ImplementerId"].Visible = false; - } - - _logger.LogInformation("Загрузка заказов"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки заказов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } + try + { + DataGridView.FillAndConfigGrid(_orderLogic.ReadList(null)); + _logger.LogInformation("Загрузка заказов"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки заказов"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } private void компонентыToolStripMenuItem_Click(object sender, EventArgs e) { diff --git a/JewelryStore/Program.cs b/JewelryStore/Program.cs index 81d36ba..1856df7 100644 --- a/JewelryStore/Program.cs +++ b/JewelryStore/Program.cs @@ -11,95 +11,83 @@ using JewelryStoreBusinessLogic.OfficePackage; using JewelryStoreBusinessLogic.OfficePackage.Implements; using JewelryStoreBusinessLogic.MailWorker; using JewelryStoreContracts.BindingModels; +using JewelryStoreContracts.DI; namespace JewelryStore { internal static class Program { - private static ServiceProvider? _serviceProvider; - public static ServiceProvider? ServiceProvider => _serviceProvider; + /// /// The main entry point for the application. /// [STAThread] static void Main() { - // To customize application configuration such as set high DPI - //settings or default font, - // see https://aka.ms/applicationconfiguration. - ApplicationConfiguration.Initialize(); - var services = new ServiceCollection(); - ConfigureServices(services); - _serviceProvider = services.BuildServiceProvider(); - try - { - var mailSender = _serviceProvider.GetService(); - mailSender?.MailConfig(new MailConfigBindingModel - { - MailLogin = System.Configuration.ConfigurationManager.AppSettings["MailLogin"] ?? string.Empty, - MailPassword = System.Configuration.ConfigurationManager.AppSettings["MailPassword"] ?? string.Empty, - SmtpClientHost = System.Configuration.ConfigurationManager.AppSettings["SmtpClientHost"] ?? string.Empty, - SmtpClientPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SmtpClientPort"]), - PopHost = System.Configuration.ConfigurationManager.AppSettings["PopHost"] ?? string.Empty, - PopPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["PopPort"]) - }); + ApplicationConfiguration.Initialize(); + InitDependency(); + try + { + var mailSender = DependencyManager.Instance.Resolve(); mailSender?.MailConfig(new MailConfigBindingModel + { + MailLogin = System.Configuration.ConfigurationManager.AppSettings["MailLogin"] ?? string.Empty, + MailPassword = System.Configuration.ConfigurationManager.AppSettings["MailPassword"] ?? string.Empty, + SmtpClientHost = System.Configuration.ConfigurationManager.AppSettings["SmtpClientHost"] ?? string.Empty, + SmtpClientPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SmtpClientPort"]), + PopHost = System.Configuration.ConfigurationManager.AppSettings["PopHost"] ?? string.Empty, + PopPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["PopPort"]) + }); - // - var timer = new System.Threading.Timer(new TimerCallback(MailCheck!), null, 0, 100000); - } - catch (Exception ex) - { - var logger = _serviceProvider.GetService(); - logger?.LogError(ex, " "); - } - Application.Run(_serviceProvider.GetRequiredService()); - } - private static void ConfigureServices(ServiceCollection services) - { - services.AddLogging(option => - { - option.SetMinimumLevel(LogLevel.Information); - option.AddNLog("nlog.config"); - }); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); + var timer = new System.Threading.Timer(new TimerCallback(MailCheck!), null, 0, 100000); + } + catch (Exception ex) + { + var logger = DependencyManager.Instance.Resolve(); + logger?.LogError(ex, "<22><> <20><> <20> <20><>"); + } + Application.Run(DependencyManager.Instance.Resolve()); + } - services.AddTransient(); - services.AddSingleton(); + private static void InitDependency() + { + DependencyManager.InitDependency(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); + DependencyManager.Instance.AddLogging(option => + { + option.SetMinimumLevel(LogLevel.Information); + option.AddNLog("nlog.config"); + }); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(true); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - } - private static void MailCheck(object obj) => ServiceProvider?.GetService()?.MailCheck(); - } + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + private static void MailCheck(object obj) => DependencyManager.Instance.Resolve()?.MailCheck(); + } } \ No newline at end of file diff --git a/JewelryStoreContracts/DI/ServiceDependencyContainer.cs b/JewelryStoreContracts/DI/ServiceDependencyContainer.cs new file mode 100644 index 0000000..6723d24 --- /dev/null +++ b/JewelryStoreContracts/DI/ServiceDependencyContainer.cs @@ -0,0 +1,62 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewelryStoreContracts.DI +{ + public class ServiceDependencyContainer : IDependencyContainer + { + private ServiceProvider? _serviceProvider; + + private readonly ServiceCollection _serviceCollection; + + public ServiceDependencyContainer() + { + _serviceCollection = new ServiceCollection(); + } + + public void AddLogging(Action configure) + { + _serviceCollection.AddLogging(configure); + } + + public void RegisterType(bool isSingle) where U : class, T where T : class + { + if (isSingle) + { + _serviceCollection.AddSingleton(); + } + else + { + _serviceCollection.AddTransient(); + } + _serviceProvider = null; + } + + public void RegisterType(bool isSingle) where T : class + { + if (isSingle) + { + _serviceCollection.AddSingleton(); + } + else + { + _serviceCollection.AddTransient(); + } + _serviceProvider = null; + } + + public T Resolve() + { + if (_serviceProvider == null) + { + _serviceProvider = _serviceCollection.BuildServiceProvider(); + } + return _serviceProvider.GetService()!; + } + } +} diff --git a/JewelryStoreContracts/DI/UnityDependencyContainer.cs b/JewelryStoreContracts/DI/UnityDependencyContainer.cs new file mode 100644 index 0000000..e83532e --- /dev/null +++ b/JewelryStoreContracts/DI/UnityDependencyContainer.cs @@ -0,0 +1,42 @@ +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 JewelryStoreContracts.DI +{ + public class UnityDependencyContainer : IDependencyContainer + { + private readonly IUnityContainer _container; + + public UnityDependencyContainer() + { + _container = new UnityContainer(); + } + + public void AddLogging(Action configure) + { + var factory = LoggerFactory.Create(configure); + _container.AddExtension(new LoggingExtension(factory)); + } + + public void RegisterType(bool isSingle) where T : class + { + _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); + + } + + public T Resolve() + { + return _container.Resolve(); + } + + void IDependencyContainer.RegisterType(bool isSingle) + { + _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); + } + } +} diff --git a/JewelryStoreContracts/JewelryStoreContracts.csproj b/JewelryStoreContracts/JewelryStoreContracts.csproj index a196f49..0d7edcf 100644 --- a/JewelryStoreContracts/JewelryStoreContracts.csproj +++ b/JewelryStoreContracts/JewelryStoreContracts.csproj @@ -9,6 +9,7 @@ + diff --git a/JewelryStoreContracts/ViewModels/ClientViewModel.cs b/JewelryStoreContracts/ViewModels/ClientViewModel.cs index 504ee45..9ea58da 100644 --- a/JewelryStoreContracts/ViewModels/ClientViewModel.cs +++ b/JewelryStoreContracts/ViewModels/ClientViewModel.cs @@ -1,4 +1,5 @@ -using JewelryStoreDataModels.Models; +using JewelryStoreContracts.Attributes; +using JewelryStoreDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,9 +11,13 @@ namespace JewelryStoreContracts.ViewModels { public class ClientViewModel : IClientModel { - public int Id { get; set; } - public string ClientFIO { get; set; } = string.Empty; - public string Email { get; set; } = string.Empty; - public string Password { get; set; } = string.Empty; + [Column(visible: false)] + public int Id { get; set; } + [Column("ФИО клиента", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string ClientFIO { get; set; } = string.Empty; + [Column("Логин (эл. почта)", width: 150)] + public string Email { get; set; } = string.Empty; + [Column("Пароль", width: 150)] + public string Password { get; set; } = string.Empty; } } diff --git a/JewelryStoreContracts/ViewModels/ComponentViewModel.cs b/JewelryStoreContracts/ViewModels/ComponentViewModel.cs index dcd3252..dd85e89 100644 --- a/JewelryStoreContracts/ViewModels/ComponentViewModel.cs +++ b/JewelryStoreContracts/ViewModels/ComponentViewModel.cs @@ -1,4 +1,5 @@ -using JewelryStoreDataModels.Models; +using JewelryStoreContracts.Attributes; +using JewelryStoreDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,10 +11,11 @@ namespace JewelryStoreContracts.ViewModels { public class ComponentViewModel : IComponentModel { - public int Id { get; set; } - [DisplayName("Название компонента")] - public string ComponentName { get; set; } = string.Empty; - [DisplayName("Цена")] - public double Cost { get; set; } + [Column(visible: false)] + public int Id { get; set; } + [Column("Название компонента", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string ComponentName { get; set; } = string.Empty; + [Column("Цена", width: 80)] + public double Cost { get; set; } } } diff --git a/JewelryStoreContracts/ViewModels/ImplementerViewModel.cs b/JewelryStoreContracts/ViewModels/ImplementerViewModel.cs index f84e6f7..b14ca61 100644 --- a/JewelryStoreContracts/ViewModels/ImplementerViewModel.cs +++ b/JewelryStoreContracts/ViewModels/ImplementerViewModel.cs @@ -1,4 +1,5 @@ -using JewelryStoreDataModels.Models; +using JewelryStoreContracts.Attributes; +using JewelryStoreDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,18 +11,16 @@ namespace JewelryStoreContracts.ViewModels { public class ImplementerViewModel : IImplementerModel { - public int Id { get; set; } + [Column(visible: false)] + public int Id { get; set; } + [Column("ФИО исполнителя", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string ImplementerFIO { get; set; } = string.Empty; + [Column("Пароль", width: 150)] - [DisplayName("ФИО исполнителя")] - public string ImplementerFIO { get; set; } = string.Empty; - - [DisplayName("Пароль")] - public string Password { get; set; } = string.Empty; - - [DisplayName("Стаж работы")] - public int WorkExperience { get; set; } - - [DisplayName("Квалификация")] - public int Qualification { get; set; } + public string Password { get; set; } = string.Empty; + [Column("Стаж работы", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public int WorkExperience { get; set; } + [Column("Квалификация", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public int Qualification { get; set; } } } diff --git a/JewelryStoreContracts/ViewModels/JewelViewModel.cs b/JewelryStoreContracts/ViewModels/JewelViewModel.cs index f09420f..bae786d 100644 --- a/JewelryStoreContracts/ViewModels/JewelViewModel.cs +++ b/JewelryStoreContracts/ViewModels/JewelViewModel.cs @@ -11,9 +11,7 @@ namespace JewelryStoreContracts.ViewModels public class JewelViewModel : IJewelModel { public int Id { get; set; } - [DisplayName("Название драгоценности")] public string JewelName { get; set; } = string.Empty; - [DisplayName("Цена")] public double Price { get; set; } public Dictionary JewelComponents { diff --git a/JewelryStoreContracts/ViewModels/MessageInfoViewModel.cs b/JewelryStoreContracts/ViewModels/MessageInfoViewModel.cs index caadf29..766c416 100644 --- a/JewelryStoreContracts/ViewModels/MessageInfoViewModel.cs +++ b/JewelryStoreContracts/ViewModels/MessageInfoViewModel.cs @@ -1,4 +1,5 @@ -using JewelryStoreDataModels.Models; +using JewelryStoreContracts.Attributes; +using JewelryStoreDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,20 +11,17 @@ namespace JewelryStoreContracts.ViewModels { public class MessageInfoViewModel : IMessageInfoModel { + [Column(visible: false)] public string MessageId { get; set; } = string.Empty; - + [Column(visible: false)] public int? ClientId { get; set; } - - [DisplayName("Имя отправителя")] + [Column("Отправитель", gridViewAutoSize: GridViewAutoSize.DisplayedCells, isUseAutoSize: true)] public string SenderName { get; set; } = string.Empty; - - [DisplayName("Дата отправления")] + [Column("Дата письма", width: 100)] public DateTime DateDelivery { get; set; } - - [DisplayName("Тема")] + [Column("Заголовок", width: 150)] public string Subject { get; set; } = string.Empty; - - [DisplayName("Содержание")] + [Column("Текст", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string Body { get; set; } = string.Empty; } } diff --git a/JewelryStoreContracts/ViewModels/OrderViewModel.cs b/JewelryStoreContracts/ViewModels/OrderViewModel.cs index fcb9cce..1eb4cc7 100644 --- a/JewelryStoreContracts/ViewModels/OrderViewModel.cs +++ b/JewelryStoreContracts/ViewModels/OrderViewModel.cs @@ -1,4 +1,5 @@ -using JewelryStoreDataModels.Enums; +using JewelryStoreContracts.Attributes; +using JewelryStoreDataModels.Enums; using JewelryStoreDataModels.Models; using System; using System.Collections.Generic; @@ -11,32 +12,32 @@ namespace JewelryStoreContracts.ViewModels { public class OrderViewModel : IOrderModel { - [DisplayName("Номер")] - public int Id { get; set; } - public int JewelId { get; set; } - public int ClientId { get; set; } - [DisplayName("Драгоценность")] - public string JewelName { get; set; } = string.Empty; + [Column("Номер", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public int Id { get; set; } - [DisplayName("ФИО исполнителя")] - public string ImplementerFIO { get; set; } = string.Empty; - - [DisplayName("Клиент")] - public string ClientFIO { get; set; } = string.Empty; - - [DisplayName("Количество")] - public int Count { get; set; } - - [DisplayName("Сумма")] - public double Sum { get; set; } - [DisplayName("Статус")] - public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; - [DisplayName("Дата создания")] - public DateTime DateCreate { get; set; } = DateTime.Now; - [DisplayName("Дата выполнения")] - public DateTime? DateImplement { get; set; } - public int? ImplementerId { get; set; } + [Column(visible: false)] + public int JewelId { get; set; } + [Column(visible: false)] + public int ClientId { get; set; } + [Column("Изделие", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public string JewelName { get; set; } = string.Empty; + [Column("Фамилия исполнителя", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string ImplementerFIO { get; set; } = string.Empty; + [Column("Фамилия клиента", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string ClientFIO { get; set; } = string.Empty; + [Column("Количество", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public int Count { get; set; } + [Column("Сумма", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public double Sum { get; set; } + [Column("Статус", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] + public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; + [Column("Дата создания", width: 100)] + public DateTime DateCreate { get; set; } = DateTime.Now; + [Column("Дата выполнения", width: 100)] + public DateTime? DateImplement { get; set; } + [Column(visible: false)] + public int? ImplementerId { get; set; } } diff --git a/JewelryStoreDatabaseImplement/DatabaseImplementationExtension.cs b/JewelryStoreDatabaseImplement/DatabaseImplementationExtension.cs new file mode 100644 index 0000000..fe52687 --- /dev/null +++ b/JewelryStoreDatabaseImplement/DatabaseImplementationExtension.cs @@ -0,0 +1,28 @@ +using JewelryStoreContracts.DI; +using JewelryStoreContracts.StoragesContracts; +using JewelryStoreDatabaseImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewelryStoreDatabaseImplement +{ + public class DatabaseImplementationExtension : IImplementationExtension + { + public int Priority => 2; + + public void RegisterServices() + { + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + + } +} diff --git a/JewelryStoreDatabaseImplement/Models/Client.cs b/JewelryStoreDatabaseImplement/Models/Client.cs index b3248da..f405e0c 100644 --- a/JewelryStoreDatabaseImplement/Models/Client.cs +++ b/JewelryStoreDatabaseImplement/Models/Client.cs @@ -8,18 +8,25 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Runtime.Serialization; namespace JewelryStoreDatabaseImplement.Models { - public class Client : IClientModel + [DataContract] + + public class Client : IClientModel { - public int Id { get; private set; } + [DataMember] + public int Id { get; private set; } [Required] - public string ClientFIO { get; set; } = string.Empty; + [DataMember] + public string ClientFIO { get; set; } = string.Empty; [Required] - public string Email { get; set; } = string.Empty; + [DataMember] + public string Email { get; set; } = string.Empty; [Required] - public string Password { get; set; } = string.Empty; + [DataMember] + public string Password { get; set; } = string.Empty; [ForeignKey("ClientId")] public virtual List Orders { get; set; } = new(); diff --git a/JewelryStoreDatabaseImplement/Models/Component.cs b/JewelryStoreDatabaseImplement/Models/Component.cs index 3e9d653..5be17c4 100644 --- a/JewelryStoreDatabaseImplement/Models/Component.cs +++ b/JewelryStoreDatabaseImplement/Models/Component.cs @@ -4,18 +4,24 @@ using JewelryStoreDatabaseImplement.Models; using JewelryStoreDataModels.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; namespace JewelryStoreDatabaseImplement.Models { - public class Component : IComponentModel + [DataContract] + + public class Component : IComponentModel { - public int Id { get; private set; } + [DataMember] + public int Id { get; private set; } [Required] - public string ComponentName { get; private set; } = string.Empty; + [DataMember] + public string ComponentName { get; private set; } = string.Empty; [Required] - public double Cost { get; set; } + [DataMember] + public double Cost { get; set; } [ForeignKey("ComponentId")] public virtual List JewelComponents { get; set; } = new(); diff --git a/JewelryStoreDatabaseImplement/Models/Implementer.cs b/JewelryStoreDatabaseImplement/Models/Implementer.cs index 71b05b5..8301312 100644 --- a/JewelryStoreDatabaseImplement/Models/Implementer.cs +++ b/JewelryStoreDatabaseImplement/Models/Implementer.cs @@ -8,24 +8,32 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Runtime.Serialization; namespace JewelryStoreDatabaseImplement.Models { - public class Implementer : IImplementerModel + [DataContract] + + public class Implementer : IImplementerModel { [Required] - public string ImplementerFIO { get; private set; } = string.Empty; + [DataMember] + public string ImplementerFIO { get; private set; } = string.Empty; [Required] - public string Password { get; private set; } = string.Empty; + [DataMember] + public string Password { get; private set; } = string.Empty; [Required] - public int WorkExperience { get; private set; } + [DataMember] + public int WorkExperience { get; private set; } [Required] - public int Qualification { get; private set; } + [DataMember] + public int Qualification { get; private set; } - public int Id { get; private set; } + [DataMember] + public int Id { get; private set; } [ForeignKey("ImplementerId")] public virtual List Orders { get; private set; } = new(); diff --git a/JewelryStoreDatabaseImplement/Models/Jewel.cs b/JewelryStoreDatabaseImplement/Models/Jewel.cs index 0d01025..a2d6055 100644 --- a/JewelryStoreDatabaseImplement/Models/Jewel.cs +++ b/JewelryStoreDatabaseImplement/Models/Jewel.cs @@ -8,23 +8,30 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Runtime.Serialization; namespace JewelryStoreDatabaseImplement.Models { - public class Jewel : IJewelModel + [DataContract] + + public class Jewel : IJewelModel { - public int Id { get; set; } + [DataMember] + public int Id { get; set; } [Required] - public string JewelName { get; set; } = string.Empty; + [DataMember] + public string JewelName { get; set; } = string.Empty; [Required] - public double Price { get; set; } + [DataMember] + public double Price { get; set; } private Dictionary? _jewelComponents = null; [NotMapped] - public Dictionary JewelComponents + [DataMember] + public Dictionary JewelComponents { get { diff --git a/JewelryStoreDatabaseImplement/Models/JewelComponent.cs b/JewelryStoreDatabaseImplement/Models/JewelComponent.cs index 79fa697..79b887c 100644 --- a/JewelryStoreDatabaseImplement/Models/JewelComponent.cs +++ b/JewelryStoreDatabaseImplement/Models/JewelComponent.cs @@ -2,23 +2,30 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace JewelryStoreDatabaseImplement.Models { - public class JewelComponent + [DataContract] + + public class JewelComponent { - public int Id { get; set; } + [DataMember] + public int Id { get; set; } [Required] - public int JewelId { get; set; } + [DataMember] + public int JewelId { get; set; } [Required] - public int ComponentId { get; set; } + [DataMember] + public int ComponentId { get; set; } [Required] - public int Count { get; set; } + [DataMember] + public int Count { get; set; } public virtual Component Component { get; set; } = new(); public virtual Jewel Jewel { get; set; } = new(); diff --git a/JewelryStoreDatabaseImplement/Models/Message.cs b/JewelryStoreDatabaseImplement/Models/Message.cs index 6e9aaf3..e3ba8d4 100644 --- a/JewelryStoreDatabaseImplement/Models/Message.cs +++ b/JewelryStoreDatabaseImplement/Models/Message.cs @@ -5,14 +5,18 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace JewelryStoreDatabaseImplement.Models { + [DataContract] + public class Message: IMessageInfoModel { [Key] + [DataMember] public string MessageId { get; private set; } = string.Empty; public int? ClientId { get; private set; } [Required] diff --git a/JewelryStoreDatabaseImplement/Models/Order.cs b/JewelryStoreDatabaseImplement/Models/Order.cs index 97d4cfe..f5174e8 100644 --- a/JewelryStoreDatabaseImplement/Models/Order.cs +++ b/JewelryStoreDatabaseImplement/Models/Order.cs @@ -8,30 +8,37 @@ using JewelryStoreContracts.BindingModels; using JewelryStoreDataModels.Models; using JewelryStoreDataModels.Enums; using System.ComponentModel.DataAnnotations; - +using System.Runtime.Serialization; namespace JewelryStoreDatabaseImplement.Models { - public class Order : IOrderModel + [DataContract] + + public class Order : IOrderModel { public int Id { get; private set; } - - public int JewelId { get; private set; } + [DataMember] + public int JewelId { get; private set; } [Required] - public int ClientId { get; set; } - public int? ImplementerId { get; private set; } - - public string JewelName { get; private set; } = string.Empty; + [DataMember] + public int ClientId { get; set; } + [DataMember] + public int? ImplementerId { get; private set; } + [DataMember] + public string JewelName { get; private set; } = string.Empty; [Required] - public int Count { get; private set; } + [DataMember] + public int Count { get; private set; } [Required] - public double Sum { get; private set; } + [DataMember] + public double Sum { get; private set; } [Required] - public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; + [DataMember] + public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; [Required] public DateTime DateCreate { get; private set; } = DateTime.Now; diff --git a/JewelryStoreListImplement/Implements/BackUpInfo.cs b/JewelryStoreListImplement/Implements/BackUpInfo.cs new file mode 100644 index 0000000..a1f8e0f --- /dev/null +++ b/JewelryStoreListImplement/Implements/BackUpInfo.cs @@ -0,0 +1,22 @@ +using JewelryStoreContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewelryStoreListImplement.Implements +{ + public class BackUpInfo : IBackUpInfo + { + public List? GetList() where T : class, new() + { + throw new NotImplementedException(); + } + + public Type? GetTypeByModelInterface(string modelInterfaceName) + { + throw new NotImplementedException(); + } + } +} diff --git a/JewelryStoreListImplement/Implements/ImplementerStorage.cs b/JewelryStoreListImplement/Implements/ImplementerStorage.cs index 42077eb..d8f37c0 100644 --- a/JewelryStoreListImplement/Implements/ImplementerStorage.cs +++ b/JewelryStoreListImplement/Implements/ImplementerStorage.cs @@ -1,5 +1,6 @@ using JewelryStoreContracts.BindingModels; using JewelryStoreContracts.SearchModels; +using JewelryStoreContracts.StoragesContracts; using JewelryStoreContracts.ViewModels; using JewelryStoreListImplement.Models; using System; @@ -10,7 +11,7 @@ using System.Threading.Tasks; namespace JewelryStoreListImplement.Implements { - public class ImplementerStorage + public class ImplementerStorage : IImplementerStorage { private readonly DataListSingleton _source; public ImplementerStorage() diff --git a/JewelryStoreListImplement/ListImplementationExtension.cs b/JewelryStoreListImplement/ListImplementationExtension.cs new file mode 100644 index 0000000..f91a70e --- /dev/null +++ b/JewelryStoreListImplement/ListImplementationExtension.cs @@ -0,0 +1,26 @@ +using JewelryStoreContracts.DI; +using JewelryStoreContracts.StoragesContracts; +using JewelryStoreListImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewelryStoreListImplement +{ + public class ListImplementationExtension : IImplementationExtension + { + public int Priority => 0; + public void RegisterServices() + { + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + } +}