From e67ca87121e740cb2540dd9b2c9685903991046e Mon Sep 17 00:00:00 2001 From: tellsense Date: Sat, 1 Jun 2024 17:37:58 +0400 Subject: [PATCH 1/9] =?UTF-8?q?8=20=D0=BB=D0=B0=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SushiBar/SushiBarBusinessLogic/BackUpLogic.cs | 103 ++++++++++ .../Attributes/ColumnAttribute.cs | 25 +++ .../Attributes/GridViewAutoSize.cs | 27 +++ .../BindingModels/BackUpSaveBinidngModel.cs | 13 ++ .../BindingModels/MessageInfoBindingModel.cs | 1 + .../BusinessLogicsContracts/IBackUpLogic.cs | 14 ++ .../SushiBarContracts/DI/DependencyManager.cs | 66 +++++++ .../DI/IDependencyContainer.cs | 40 ++++ .../DI/IImplementationExtension.cs | 17 ++ .../DI/ServiceDependencyContainer.cs | 62 ++++++ .../DI/ServiceProviderLoader.cs | 55 ++++++ .../StoragesContracts/IBackUpInfo.cs | 15 ++ .../ViewModels/ClientViewModel.cs | 9 +- .../ViewModels/ComponentViewModel.cs | 10 +- .../ViewModels/ImplementerViewModel.cs | 30 +-- .../ViewModels/MessageInfoViewModel.cs | 18 +- .../ViewModels/OrderViewModel.cs | 61 +++--- .../ViewModels/SushiViewModel.cs | 11 +- .../SushiBarDataModels/IMessageInfoModel.cs | 2 +- .../SushiBarDatabaseImplement/BackUpInfo.cs | 32 +++ SushiBar/SushiBarDatabaseImplement/Client.cs | 116 ++++++----- .../SushiBarDatabaseImplement/Component.cs | 23 ++- .../ImplementationExtension.cs | 28 +++ .../SushiBarDatabaseImplement/Implementer.cs | 121 ++++++------ .../SushiBarDatabaseImplement/MessageInfo.cs | 12 +- SushiBar/SushiBarDatabaseImplement/Order.cs | 147 +++++++------- SushiBar/SushiBarDatabaseImplement/Sushi.cs | 10 +- SushiBar/SushiBarFileImplement/BackUpInfo.cs | 44 +++++ .../ImplementationExtension.cs | 29 +++ SushiBar/SushiBarFileImplement/MessageInfo.cs | 2 + SushiBar/SushiBarListImplement/MessageInfo.cs | 2 + .../SushiBarView/DataGridViewExtension.cs | 51 +++++ SushiBar/SushiBarView/FormClients.cs | 12 +- SushiBar/SushiBarView/FormComponents.cs | 43 ++-- SushiBar/SushiBarView/FormImplementers.cs | 185 +++++++++--------- SushiBar/SushiBarView/FormMail.cs | 10 +- SushiBar/SushiBarView/FormMain.cs | 100 +++++----- SushiBar/SushiBarView/FormSushi.cs | 67 +++---- SushiBar/SushiBarView/FormSushis.cs | 32 +-- SushiBar/SushiBarView/Program.cs | 100 +++++----- 40 files changed, 1200 insertions(+), 545 deletions(-) create mode 100644 SushiBar/SushiBarBusinessLogic/BackUpLogic.cs create mode 100644 SushiBar/SushiBarContracts/Attributes/ColumnAttribute.cs create mode 100644 SushiBar/SushiBarContracts/Attributes/GridViewAutoSize.cs create mode 100644 SushiBar/SushiBarContracts/BindingModels/BackUpSaveBinidngModel.cs create mode 100644 SushiBar/SushiBarContracts/BusinessLogicsContracts/IBackUpLogic.cs create mode 100644 SushiBar/SushiBarContracts/DI/DependencyManager.cs create mode 100644 SushiBar/SushiBarContracts/DI/IDependencyContainer.cs create mode 100644 SushiBar/SushiBarContracts/DI/IImplementationExtension.cs create mode 100644 SushiBar/SushiBarContracts/DI/ServiceDependencyContainer.cs create mode 100644 SushiBar/SushiBarContracts/DI/ServiceProviderLoader.cs create mode 100644 SushiBar/SushiBarContracts/StoragesContracts/IBackUpInfo.cs create mode 100644 SushiBar/SushiBarDatabaseImplement/BackUpInfo.cs create mode 100644 SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs create mode 100644 SushiBar/SushiBarFileImplement/BackUpInfo.cs create mode 100644 SushiBar/SushiBarFileImplement/ImplementationExtension.cs create mode 100644 SushiBar/SushiBarView/DataGridViewExtension.cs diff --git a/SushiBar/SushiBarBusinessLogic/BackUpLogic.cs b/SushiBar/SushiBarBusinessLogic/BackUpLogic.cs new file mode 100644 index 0000000..d820434 --- /dev/null +++ b/SushiBar/SushiBarBusinessLogic/BackUpLogic.cs @@ -0,0 +1,103 @@ +using Microsoft.Extensions.Logging; +using SushiBarContracts.BindingModels; +using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.StoragesContracts; +using SushiBarDataModels; +using System; +using System.Collections.Generic; +using System.IO.Compression; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarBusinessLogic +{ + public class BackUpLogic : IBackUpLogic + { + private readonly ILogger _logger; + + private readonly IBackUpInfo _backUpInfo; + + public BackUpLogic(ILogger logger, IBackUpInfo backUpInfo) + { + _logger = logger; + _backUpInfo = backUpInfo; + } + + public void CreateBackUp(BackUpSaveBinidngModel model) + { + if (_backUpInfo == null) + { + return; + } + try + { + _logger.LogDebug("Clear folder"); + var dirInfo = new DirectoryInfo(model.FolderName); + if (dirInfo.Exists) + { + foreach (var file in dirInfo.GetFiles()) + { + file.Delete(); + } + } + _logger.LogDebug("Delete archive"); + string fileName = $"{model.FolderName}.zip"; + if (File.Exists(fileName)) + { + File.Delete(fileName); + } + // берем метод для сохранения + _logger.LogDebug("Get assembly"); + var typeIId = typeof(IId); + var assembly = typeIId.Assembly; + if (assembly == null) + { + throw new ArgumentNullException("Сборка не найдена", nameof(assembly)); + } + var types = assembly.GetTypes(); + var method = GetType().GetMethod("SaveToFile", BindingFlags.NonPublic | BindingFlags.Instance); + _logger.LogDebug("Find {count} types", types.Length); + foreach (var type in types) + { + if (type.IsInterface && type.GetInterface(typeIId.Name) != null) + { + var modelType = _backUpInfo.GetTypeByModelInterface(type.Name); + if (modelType == null) + { + throw new InvalidOperationException($"Не найден класс-модель для {type.Name}"); + } + _logger.LogDebug("Call SaveToFile method for {name} type", type.Name); + // вызываем метод на выполнение + method?.MakeGenericMethod(modelType).Invoke(this, new object[] { model.FolderName }); + } + } + _logger.LogDebug("Create zip and remove folder"); + // архивируем + ZipFile.CreateFromDirectory(model.FolderName, fileName); + // удаляем папку + dirInfo.Delete(true); + } + catch (Exception) + { + throw; + } + } + + private void SaveToFile(string folderName) where T : class, new() + { + var records = _backUpInfo.GetList(); + if (records == null) + { + _logger.LogWarning("{type} type get null list", typeof(T).Name); + return; + } + var jsonFormatter = new DataContractJsonSerializer(typeof(List)); + using var fs = new FileStream(string.Format("{0}/{1}.json", folderName, typeof(T).Name), FileMode.OpenOrCreate); + jsonFormatter.WriteObject(fs, records); + } + } +} + diff --git a/SushiBar/SushiBarContracts/Attributes/ColumnAttribute.cs b/SushiBar/SushiBarContracts/Attributes/ColumnAttribute.cs new file mode 100644 index 0000000..6f9c44b --- /dev/null +++ b/SushiBar/SushiBarContracts/Attributes/ColumnAttribute.cs @@ -0,0 +1,25 @@ +namespace SushiBarContracts.Attributes +{ + [AttributeUsage(AttributeTargets.Property)] + public class ColumnAttribute : Attribute + { + public string Title { get; private set; } + + public bool Visible { get; private set; } + + public int Width { get; private set; } + + public GridViewAutoSize GridViewAutoSize { get; private set; } + + public bool IsUseAutoSize { get; private set; } + + public ColumnAttribute(string title = "", bool visible = true, int width = 0, GridViewAutoSize gridViewAutoSize = GridViewAutoSize.None, bool isUseAutoSize = false) + { + Title = title; + Visible = visible; + Width = width; + GridViewAutoSize = gridViewAutoSize; + IsUseAutoSize = isUseAutoSize; + } + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/Attributes/GridViewAutoSize.cs b/SushiBar/SushiBarContracts/Attributes/GridViewAutoSize.cs new file mode 100644 index 0000000..796e101 --- /dev/null +++ b/SushiBar/SushiBarContracts/Attributes/GridViewAutoSize.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.Attributes +{ + public enum GridViewAutoSize + { + NotSet = 0, + + None = 1, + + ColumnHeader = 2, + + AllCellsExceptHeader = 4, + + AllCells = 6, + + DisplayedCellsExceptHeader = 8, + + DisplayedCells = 10, + + Fill = 16 + } +} diff --git a/SushiBar/SushiBarContracts/BindingModels/BackUpSaveBinidngModel.cs b/SushiBar/SushiBarContracts/BindingModels/BackUpSaveBinidngModel.cs new file mode 100644 index 0000000..7b93ace --- /dev/null +++ b/SushiBar/SushiBarContracts/BindingModels/BackUpSaveBinidngModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.BindingModels +{ + public class BackUpSaveBinidngModel + { + public string FolderName { get; set; } = string.Empty; + } +} diff --git a/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs b/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs index b377905..1f1f4ce 100644 --- a/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs +++ b/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs @@ -15,5 +15,6 @@ namespace SushiBarContracts.BindingModels public string Subject { get; set; } = string.Empty; public string Body { get; set; } = string.Empty; public DateTime DateDelivery { get; set; } + public int Id => throw new NotImplementedException(); } } diff --git a/SushiBar/SushiBarContracts/BusinessLogicsContracts/IBackUpLogic.cs b/SushiBar/SushiBarContracts/BusinessLogicsContracts/IBackUpLogic.cs new file mode 100644 index 0000000..b988a62 --- /dev/null +++ b/SushiBar/SushiBarContracts/BusinessLogicsContracts/IBackUpLogic.cs @@ -0,0 +1,14 @@ +using SushiBarContracts.BindingModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.BusinessLogicsContracts +{ + public interface IBackUpLogic + { + void CreateBackUp(BackUpSaveBinidngModel model); + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/DI/DependencyManager.cs b/SushiBar/SushiBarContracts/DI/DependencyManager.cs new file mode 100644 index 0000000..0c76057 --- /dev/null +++ b/SushiBar/SushiBarContracts/DI/DependencyManager.cs @@ -0,0 +1,66 @@ +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.DI +{ + public class DependencyManager + { + private readonly IDependencyContainer _dependencyManager; + + private static DependencyManager? _manager; + + private static readonly object _locjObject = new(); + + private DependencyManager() + { + _dependencyManager = new ServiceDependencyContainer(); + } + + public static DependencyManager Instance { get { if (_manager == null) { lock (_locjObject) { _manager = new DependencyManager(); } } return _manager; } } + + /// + /// Иницализация библиотек, в которых идут установки зависомстей + /// + public static void InitDependency() + { + var ext = ServiceProviderLoader.GetImplementationExtensions(); + if (ext == null) + { + throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей по модулям"); + } + // регистрируем зависимости + ext.RegisterServices(); + } + + /// + /// Регистрация логгера + /// + /// + public void AddLogging(Action configure) => _dependencyManager.AddLogging(configure); + + /// + /// Добавление зависимости + /// + /// + /// + public void RegisterType(bool isSingle = false) where U : class, T where T : class => _dependencyManager.RegisterType(isSingle); + + /// + /// Добавление зависимости + /// + /// + /// + public void RegisterType(bool isSingle = false) where T : class => _dependencyManager.RegisterType(isSingle); + + /// + /// Получение класса со всеми зависмостями + /// + /// + /// + public T Resolve() => _dependencyManager.Resolve(); + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/DI/IDependencyContainer.cs b/SushiBar/SushiBarContracts/DI/IDependencyContainer.cs new file mode 100644 index 0000000..37cbf0b --- /dev/null +++ b/SushiBar/SushiBarContracts/DI/IDependencyContainer.cs @@ -0,0 +1,40 @@ +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.DI +{ + public interface IDependencyContainer + { + /// + /// Регистрация логгера + /// + /// + void AddLogging(Action configure); + + /// + /// Добавление зависимости + /// + /// + /// + /// + void RegisterType(bool isSingle) where U : class, T where T : class; + + /// + /// Добавление зависимости + /// + /// + /// + void RegisterType(bool isSingle) where T : class; + + /// + /// Получение класса со всеми зависмостями + /// + /// + /// + T Resolve(); + } +} diff --git a/SushiBar/SushiBarContracts/DI/IImplementationExtension.cs b/SushiBar/SushiBarContracts/DI/IImplementationExtension.cs new file mode 100644 index 0000000..6e9a8b1 --- /dev/null +++ b/SushiBar/SushiBarContracts/DI/IImplementationExtension.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.DI +{ + public interface IImplementationExtension + { + public int Priority { get; } + /// + /// Регистрация сервисов + /// + public void RegisterServices(); + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/DI/ServiceDependencyContainer.cs b/SushiBar/SushiBarContracts/DI/ServiceDependencyContainer.cs new file mode 100644 index 0000000..65b3e4a --- /dev/null +++ b/SushiBar/SushiBarContracts/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 SushiBarContracts.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/SushiBar/SushiBarContracts/DI/ServiceProviderLoader.cs b/SushiBar/SushiBarContracts/DI/ServiceProviderLoader.cs new file mode 100644 index 0000000..c049275 --- /dev/null +++ b/SushiBar/SushiBarContracts/DI/ServiceProviderLoader.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.DI +{ + public class ServiceProviderLoader + { + /// + /// Загрузка всех классов-реализаций IImplementationExtension + /// + /// + public static IImplementationExtension? GetImplementationExtensions() + { + IImplementationExtension? source = null; + var files = Directory.GetFiles(TryGetImplementationExtensionsFolder(), "*.dll", SearchOption.AllDirectories); + foreach (var file in files.Distinct()) + { + Assembly asm = Assembly.LoadFrom(file); + foreach (var t in asm.GetExportedTypes()) + { + if (t.IsClass && typeof(IImplementationExtension).IsAssignableFrom(t)) + { + if (source == null) + { + source = (IImplementationExtension)Activator.CreateInstance(t)!; + } + else + { + var newSource = (IImplementationExtension)Activator.CreateInstance(t)!; + if (newSource.Priority > source.Priority) + { + source = newSource; + } + } + } + } + } + return source; + } + + private static string TryGetImplementationExtensionsFolder() + { + var directory = new DirectoryInfo(Directory.GetCurrentDirectory()); + while (directory != null && !directory.GetDirectories("ImplementationExtensions", SearchOption.AllDirectories).Any(x => x.Name == "ImplementationExtensions")) + { + directory = directory.Parent; + } + return $"{directory?.FullName}\\ImplementationExtensions"; + } + } +} diff --git a/SushiBar/SushiBarContracts/StoragesContracts/IBackUpInfo.cs b/SushiBar/SushiBarContracts/StoragesContracts/IBackUpInfo.cs new file mode 100644 index 0000000..d51e70a --- /dev/null +++ b/SushiBar/SushiBarContracts/StoragesContracts/IBackUpInfo.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarContracts.StoragesContracts +{ + public interface IBackUpInfo + { + List? GetList() where T : class, new(); + + Type? GetTypeByModelInterface(string modelInterfaceName); + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs index 2b6bbaf..8e1896c 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs @@ -6,17 +6,20 @@ using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using SushiBarContracts.Attributes; +using SushiBarDataModels.Models; namespace SushiBarContracts.ViewModels { public class ClientViewModel : IClientModel { + [Column(visible: false)] public int Id { get; set; } - [DisplayName("ФИО клиента")] + [Column(title: "ФИО клиента", width: 150)] public string ClientFIO { get; set; } = string.Empty; - [DisplayName("Логин (эл. почта)")] + [Column(title: "Логин (эл. почта)", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string Email { get; set; } = string.Empty; - [DisplayName("Пароль")] + [Column(title: "Пароль", width: 150)] public string Password { get; set; } = string.Empty; } diff --git a/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs index 3d112ef..3abbbc7 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs @@ -1,4 +1,5 @@ -using SushiBarDataModels.Models; +using SushiBarContracts.Attributes; +using SushiBarDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,10 +11,13 @@ namespace SushiBarContracts.ViewModels { public class ComponentViewModel : IComponentModel { + [Column(visible: false)] public int Id { get; set; } - [DisplayName("Название компонента")] + + [Column(title: "Название компонента", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ComponentName { get; set; } = string.Empty; - [DisplayName("Цена")] + + [Column(title: "Цена", width: 150)] public double Cost { get; set; } } diff --git a/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs index 271bfbb..313922c 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs @@ -1,4 +1,5 @@ -using SushiBarDataModels; +using SushiBarContracts.Attributes; +using SushiBarDataModels; using System; using System.Collections.Generic; using System.ComponentModel; @@ -8,20 +9,23 @@ using System.Threading.Tasks; namespace SushiBarContracts.ViewModels { - public class ImplementerViewModel : IImplementerModel - { - public int Id { get; set; } + public class ImplementerViewModel : IImplementerModel + { + [Column(visible: false)] + public int Id { get; set; } - [DisplayName("ФИО исполнителя")] - public string ImplementerFIO { get; set; } = string.Empty; + [Column(title: "ФИО исполнителя", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string ImplementerFIO { get; set; } = string.Empty; - [DisplayName("Пароль")] - public string Password { get; set; } = string.Empty; + [Column(title: "Пароль", width: 100)] - [DisplayName("Стаж работы")] - public int WorkExperience { get; set; } + public string Password { get; set; } = string.Empty; - [DisplayName("Квалификация")] - public int Qualification { get; set; } - } + [Column(title: "Стаж работы", width: 60)] + public int WorkExperience { get; set; } + + [Column(title: "Квалификация", width: 60)] + public int Qualification { get; set; } + } } + diff --git a/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs index e58287f..864b52e 100644 --- a/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs @@ -1,4 +1,5 @@ -using SushiBarDataModels.Models; +using SushiBarContracts.Attributes; +using SushiBarDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,20 +11,25 @@ namespace SushiBarContracts.ViewModels { public class MessageInfoViewModel : IMessageInfoModel { + [Column(visible: false)] + public int Id { get; set; } + + [Column(visible: false)] public string MessageId { get; set; } = string.Empty; + [Column(visible: false)] public int? ClientId { get; set; } - [DisplayName("Отправитель")] + [Column(title: "Отправитель", width: 150)] public string SenderName { get; set; } = string.Empty; - [DisplayName("Дата письма")] + [Column(title: "Дата письма", width: 120)] public DateTime DateDelivery { get; set; } - [DisplayName("Заголовок")] + [Column(title: "Заголовок", width: 120)] public string Subject { get; set; } = string.Empty; - [DisplayName("Текст")] + [Column(title: "Текст", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string Body { get; set; } = string.Empty; } -} \ No newline at end of file +} diff --git a/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs index 45bddb6..caaf8eb 100644 --- a/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs @@ -1,4 +1,5 @@ -using SushiBarDataModels.Enums; +using SushiBarContracts.Attributes; +using SushiBarDataModels.Enums; using SushiBarDataModels.Models; using System; using System.Collections.Generic; @@ -9,36 +10,46 @@ using System.Threading.Tasks; namespace SushiBarContracts.ViewModels { - public class OrderViewModel : IOrderModel - { - [DisplayName("Номер")] - public int Id { get; set; } - public int? ImplementerId { get; set; } - [DisplayName("Исполнитель")] - public string? ImplementerFIO { get; set; } = null; - public int SushiId { get; set; } - public int ClientId { get; set; } + public class OrderViewModel : IOrderModel + { + [Column(title: "Номер", width: 90)] + public int Id { get; set; } + + [Column(visible: false)] + public int ClientId { get; set; } + + [Column(title: "Имя клиента", width: 190)] + public string ClientFIO { get; set; } = string.Empty; + + [Column(visible: false)] public string ClientEmail { get; set; } = string.Empty; - [DisplayName("ФИО клиента")] - public string ClientFIO { get; set; } = string.Empty; + [Column(visible: false)] + public int? ImplementerId { get; set; } - [DisplayName("Изделие")] - public string SushiName { get; set; } = string.Empty; + [Column(title: "Исполнитель", width: 150)] + public string? ImplementerFIO { get; set; } = null; - [DisplayName("Количество")] - public int Count { get; set; } + [Column(visible: false)] + public int SushiId { get; set; } - [DisplayName("Сумма")] - public double Sum { get; set; } + [Column(title: "Суши", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + public string SushiName { get; set; } = string.Empty; - [DisplayName("Статус")] - public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; + [Column(title: "Количество", width: 100)] + public int Count { get; set; } - [DisplayName("Дата создания")] - public DateTime DateCreate { get; set; } = DateTime.Now; + [Column(title: "Сумма", width: 120)] + public double Sum { get; set; } - [DisplayName("Дата выполнения")] - public DateTime? DateImplement { get; set; } - } + [Column(title: "Статус", width: 70)] + public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; + + [Column(title: "Дата создания", width: 120)] + public DateTime DateCreate { get; set; } = DateTime.Now; + + [Column(title: "Дата выполнения", width: 120)] + public DateTime? DateImplement { get; set; } + } } + diff --git a/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs index 9beb5ef..5346691 100644 --- a/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs @@ -1,4 +1,5 @@ -using SushiBarDataModels.Models; +using SushiBarContracts.Attributes; +using SushiBarDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,15 +11,19 @@ namespace SushiBarContracts.ViewModels { public class SushiViewModel : ISushiModel { + [Column(visible: false)] public int Id { get; set; } - [DisplayName("Название суши")] + [Column(title: "Название сущи", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string SushiName { get; set; } = string.Empty; - [DisplayName("Цена")] + [Column(title: "Цена", width: 70)] public double Price { get; set; } + [Column(visible: false)] public Dictionary SushiComponents { get; set; } = new(); + } } + diff --git a/SushiBar/SushiBarDataModels/IMessageInfoModel.cs b/SushiBar/SushiBarDataModels/IMessageInfoModel.cs index e4c9086..8242afa 100644 --- a/SushiBar/SushiBarDataModels/IMessageInfoModel.cs +++ b/SushiBar/SushiBarDataModels/IMessageInfoModel.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace SushiBarDataModels.Models { - public interface IMessageInfoModel + public interface IMessageInfoModel : IId { string MessageId { get; } int? ClientId { get; } diff --git a/SushiBar/SushiBarDatabaseImplement/BackUpInfo.cs b/SushiBar/SushiBarDatabaseImplement/BackUpInfo.cs new file mode 100644 index 0000000..4687db9 --- /dev/null +++ b/SushiBar/SushiBarDatabaseImplement/BackUpInfo.cs @@ -0,0 +1,32 @@ +using SushiBarContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarDatabaseImplement.Implements +{ + public class BackUpInfo : IBackUpInfo + { + public List? GetList() where T : class, new() + { + using var context = new SushiBarDatabase(); + return context.Set().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; + } + } +} diff --git a/SushiBar/SushiBarDatabaseImplement/Client.cs b/SushiBar/SushiBarDatabaseImplement/Client.cs index b965618..7a7f4e0 100644 --- a/SushiBar/SushiBarDatabaseImplement/Client.cs +++ b/SushiBar/SushiBarDatabaseImplement/Client.cs @@ -1,76 +1,84 @@ using SushiBarContracts.BindingModels; using SushiBarContracts.ViewModels; -using SushiBarDatabaseImplement.Models; using SushiBarDataModels.Models; -using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel.DataAnnotations; using System; 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 SushiBarDatabaseImplement +namespace SushiBarDatabaseImplement.Models { - public class Client : IClientModel - { - public int Id { get; private set; } + [DataContract] + public class Client : IClientModel + { + [DataMember] + public int Id { get; private set; } - [Required] - public string ClientFIO { get; set; } = string.Empty; - [Required] - public string Email { get; set; } = string.Empty; - [Required] - public string Password { get; set; } = string.Empty; + [DataMember] + [Required] + public string ClientFIO { get; set; } = string.Empty; - [ForeignKey("ClientId")] + [DataMember] + [Required] + public string Email { get; set; } = string.Empty; + + [DataMember] + [Required] + public string Password { get; set; } = string.Empty; + + [ForeignKey("ClientId")] public virtual List ClientOrders { get; set; } = new(); [ForeignKey("ClientId")] public virtual List ClientMessages { get; set; } = new(); + public static Client? Create(ClientBindingModel model) { - if (model == null) - { - return null; - } - return new Client() - { - Id = model.Id, - ClientFIO = model.ClientFIO, - Email = model.Email, - Password = model.Password - }; - } + if (model == null) + { + return null; + } + return new Client() + { + Id = model.Id, + ClientFIO = model.ClientFIO, + Email = model.Email, + Password = model.Password + }; + } - public static Client Create(ClientViewModel model) - { - return new Client - { - Id = model.Id, - ClientFIO = model.ClientFIO, - Email = model.Email, - Password = model.Password - }; - } + public static Client Create(ClientViewModel model) + { + return new Client + { + Id = model.Id, + ClientFIO = model.ClientFIO, + Email = model.Email, + Password = model.Password + }; + } - public void Update(ClientBindingModel model) - { - if (model == null) - { - return; - } - ClientFIO = model.ClientFIO; - Email = model.Email; - Password = model.Password; - } + public void Update(ClientBindingModel model) + { + if (model == null) + { + return; + } + ClientFIO = model.ClientFIO; + Email = model.Email; + Password = model.Password; + } - public ClientViewModel GetViewModel => new() - { - Id = Id, - ClientFIO = ClientFIO, - Email = Email, - Password = Password - }; - } + public ClientViewModel GetViewModel => new() + { + Id = Id, + ClientFIO = ClientFIO, + Email = Email, + Password = Password + }; + } } diff --git a/SushiBar/SushiBarDatabaseImplement/Component.cs b/SushiBar/SushiBarDatabaseImplement/Component.cs index d555489..4e2a8d9 100644 --- a/SushiBar/SushiBarDatabaseImplement/Component.cs +++ b/SushiBar/SushiBarDatabaseImplement/Component.cs @@ -1,19 +1,31 @@ -using SushiBarContracts.BindingModels; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SushiBarContracts.BindingModels; using SushiBarContracts.ViewModels; using SushiBarDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; + namespace SushiBarDatabaseImplement.Models { + [DataContract] public class Component : IComponentModel { + [DataMember] public int Id { get; private set; } + [DataMember] [Required] public string ComponentName { get; private set; } = string.Empty; + [DataMember] [Required] public double Cost { get; set; } [ForeignKey("ComponentId")] public virtual List SushiComponents { get; set; } = new(); + public static Component? Create(ComponentBindingModel model) { if (model == null) @@ -27,6 +39,7 @@ namespace SushiBarDatabaseImplement.Models Cost = model.Cost }; } + public static Component Create(ComponentViewModel model) { return new Component @@ -36,6 +49,7 @@ namespace SushiBarDatabaseImplement.Models Cost = model.Cost }; } + public void Update(ComponentBindingModel model) { if (model == null) @@ -45,6 +59,7 @@ namespace SushiBarDatabaseImplement.Models ComponentName = model.ComponentName; Cost = model.Cost; } + public ComponentViewModel GetViewModel => new() { Id = Id, @@ -52,4 +67,4 @@ namespace SushiBarDatabaseImplement.Models Cost = Cost }; } -} \ No newline at end of file +} diff --git a/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs b/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs new file mode 100644 index 0000000..ca818f5 --- /dev/null +++ b/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs @@ -0,0 +1,28 @@ +using SushiBar.StoragesContracts; +using SushiBarContracts.DI; +using SushiBarContracts.StoragesContracts; +using SushiBarDatabaseImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarDatabaseImplement +{ + public class ImplementationExtension : IImplementationExtension + { + public int Priority => 3; + + public void RegisterServices() + { + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarDatabaseImplement/Implementer.cs b/SushiBar/SushiBarDatabaseImplement/Implementer.cs index fc8c4ab..144538d 100644 --- a/SushiBar/SushiBarDatabaseImplement/Implementer.cs +++ b/SushiBar/SushiBarDatabaseImplement/Implementer.cs @@ -1,72 +1,73 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using SushiBarContracts.BindingModels; -using SushiBarContracts.SearchModels; -using SushiBarContracts.ViewModels; using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations; -using SushiBarDataModels; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SushiBarContracts.BindingModels; using SushiBarDatabaseImplement.Models; +using SushiBarContracts.ViewModels; +using System.Runtime.Serialization; -namespace SushiBarDatabaseImplement +namespace SushiBarDataModels.Models { - public class Implementer : IImplementerModel - { - public int Id { get; set; } + [DataContract] + public class Implementer : IImplementerModel + { + [DataMember] + public int Id { get; set; } + [DataMember] + [Required] + public string ImplementerFIO { get; set; } = string.Empty; + [DataMember] + [Required] + public string Password { get; set; } = string.Empty; + [DataMember] + [Required] + public int WorkExperience { get; set; } + [DataMember] + [Required] + public int Qualification { get; set; } - [Required] - public string ImplementerFIO { get; set; } = string.Empty; + [ForeignKey("ImplementerId")] + public virtual List Order { get; set; } = new(); - [Required] - public string Password { get; set; } = string.Empty; + public static Implementer? Create(ImplementerBindingModel? model) + { + if (model == null) + { + return null; + } + return new Implementer() + { + Id = model.Id, + ImplementerFIO = model.ImplementerFIO, + Password = model.Password, + WorkExperience = model.WorkExperience, + Qualification = model.Qualification + }; + } - [Required] - public int WorkExperience { get; set; } + public void Update(ImplementerBindingModel model) + { + if (model == null) + { + return; + } + ImplementerFIO = model.ImplementerFIO; + Password = model.Password; + WorkExperience = model.WorkExperience; + Qualification = model.Qualification; + } - [Required] - public int Qualification { get; set; } - - [ForeignKey("ImplementerId")] - public virtual List Order { get; set; } = new(); - - public static Implementer? Create(ImplementerBindingModel? model) - { - if (model == null) - { - return null; - } - return new Implementer() - { - Id = model.Id, - ImplementerFIO = model.ImplementerFIO, - Password = model.Password, - WorkExperience = model.WorkExperience, - Qualification = model.Qualification - }; - } - - public void Update(ImplementerBindingModel model) - { - if (model == null) - { - return; - } - ImplementerFIO = model.ImplementerFIO; - Password = model.Password; - WorkExperience = model.WorkExperience; - Qualification = model.Qualification; - } - - public ImplementerViewModel GetViewModel => new() - { - Id = Id, - ImplementerFIO = ImplementerFIO, - Password = Password, - WorkExperience = WorkExperience, - Qualification = Qualification - }; - } + public ImplementerViewModel GetViewModel => new() + { + Id = Id, + ImplementerFIO = ImplementerFIO, + Password = Password, + WorkExperience = WorkExperience, + Qualification = Qualification + }; + } } diff --git a/SushiBar/SushiBarDatabaseImplement/MessageInfo.cs b/SushiBar/SushiBarDatabaseImplement/MessageInfo.cs index d54e628..d655ce6 100644 --- a/SushiBar/SushiBarDatabaseImplement/MessageInfo.cs +++ b/SushiBar/SushiBarDatabaseImplement/MessageInfo.cs @@ -8,28 +8,38 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Runtime.Serialization; namespace SushiBarDatabaseImplement.Models { public class MessageInfo : IMessageInfoModel { + [NotMapped] + public int Id { get; private set; } + + [DataMember] [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public string MessageId { get; set; } = string.Empty; + [DataMember] public int? ClientId { get; set; } public virtual Client? Client { get; set; } + [DataMember] [Required] public string SenderName { get; set; } = string.Empty; + [DataMember] [Required] public DateTime DateDelivery { get; set; } + [DataMember] [Required] public string Subject { get; set; } = string.Empty; + [DataMember] [Required] public string Body { get; set; } = string.Empty; @@ -61,4 +71,4 @@ namespace SushiBarDatabaseImplement.Models Body = Body }; } -} \ No newline at end of file +} diff --git a/SushiBar/SushiBarDatabaseImplement/Order.cs b/SushiBar/SushiBarDatabaseImplement/Order.cs index ff9c52b..50c4747 100644 --- a/SushiBar/SushiBarDatabaseImplement/Order.cs +++ b/SushiBar/SushiBarDatabaseImplement/Order.cs @@ -2,85 +2,100 @@ using SushiBarContracts.ViewModels; using SushiBarDataModels.Enums; using SushiBarDataModels.Models; +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 SushiBarDatabaseImplement.Models { - public class Order : IOrderModel - { - public int Id { get; private set; } + [DataContract] + public class Order : IOrderModel + { + [DataMember] + public int Id { get; private set; } + [DataMember] + [Required] + public int ClientId { get; private set; } + public virtual Client Client { get; private set; } = new(); + [DataMember] + [Required] + public int SushiId { get; private set; } - [Required] - public int ClientId { get; private set; } - public virtual Client Client { get; private set; } = new(); - [Required] - public int SushiId { get; private set; } + public virtual Sushi Sushi { get; set; } = new(); - public virtual Sushi Sushi { get; set; } = new(); + [DataMember] + [Required] + public int Count { get; private set; } - [Required] - public int Count { get; private set; } + [DataMember] + [Required] + public double Sum { get; private set; } - [Required] - public double Sum { get; private set; } + [DataMember] + [Required] + public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; - [Required] - public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; + [DataMember] + [Required] + public DateTime DateCreate { get; private set; } = DateTime.Now; - [Required] - public DateTime DateCreate { get; private set; } = DateTime.Now; + [DataMember] + public DateTime? DateImplement { get; private set; } + [DataMember] + public int? ImplementerId { get; private set; } - public DateTime? DateImplement { get; private set; } - public int? ImplementerId { get; private set; } + public virtual Implementer? Implementer { get; set; } = new(); - public virtual Implementer? Implementer { get; set; } = new(); + public static Order Create(SushiBarDatabase context, OrderBindingModel model) + { + return new Order() + { + Id = model.Id, + ClientId = model.ClientId, + Client = context.Clients.First(x => x.Id == model.ClientId), + SushiId = model.SushiId, + Sushi = context.Sushis.First(x => x.Id == model.SushiId), + ImplementerId = model.ImplementerId, + Implementer = model.ImplementerId.HasValue ? context.Implementers.First(x => x.Id == model.ImplementerId) : null, + Count = model.Count, + Sum = model.Sum, + Status = model.Status, + DateCreate = model.DateCreate, + DateImplement = model.DateImplement, + }; + } - public static Order Create(SushiBarDatabase context, OrderBindingModel model) - { - return new Order() - { - Id = model.Id, - ClientId = model.ClientId, - Client = context.Clients.First(x => x.Id == model.ClientId), - SushiId = model.SushiId, - Sushi = context.Sushis.First(x => x.Id == model.SushiId), - ImplementerId = model.ImplementerId, - Implementer = model.ImplementerId.HasValue ? context.Implementers.First(x => x.Id == model.ImplementerId) : null, - Count = model.Count, - Sum = model.Sum, - Status = model.Status, - DateCreate = model.DateCreate, - DateImplement = model.DateImplement, - }; - } + public void Update(SushiBarDatabase context, OrderBindingModel? model) + { + if (model == null) + { + return; + } + Status = model.Status; + DateImplement = model.DateImplement; + ImplementerId = model.ImplementerId; + Implementer = model.ImplementerId.HasValue ? context.Implementers.First(x => x.Id == model.ImplementerId) : null; + } - public void Update(SushiBarDatabase context, OrderBindingModel? model) - { - if (model == null) - { - return; - } - Status = model.Status; - DateImplement = model.DateImplement; - ImplementerId = model.ImplementerId; - Implementer = model.ImplementerId.HasValue ? context.Implementers.First(x => x.Id == model.ImplementerId) : null; - } - - public OrderViewModel GetViewModel => new() - { - Id = Id, - ClientId = ClientId, - ClientFIO = Client.ClientFIO, + public OrderViewModel GetViewModel => new() + { + Id = Id, + ClientId = ClientId, + ClientFIO = Client.ClientFIO, ClientEmail = Client.Email, SushiId = SushiId, - SushiName = Sushi.SushiName, - ImplementerId = ImplementerId, - ImplementerFIO = Implementer != null ? Implementer.ImplementerFIO : null, - Count = Count, - Sum = Sum, - Status = Status, - DateCreate = DateCreate, - DateImplement = DateImplement, - }; - } -} \ No newline at end of file + SushiName = Sushi.SushiName, + ImplementerId = ImplementerId, + ImplementerFIO = Implementer != null ? Implementer.ImplementerFIO : null, + Count = Count, + Sum = Sum, + Status = Status, + DateCreate = DateCreate, + DateImplement = DateImplement, + }; + } +} diff --git a/SushiBar/SushiBarDatabaseImplement/Sushi.cs b/SushiBar/SushiBarDatabaseImplement/Sushi.cs index 85050d5..08d35cc 100644 --- a/SushiBar/SushiBarDatabaseImplement/Sushi.cs +++ b/SushiBar/SushiBarDatabaseImplement/Sushi.cs @@ -8,18 +8,26 @@ using System.Text; using System.Threading.Tasks; using SushiBarContracts.BindingModels; using SushiBarContracts.ViewModels; +using System.Runtime.Serialization; namespace SushiBarDatabaseImplement.Models { + [DataContract] public class Sushi : ISushiModel { + [DataMember] public int Id { get; set; } + [DataMember] [Required] public string SushiName { get; set; } = string.Empty; + [DataMember] [Required] public double Price { get; set; } + + private Dictionary? _sushiComponents = null; + [DataMember] [NotMapped] public Dictionary SushiComponents { @@ -98,4 +106,4 @@ namespace SushiBarDatabaseImplement.Models _sushiComponents = null; } } -} +} diff --git a/SushiBar/SushiBarFileImplement/BackUpInfo.cs b/SushiBar/SushiBarFileImplement/BackUpInfo.cs new file mode 100644 index 0000000..1dd1f55 --- /dev/null +++ b/SushiBar/SushiBarFileImplement/BackUpInfo.cs @@ -0,0 +1,44 @@ +using SushiBarContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarFileImplement.Implements +{ + public class BackUpInfo : IBackUpInfo + { + private readonly DataFileSingleton source; + private readonly PropertyInfo[] sourceProperties; + + public BackUpInfo() + { + source = DataFileSingleton.GetInstance(); + sourceProperties = source.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public); + } + + public List? GetList() where T : class, new() + { + var requredType = typeof(T); + return (List?)sourceProperties.FirstOrDefault(x => x.PropertyType.IsGenericType && x.PropertyType.GetGenericArguments()[0] == requredType) + ?.GetValue(source); + + } + + 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; + } + } +} diff --git a/SushiBar/SushiBarFileImplement/ImplementationExtension.cs b/SushiBar/SushiBarFileImplement/ImplementationExtension.cs new file mode 100644 index 0000000..80a1933 --- /dev/null +++ b/SushiBar/SushiBarFileImplement/ImplementationExtension.cs @@ -0,0 +1,29 @@ +using SushiBar.StoragesContracts; +using SushiBarContracts.DI; +using SushiBarContracts.StoragesContracts; + +using SushiBarFileImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarFileImplement +{ + public class ImplementationExtension : IImplementationExtension + { + public int Priority => 1; + + public void RegisterServices() + { + //TODO DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + } +} diff --git a/SushiBar/SushiBarFileImplement/MessageInfo.cs b/SushiBar/SushiBarFileImplement/MessageInfo.cs index 811b998..4143ac1 100644 --- a/SushiBar/SushiBarFileImplement/MessageInfo.cs +++ b/SushiBar/SushiBarFileImplement/MessageInfo.cs @@ -76,5 +76,7 @@ namespace SushiBarFileImplement.Models new XAttribute("SenderName", SenderName), new XAttribute("DateDelivery", DateDelivery) ); + + public int Id => throw new NotImplementedException(); } } diff --git a/SushiBar/SushiBarListImplement/MessageInfo.cs b/SushiBar/SushiBarListImplement/MessageInfo.cs index 2c62f6f..d69dede 100644 --- a/SushiBar/SushiBarListImplement/MessageInfo.cs +++ b/SushiBar/SushiBarListImplement/MessageInfo.cs @@ -49,5 +49,7 @@ namespace SushiBarListImplement.Models SenderName = SenderName, DateDelivery = DateDelivery, }; + + public int Id => throw new NotImplementedException(); } } diff --git a/SushiBar/SushiBarView/DataGridViewExtension.cs b/SushiBar/SushiBarView/DataGridViewExtension.cs new file mode 100644 index 0000000..0aeff0d --- /dev/null +++ b/SushiBar/SushiBarView/DataGridViewExtension.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SushiBarContracts.Attributes; + +namespace SushiBarView +{ + internal static class DataGridViewExtension + { + public static void FillAndConfigGrid(this DataGridView grid, List? data) + { + if (data == null) + { + return; + } + grid.DataSource = data; + + var type = typeof(T); + var properties = type.GetProperties(); + foreach (DataGridViewColumn column in grid.Columns) + { + var property = properties.FirstOrDefault(x => x.Name == column.Name); + if (property == null) + { + throw new InvalidOperationException($"В типе {type.Name} не найдено свойство с именем {column.Name}"); + } + var attribute = property.GetCustomAttributes(typeof(ColumnAttribute), true)?.SingleOrDefault(); + if (attribute == null) + { + throw new InvalidOperationException($"Не найден атрибут типа ColumnAttribute для свойства {property.Name}"); + } + + if (attribute is ColumnAttribute columnAttr) + { + column.HeaderText = columnAttr.Title; + column.Visible = columnAttr.Visible; + if (columnAttr.IsUseAutoSize) + { + column.AutoSizeMode = (DataGridViewAutoSizeColumnMode)Enum.Parse(typeof(DataGridViewAutoSizeColumnMode), columnAttr.GridViewAutoSize.ToString()); + } + else + { + column.Width = columnAttr.Width; + } + } + } + } + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarView/FormClients.cs b/SushiBar/SushiBarView/FormClients.cs index 450573d..3a2a504 100644 --- a/SushiBar/SushiBarView/FormClients.cs +++ b/SushiBar/SushiBarView/FormClients.cs @@ -35,15 +35,9 @@ namespace SushiBarView { try { - var list = _logic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["Id"].Visible = false; - dataGridView.Columns["ClientFIO"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка клиентов"); - } + dataGridView.FillAndConfigGrid(_logic.ReadList(null)); + _logger.LogInformation("Загрузка клиентов"); + } catch (Exception ex) { _logger.LogError(ex, "Ошибка загрузки клиентов"); diff --git a/SushiBar/SushiBarView/FormComponents.cs b/SushiBar/SushiBarView/FormComponents.cs index 30239fc..fc0d5b8 100644 --- a/SushiBar/SushiBarView/FormComponents.cs +++ b/SushiBar/SushiBarView/FormComponents.cs @@ -10,19 +10,26 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using SushiBarContracts.DI; namespace SushiBarView { public partial class FormComponents : Form { + public FormComponents() + { + InitializeComponent(); + } private readonly ILogger _logger; private readonly IComponentLogic _logic; - public FormComponents(ILogger logger, IComponentLogic logic) + public FormComponents(ILogger logger, IComponentLogic + logic) { InitializeComponent(); _logger = logger; _logic = logic; } + private void FormComponents_Load(object sender, EventArgs e) { LoadData(); @@ -48,32 +55,26 @@ namespace SushiBarView MessageBoxIcon.Error); } } + private void ButtonAdd_Click(object sender, EventArgs e) { - var service = - Program.ServiceProvider?.GetService(typeof(FormComponent)); - if (service is FormComponent form) + var form = DependencyManager.Instance.Resolve(); + if (form.ShowDialog() == DialogResult.OK) { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } + LoadData(); } } + private void ButtonUpd_Click(object sender, EventArgs e) { if (dataGridView.SelectedRows.Count == 1) { - var service = - Program.ServiceProvider?.GetService(typeof(FormComponent)); - if (service is FormComponent form) + var form = DependencyManager.Instance.Resolve(); + + form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (form.ShowDialog() == DialogResult.OK) { - form.Id = - Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } + LoadData(); } } } @@ -82,10 +83,10 @@ namespace SushiBarView if (dataGridView.SelectedRows.Count == 1) { if (MessageBox.Show("Удалить запись?", "Вопрос", - MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { int id = - Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); _logger.LogInformation("Удаление компонента"); try { @@ -102,7 +103,7 @@ namespace SushiBarView { _logger.LogError(ex, "Ошибка удаления компонента"); MessageBox.Show(ex.Message, "Ошибка", - MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBoxButtons.OK, MessageBoxIcon.Error); } } } @@ -111,6 +112,6 @@ namespace SushiBarView { LoadData(); } + } } - diff --git a/SushiBar/SushiBarView/FormImplementers.cs b/SushiBar/SushiBarView/FormImplementers.cs index 0a0e121..34a1ef9 100644 --- a/SushiBar/SushiBarView/FormImplementers.cs +++ b/SushiBar/SushiBarView/FormImplementers.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Logging; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; -using SushiBarContracts.ViewModels; +using SushiBarContracts.DI; using System; using System.Collections.Generic; using System.ComponentModel; @@ -14,105 +14,98 @@ using System.Windows.Forms; namespace SushiBarView { - public partial class FormImplementers : Form - { - private readonly ILogger _logger; - private readonly IImplementerLogic _logic; + public partial class FormImplementers : Form + { + private readonly ILogger _logger; + private readonly IImplementerLogic _logic; - public FormImplementers(ILogger logger, IImplementerLogic implementerLogic) - { - InitializeComponent(); - _logger = logger; - _logic = implementerLogic; - } + public FormImplementers(ILogger logger, IImplementerLogic implementerLogic) + { + InitializeComponent(); + _logger = logger; + _logic = implementerLogic; + } - 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); - } - } + private void LoadData() + { + try + { + dataGridView.FillAndConfigGrid(_logic.ReadList(null)); + _logger.LogInformation("Загрузка исполнителей"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки исполнителей"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } - private void FormImplementers_Load(object sender, EventArgs e) - { - LoadData(); - } + private void FormImplementers_Load(object sender, EventArgs e) + { + LoadData(); + } - private void buttonAdd_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormImplementer)); - if (service is FormImplementer form) - { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } - } + private void buttonAdd_Click(object sender, EventArgs e) + { + var form = DependencyManager.Instance.Resolve(); + if (form.ShowDialog() == DialogResult.OK) + { + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } - private void buttonUpd_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - var service = Program.ServiceProvider?.GetService(typeof(FormImplementer)); - if (service is FormImplementer form) - { - form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } - } - } + private void buttonUpd_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var service = Program.ServiceProvider?.GetService(typeof(FormImplementer)); + if (service is FormImplementer form) + { + form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + } + } - private void buttonDel_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - if (MessageBox.Show("Удалить запись?", "Вопрос", - MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Удаление исполнителя"); - try - { - if (!_logic.Delete(new ImplementerBindingModel - { - Id = id - })) - { - throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка удаления исполнителя"); - MessageBox.Show(ex.Message, "Ошибка", - MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - } - } - private void buttonRef_Click(object sender, EventArgs e) - { - LoadData(); - } - } + private void buttonDel_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", + MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Удаление исполнителя"); + try + { + if (!_logic.Delete(new ImplementerBindingModel + { + Id = id + })) + { + throw new Exception("Ошибка при удалении. Дополнительная информация в логах."); + } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления исполнителя"); + MessageBox.Show(ex.Message, "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + private void buttonRef_Click(object sender, EventArgs e) + { + LoadData(); + } + } } diff --git a/SushiBar/SushiBarView/FormMail.cs b/SushiBar/SushiBarView/FormMail.cs index 26889be..8bfc676 100644 --- a/SushiBar/SushiBarView/FormMail.cs +++ b/SushiBar/SushiBarView/FormMail.cs @@ -28,15 +28,7 @@ namespace SushiBarView { try { - var list = _logic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["MessageId"].Visible = false; - dataGridView.Columns["ClientId"].Visible = false; - dataGridView.Columns["Body"].AutoSizeMode = - DataGridViewAutoSizeColumnMode.Fill; - } + dataGridView.FillAndConfigGrid(_logic.ReadList(null)); _logger.LogInformation("Загрузка почтовых собщений"); } catch (Exception ex) diff --git a/SushiBar/SushiBarView/FormMain.cs b/SushiBar/SushiBarView/FormMain.cs index e2b4ebf..2b916d6 100644 --- a/SushiBar/SushiBarView/FormMain.cs +++ b/SushiBar/SushiBarView/FormMain.cs @@ -2,6 +2,8 @@ using SushiBarBusinessLogic.BusinessLogics; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; +using System.Windows.Forms; using System; using System.Collections.Generic; using System.ComponentModel; @@ -20,13 +22,15 @@ namespace SushiBarView private readonly IOrderLogic _orderLogic; private readonly IReportLogic _reportLogic; private readonly IWorkProcess _workProcess; - public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic, IWorkProcess workProcess) + private readonly IBackUpLogic _backUpLogic; + public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic, IWorkProcess workProcess, IBackUpLogic backUpLogic) { InitializeComponent(); _logger = logger; _orderLogic = orderLogic; _reportLogic = reportLogic; _workProcess = workProcess; + _backUpLogic = backUpLogic; } private void FormMain_Load(object sender, EventArgs e) { @@ -37,15 +41,7 @@ namespace SushiBarView _logger.LogInformation("Загрузка заказов"); try { - var list = _orderLogic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["SushiId"].Visible = false; - dataGridView.Columns["ClientId"].Visible = false; - dataGridView.Columns["ClientEmail"].Visible = false; - dataGridView.Columns["ImplementerId"].Visible = false; - } + dataGridView.FillAndConfigGrid(_orderLogic.ReadList(null)); _logger.LogInformation("Загрузка заказов"); } catch (Exception ex) @@ -56,29 +52,19 @@ namespace SushiBarView } private void componentsToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); - if (service is FormComponents form) - { - form.ShowDialog(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); } private void sushiToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushis)); - if (service is FormSushis form) - { - form.ShowDialog(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); } private void ButtonCreateOrder_Click(object sender, EventArgs e) { - var service = - Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); - if (service is FormCreateOrder form) - { - form.ShowDialog(); - LoadData(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); + LoadData(); } private void ButtonIssuedOrder_Click(object sender, EventArgs e) { @@ -125,21 +111,13 @@ e) private void ComponentSushisToolStripMenuItem_Click(object sender, EventArgs e) { - var service = - Program.ServiceProvider?.GetService(typeof(FormReportSushiComponents)); - if (service is FormReportSushiComponents form) - { - form.ShowDialog(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); } private void OrdersToolStripMenuItem_Click(object sender, EventArgs e) { - var service = - Program.ServiceProvider?.GetService(typeof(FormReportOrders)); - if (service is FormReportOrders form) - { - form.ShowDialog(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); } private void ButtonRef_Click(object sender, EventArgs e) @@ -149,32 +127,48 @@ e) private void clientToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormClients)); - if (service is FormClients form) - { - form.ShowDialog(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); } private void employersToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormImplementers)); - if (service is FormImplementers form) - { - form.ShowDialog(); - } + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); } private void startWorkToolStripMenuItem_Click(object sender, EventArgs e) { - _workProcess.DoWork((Program.ServiceProvider?.GetService(typeof(IImplementerLogic)) as IImplementerLogic)!, _orderLogic); + _workProcess.DoWork(DependencyManager.Instance.Resolve(), _orderLogic); MessageBox.Show("Процесс обработки запущен", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void mailToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormMail)); - if (service is FormMail form) + var form = DependencyManager.Instance.Resolve(); + form.ShowDialog(); + } + + private void createBackUpToolStripMenuItem_Click(object sender, EventArgs e) + { + try { - form.ShowDialog(); + if (_backUpLogic != null) + { + var fbd = new FolderBrowserDialog(); + if (fbd.ShowDialog() == DialogResult.OK) + { + _backUpLogic.CreateBackUp(new BackUpSaveBinidngModel + { + FolderName = fbd.SelectedPath + }); + MessageBox.Show("Бекап создан", "Сообщение", + MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка создания бэкапа", MessageBoxButtons.OK, + MessageBoxIcon.Error); } } } diff --git a/SushiBar/SushiBarView/FormSushi.cs b/SushiBar/SushiBarView/FormSushi.cs index a0c9da4..d0590c0 100644 --- a/SushiBar/SushiBarView/FormSushi.cs +++ b/SushiBar/SushiBarView/FormSushi.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using SushiBarContracts.DI; namespace SushiBarView { @@ -99,56 +100,44 @@ namespace SushiBarView } private void ButtonAdd_Click(object sender, EventArgs e) { - var service = - Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); - if (service is FormSushiComponent form) + var form = DependencyManager.Instance.Resolve(); + if (form.ShowDialog() != DialogResult.OK) { + return; + } + _logger.LogInformation("Добавление нового ингридиента:{ ComponentName}-{ Count}", form.ComponentModel.ComponentName, form.Count); + if (_sushiComponents.ContainsKey(form.Id)) + { + _sushiComponents[form.Id] = (form.ComponentModel, + form.Count); + } + else + { + _sushiComponents.Add(form.Id, (form.ComponentModel, + form.Count)); + } + LoadData(); + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + var form = DependencyManager.Instance.Resolve(); + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value); + form.Id = id; + form.Count = _sushiComponents[id].Item2; if (form.ShowDialog() == DialogResult.OK) { if (form.ComponentModel == null) { return; } - _logger.LogInformation("Добавление нового компонента: { ComponentName}- { Count}", form.ComponentModel.ComponentName, form.Count); - if (_sushiComponents.ContainsKey(form.Id)) - { - _sushiComponents[form.Id] = (form.ComponentModel, - form.Count); - } - else - { - _sushiComponents.Add(form.Id, (form.ComponentModel, - form.Count)); - } + _logger.LogInformation("Изменение компонента:{ ComponentName}-{ Count}", form.ComponentModel.ComponentName, form.Count); + _sushiComponents[form.Id] = (form.ComponentModel, form.Count); LoadData(); } } } - private void ButtonUpd_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - var service = - Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); - if (service is FormSushiComponent form) - { - int id = - Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value); - form.Id = id; - form.Count = _sushiComponents[id].Item2; - if (form.ShowDialog() == DialogResult.OK) - { - if (form.ComponentModel == null) - { - return; - } - _logger.LogInformation("Изменение компонента: { ComponentName} - { Count}", form.ComponentModel.ComponentName, form.Count); - _sushiComponents[form.Id] = (form.ComponentModel, form.Count); - LoadData(); - } - } - } - } private void ButtonDel_Click(object sender, EventArgs e) { if (dataGridView.SelectedRows.Count == 1) diff --git a/SushiBar/SushiBarView/FormSushis.cs b/SushiBar/SushiBarView/FormSushis.cs index 28ed8c3..25fb21b 100644 --- a/SushiBar/SushiBarView/FormSushis.cs +++ b/SushiBar/SushiBarView/FormSushis.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using System.Windows.Forms; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; namespace SushiBarView { @@ -17,13 +18,11 @@ namespace SushiBarView { private void ButtonAdd_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); - if (service is FormSushi form) + var form = DependencyManager.Instance.Resolve(); + if (form.ShowDialog() == DialogResult.OK) { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } + LoadData(); + } } @@ -46,15 +45,7 @@ namespace SushiBarView { try { - var list = _logic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["Id"].Visible = false; - dataGridView.Columns["SushiComponents"].Visible = false; - dataGridView.Columns["SushiName"].AutoSizeMode = - DataGridViewAutoSizeColumnMode.Fill; - } + dataGridView.FillAndConfigGrid(_logic.ReadList(null)); _logger.LogInformation("Загрузка суши"); } catch (Exception ex) @@ -68,14 +59,11 @@ namespace SushiBarView { if (dataGridView.SelectedRows.Count == 1) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); - if (service is FormSushi form) + var form = DependencyManager.Instance.Resolve(); + form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (form.ShowDialog() == DialogResult.OK) { - form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } + LoadData(); } } } diff --git a/SushiBar/SushiBarView/Program.cs b/SushiBar/SushiBarView/Program.cs index 674ae43..3314bee 100644 --- a/SushiBar/SushiBarView/Program.cs +++ b/SushiBar/SushiBarView/Program.cs @@ -1,18 +1,18 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using SushiBarContracts.BusinessLogicsContracts; -using SushiBarDatabaseImplement.Implements; +using System; using SushiBarBusinessLogic.BusinessLogics; +using SushiBarDatabaseImplement.Implements; using SushiBarContracts.StoragesContracts; +using SushiBarView; using NLog.Extensions.Logging; using SushiBarBusinessLogic.OfficePackage.Implements; using SushiBarBusinessLogic.OfficePackage; -using Microsoft.EntityFrameworkCore.Design; using SushiBarBusinessLogic; -using SushiBarDatabaseImplement; using SushiBarBusinessLogic.MailWorker; using SushiBarContracts.BindingModels; - +using SushiBarContracts.DI; namespace SushiBarView { @@ -27,12 +27,10 @@ namespace SushiBarView static void Main() { ApplicationConfiguration.Initialize(); - var services = new ServiceCollection(); - ConfigureServices(services); - _serviceProvider = services.BuildServiceProvider(); + InitDependency(); try { - var mailSender = _serviceProvider.GetService(); + var mailSender = DependencyManager.Instance.Resolve(); mailSender?.MailConfig(new MailConfigBindingModel { MailLogin = System.Configuration.ConfigurationManager.AppSettings["MailLogin"] ?? string.Empty, @@ -47,57 +45,47 @@ namespace SushiBarView } catch (Exception ex) { - var logger = _serviceProvider.GetService(); + var logger = DependencyManager.Instance.Resolve(); logger?.LogError(ex, "Mails Problem"); } - Application.Run(_serviceProvider.GetRequiredService()); + Application.Run(DependencyManager.Instance.Resolve()); } - 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(); + private static void InitDependency() + { + DependencyManager.InitDependency(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddSingleton(); - - 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(); - services.AddTransient(); - services.AddTransient(); - - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - - services.AddTransient(); - } - private static void MailCheck(object obj) => ServiceProvider?.GetService()?.MailCheck(); + 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(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(true); + 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(); + DependencyManager.Instance.RegisterType(); + } + private static void MailCheck(object obj) => DependencyManager.Instance.Resolve()?.MailCheck(); } } \ No newline at end of file -- 2.25.1 From e14cb5037c27d808290d6d3603e5d64dd30995aa Mon Sep 17 00:00:00 2001 From: tellsense Date: Sat, 1 Jun 2024 17:44:07 +0400 Subject: [PATCH 2/9] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SushiBar/SushiBarContracts/SushiBarContracts.csproj | 4 ++++ SushiBar/SushiBarDatabaseImplement/ClientStorage.cs | 1 + .../SushiBarDatabaseImplement/ImplementationExtension.cs | 3 +-- SushiBar/SushiBarDatabaseImplement/ImplementerStorage.cs | 2 ++ SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs | 8 ++++---- SushiBar/SushiBarFileImplement/ImplementationExtension.cs | 4 +--- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/SushiBar/SushiBarContracts/SushiBarContracts.csproj b/SushiBar/SushiBarContracts/SushiBarContracts.csproj index 22d1530..8c2ded0 100644 --- a/SushiBar/SushiBarContracts/SushiBarContracts.csproj +++ b/SushiBar/SushiBarContracts/SushiBarContracts.csproj @@ -6,6 +6,10 @@ enable + + + + diff --git a/SushiBar/SushiBarDatabaseImplement/ClientStorage.cs b/SushiBar/SushiBarDatabaseImplement/ClientStorage.cs index 4b411ad..e890fb7 100644 --- a/SushiBar/SushiBarDatabaseImplement/ClientStorage.cs +++ b/SushiBar/SushiBarDatabaseImplement/ClientStorage.cs @@ -2,6 +2,7 @@ using SushiBarContracts.SearchModels; using SushiBarContracts.StoragesContracts; using SushiBarContracts.ViewModels; +using SushiBarDatabaseImplement.Models; using System; using System.Collections.Generic; using System.Linq; diff --git a/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs b/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs index ca818f5..1ef1726 100644 --- a/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs +++ b/SushiBar/SushiBarDatabaseImplement/ImplementationExtension.cs @@ -1,5 +1,4 @@ -using SushiBar.StoragesContracts; -using SushiBarContracts.DI; +using SushiBarContracts.DI; using SushiBarContracts.StoragesContracts; using SushiBarDatabaseImplement.Implements; using System; diff --git a/SushiBar/SushiBarDatabaseImplement/ImplementerStorage.cs b/SushiBar/SushiBarDatabaseImplement/ImplementerStorage.cs index 930d87c..47b0f34 100644 --- a/SushiBar/SushiBarDatabaseImplement/ImplementerStorage.cs +++ b/SushiBar/SushiBarDatabaseImplement/ImplementerStorage.cs @@ -2,12 +2,14 @@ using SushiBarContracts.SearchModels; using SushiBarContracts.StoragesContracts; using SushiBarContracts.ViewModels; +using SushiBarDataModels.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; + namespace SushiBarDatabaseImplement { public class ImplementerStorage : IImplementerStorage diff --git a/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs b/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs index b9db94a..a8b920a 100644 --- a/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs +++ b/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using SushiBarDatabaseImplement.Models; -using Microsoft.Extensions.Options; +using SushiBarDataModels.Models; namespace SushiBarDatabaseImplement { @@ -23,12 +23,12 @@ namespace SushiBarDatabaseImplement AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true); } - public virtual DbSet Components { set; get; } + public virtual DbSet Components { set; get; } public virtual DbSet Sushis { set; get; } public virtual DbSet SushiComponents { set; get; } public virtual DbSet Orders { set; get; } - public virtual DbSet Clients { get; set; } - public virtual DbSet Implementers { set; get; } + public virtual DbSet Clients { set; get; } + public virtual DbSet Implementers { set; get; } public virtual DbSet MessageInfos { set; get; } } } \ No newline at end of file diff --git a/SushiBar/SushiBarFileImplement/ImplementationExtension.cs b/SushiBar/SushiBarFileImplement/ImplementationExtension.cs index 80a1933..d4068f5 100644 --- a/SushiBar/SushiBarFileImplement/ImplementationExtension.cs +++ b/SushiBar/SushiBarFileImplement/ImplementationExtension.cs @@ -1,7 +1,5 @@ -using SushiBar.StoragesContracts; -using SushiBarContracts.DI; +using SushiBarContracts.DI; using SushiBarContracts.StoragesContracts; - using SushiBarFileImplement.Implements; using System; using System.Collections.Generic; -- 2.25.1 From d90c029f5794f10d453502db0037cd426cd5b96c Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 2 Jun 2024 20:09:01 +0400 Subject: [PATCH 3/9] =?UTF-8?q?=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....cs => 20240601134444_Initial.Designer.cs} | 72 +++++++++---------- ...3_Initial.cs => 20240601134444_Initial.cs} | 0 .../SushiBarDatabaseModelSnapshot.cs | 70 +++++++++--------- .../SushiBarDatabase.cs | 2 +- 4 files changed, 72 insertions(+), 72 deletions(-) rename SushiBar/SushiBarDatabaseImplement/Migrations/{20240601121133_Initial.Designer.cs => 20240601134444_Initial.Designer.cs} (94%) rename SushiBar/SushiBarDatabaseImplement/Migrations/{20240601121133_Initial.cs => 20240601134444_Initial.cs} (100%) diff --git a/SushiBar/SushiBarDatabaseImplement/Migrations/20240601121133_Initial.Designer.cs b/SushiBar/SushiBarDatabaseImplement/Migrations/20240601134444_Initial.Designer.cs similarity index 94% rename from SushiBar/SushiBarDatabaseImplement/Migrations/20240601121133_Initial.Designer.cs rename to SushiBar/SushiBarDatabaseImplement/Migrations/20240601134444_Initial.Designer.cs index d0712bb..d08de31 100644 --- a/SushiBar/SushiBarDatabaseImplement/Migrations/20240601121133_Initial.Designer.cs +++ b/SushiBar/SushiBarDatabaseImplement/Migrations/20240601134444_Initial.Designer.cs @@ -12,7 +12,7 @@ using SushiBarDatabaseImplement; namespace SushiBarDatabaseImplement.Migrations { [DbContext(typeof(SushiBarDatabase))] - [Migration("20240601121133_Initial")] + [Migration("20240601134444_Initial")] partial class Initial { /// @@ -25,32 +25,7 @@ namespace SushiBarDatabaseImplement.Migrations NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - modelBuilder.Entity("SushiBarDatabaseImplement.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("text"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("SushiBarDatabaseImplement.Implementer", b => + modelBuilder.Entity("SushiBarDataModels.Models.Implementer", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -77,6 +52,31 @@ namespace SushiBarDatabaseImplement.Migrations b.ToTable("Implementers"); }); + modelBuilder.Entity("SushiBarDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + modelBuilder.Entity("SushiBarDatabaseImplement.Models.Component", b => { b.Property("Id") @@ -218,7 +218,7 @@ namespace SushiBarDatabaseImplement.Migrations modelBuilder.Entity("SushiBarDatabaseImplement.Models.MessageInfo", b => { - b.HasOne("SushiBarDatabaseImplement.Client", "Client") + b.HasOne("SushiBarDatabaseImplement.Models.Client", "Client") .WithMany("ClientMessages") .HasForeignKey("ClientId"); @@ -227,13 +227,13 @@ namespace SushiBarDatabaseImplement.Migrations modelBuilder.Entity("SushiBarDatabaseImplement.Models.Order", b => { - b.HasOne("SushiBarDatabaseImplement.Client", "Client") + b.HasOne("SushiBarDatabaseImplement.Models.Client", "Client") .WithMany("ClientOrders") .HasForeignKey("ClientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("SushiBarDatabaseImplement.Implementer", "Implementer") + b.HasOne("SushiBarDataModels.Models.Implementer", "Implementer") .WithMany("Order") .HasForeignKey("ImplementerId"); @@ -269,18 +269,18 @@ namespace SushiBarDatabaseImplement.Migrations b.Navigation("Sushi"); }); - modelBuilder.Entity("SushiBarDatabaseImplement.Client", b => + modelBuilder.Entity("SushiBarDataModels.Models.Implementer", b => + { + b.Navigation("Order"); + }); + + modelBuilder.Entity("SushiBarDatabaseImplement.Models.Client", b => { b.Navigation("ClientMessages"); b.Navigation("ClientOrders"); }); - modelBuilder.Entity("SushiBarDatabaseImplement.Implementer", b => - { - b.Navigation("Order"); - }); - modelBuilder.Entity("SushiBarDatabaseImplement.Models.Component", b => { b.Navigation("SushiComponents"); diff --git a/SushiBar/SushiBarDatabaseImplement/Migrations/20240601121133_Initial.cs b/SushiBar/SushiBarDatabaseImplement/Migrations/20240601134444_Initial.cs similarity index 100% rename from SushiBar/SushiBarDatabaseImplement/Migrations/20240601121133_Initial.cs rename to SushiBar/SushiBarDatabaseImplement/Migrations/20240601134444_Initial.cs diff --git a/SushiBar/SushiBarDatabaseImplement/Migrations/SushiBarDatabaseModelSnapshot.cs b/SushiBar/SushiBarDatabaseImplement/Migrations/SushiBarDatabaseModelSnapshot.cs index 2de7ba7..8de030d 100644 --- a/SushiBar/SushiBarDatabaseImplement/Migrations/SushiBarDatabaseModelSnapshot.cs +++ b/SushiBar/SushiBarDatabaseImplement/Migrations/SushiBarDatabaseModelSnapshot.cs @@ -22,32 +22,7 @@ namespace SushiBarDatabaseImplement.Migrations NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - modelBuilder.Entity("SushiBarDatabaseImplement.Client", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("ClientFIO") - .IsRequired() - .HasColumnType("text"); - - b.Property("Email") - .IsRequired() - .HasColumnType("text"); - - b.Property("Password") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.ToTable("Clients"); - }); - - modelBuilder.Entity("SushiBarDatabaseImplement.Implementer", b => + modelBuilder.Entity("SushiBarDataModels.Models.Implementer", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -74,6 +49,31 @@ namespace SushiBarDatabaseImplement.Migrations b.ToTable("Implementers"); }); + modelBuilder.Entity("SushiBarDatabaseImplement.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + modelBuilder.Entity("SushiBarDatabaseImplement.Models.Component", b => { b.Property("Id") @@ -215,7 +215,7 @@ namespace SushiBarDatabaseImplement.Migrations modelBuilder.Entity("SushiBarDatabaseImplement.Models.MessageInfo", b => { - b.HasOne("SushiBarDatabaseImplement.Client", "Client") + b.HasOne("SushiBarDatabaseImplement.Models.Client", "Client") .WithMany("ClientMessages") .HasForeignKey("ClientId"); @@ -224,13 +224,13 @@ namespace SushiBarDatabaseImplement.Migrations modelBuilder.Entity("SushiBarDatabaseImplement.Models.Order", b => { - b.HasOne("SushiBarDatabaseImplement.Client", "Client") + b.HasOne("SushiBarDatabaseImplement.Models.Client", "Client") .WithMany("ClientOrders") .HasForeignKey("ClientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("SushiBarDatabaseImplement.Implementer", "Implementer") + b.HasOne("SushiBarDataModels.Models.Implementer", "Implementer") .WithMany("Order") .HasForeignKey("ImplementerId"); @@ -266,18 +266,18 @@ namespace SushiBarDatabaseImplement.Migrations b.Navigation("Sushi"); }); - modelBuilder.Entity("SushiBarDatabaseImplement.Client", b => + modelBuilder.Entity("SushiBarDataModels.Models.Implementer", b => + { + b.Navigation("Order"); + }); + + modelBuilder.Entity("SushiBarDatabaseImplement.Models.Client", b => { b.Navigation("ClientMessages"); b.Navigation("ClientOrders"); }); - modelBuilder.Entity("SushiBarDatabaseImplement.Implementer", b => - { - b.Navigation("Order"); - }); - modelBuilder.Entity("SushiBarDatabaseImplement.Models.Component", b => { b.Navigation("SushiComponents"); diff --git a/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs b/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs index a8b920a..d58bfb9 100644 --- a/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs +++ b/SushiBar/SushiBarDatabaseImplement/SushiBarDatabase.cs @@ -15,7 +15,7 @@ namespace SushiBarDatabaseImplement { if (OptionsBuilder.IsConfigured == false) { - OptionsBuilder.UseNpgsql(@"Host=localhost;Database=SushiBarFull7;Username=postgres;Password=postgres"); + OptionsBuilder.UseNpgsql(@"Host=localhost;Database=SushiBarFull8;Username=postgres;Password=postgres"); } base.OnConfiguring(OptionsBuilder); -- 2.25.1 From 36b4087e3bf6a225b78f8c639ada361a807bfc49 Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 2 Jun 2024 22:22:20 +0400 Subject: [PATCH 4/9] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SushiBarContracts.dll | Bin 0 -> 30720 bytes .../SushiBarDataModels.dll | Bin 0 -> 5632 bytes .../SushiBarListImplement.dll | Bin 0 -> 25088 bytes .../SushiBarListImplement.csproj | 4 ++++ desktop.ini | 4 ++++ 5 files changed, 8 insertions(+) create mode 100644 SushiBar/ImplementationExtensions/SushiBarContracts.dll create mode 100644 SushiBar/ImplementationExtensions/SushiBarDataModels.dll create mode 100644 SushiBar/ImplementationExtensions/SushiBarListImplement.dll create mode 100644 desktop.ini diff --git a/SushiBar/ImplementationExtensions/SushiBarContracts.dll b/SushiBar/ImplementationExtensions/SushiBarContracts.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b75564f661b37c9968311ab7172c4442dbc2e90 GIT binary patch literal 30720 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 E1+6-M3jhEB literal 0 HcmV?d00001 diff --git a/SushiBar/ImplementationExtensions/SushiBarDataModels.dll b/SushiBar/ImplementationExtensions/SushiBarDataModels.dll new file mode 100644 index 0000000000000000000000000000000000000000..5241fa15b739ac2a035a5fb92a2bf326f1a3b1b1 GIT binary patch literal 5632 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 literal 0 HcmV?d00001 diff --git a/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj b/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj index b4adc48..3438638 100644 --- a/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj +++ b/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj @@ -11,4 +11,8 @@ + + + + diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000..d957fd1 --- /dev/null +++ b/desktop.ini @@ -0,0 +1,4 @@ +[ViewState] +Mode= +Vid= +FolderType=Generic -- 2.25.1 From 5652a91e1fc457153c37538248f34fb6ce4ca081 Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 2 Jun 2024 22:32:45 +0400 Subject: [PATCH 5/9] dll --- .../SushiBarContracts.dll | Bin 30720 -> 30720 bytes .../SushiBarListImplement.dll | Bin 25088 -> 25088 bytes .../SushiBarContracts/DI/DependencyManager.cs | 5 ----- 3 files changed, 5 deletions(-) diff --git a/SushiBar/ImplementationExtensions/SushiBarContracts.dll b/SushiBar/ImplementationExtensions/SushiBarContracts.dll index 2b75564f661b37c9968311ab7172c4442dbc2e90..548e403f159935f7119085a8a578f6bbbd870756 100644 GIT binary patch delta 238 zcmZqpz}WDCaY6@6L(t-r8+!y&1xlXfd0Y62IkZL{?y6HY^V+;7HJ??(*euD!z`{J$ zI4R96(a6X&$=o8%BH7H?GBG95*vv4|!oWN!E!o6!vvc-VW)>G7pe3r_lVkED6rh6TQcyvVYPD0mDdx}8kF3A>>(}Nh`7x~i#tdc*Nem_o z1`HMq<_xI}#z0;gP%M$b2nbDqJaeE-8W1M~MU5FOfifvT4AN%^q%D9t&B1z-fu>k) Jt}kt50sxwmNOS-I delta 238 zcmZqpz}WDCaY6?RJD2RLjXeUX0;M(G<#{t+_)NYc{Ag(p&&|ziQuA3gQY;OU4U8<) zOwBD#(hLn!OiYbU4UAHf3=E9TlT%EL%#u?~lPt}WH#=utCGC1`AU8atA7fEC4&J& zG7uX9S!oQW4CX-E1jsT3ilqQqrVPeF43bY_NCMIZK)yLp2T0C{!3@kY1q`3*euD!z`{J$ zI4R96(a6X&$=o8%BH7H?GBG95*vv4|!oWN!E!o6!^3w=&mPzR{mnSPk1_%T&+y2b;$}xc0^)|3P+SgTtn%2v&b%1~Y~v1``GY z1`7srhExV)ATJFlmdIcPgr-2AIZ!4Ih?9Y$#tfD~nG_%f=`#e<7C@cmU_Hq|Q!FEN)9-5>o0p5|XqpE@(hb3NmlQ}zLyoHq9a7;Kr85*RRm>QcJ7^Nf`7#N!;rG>!)ntXp0D&g$3zt4l z3ifTBQn}vQ?w!}4rt!Izejkqgzy0gK)265hR{s DdZkQL diff --git a/SushiBar/SushiBarContracts/DI/DependencyManager.cs b/SushiBar/SushiBarContracts/DI/DependencyManager.cs index 0c76057..f848c29 100644 --- a/SushiBar/SushiBarContracts/DI/DependencyManager.cs +++ b/SushiBar/SushiBarContracts/DI/DependencyManager.cs @@ -1,9 +1,4 @@ using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace SushiBarContracts.DI { -- 2.25.1 From d8e2b0aa2ed761e35fd299a585289496f1153cd2 Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 2 Jun 2024 22:56:21 +0400 Subject: [PATCH 6/9] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SushiBarContracts.dll | Bin 30720 -> 30720 bytes .../SushiBarDataModels.dll | Bin 5632 -> 5632 bytes .../SushiBarDatabaseImplement.dll | Bin 0 -> 75776 bytes .../SushiBarFileImplement.dll | Bin 0 -> 39936 bytes .../SushiBarListImplement.dll | Bin 25088 -> 25088 bytes .../SushiBarContracts.csproj | 1 + .../SushiBarDatabaseImplement.csproj | 4 ++++ .../SushiBarFileImplement.csproj | 4 ++++ 8 files changed, 9 insertions(+) create mode 100644 SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll create mode 100644 SushiBar/ImplementationExtensions/SushiBarFileImplement.dll diff --git a/SushiBar/ImplementationExtensions/SushiBarContracts.dll b/SushiBar/ImplementationExtensions/SushiBarContracts.dll index 548e403f159935f7119085a8a578f6bbbd870756..cb3df180a226eb99957239f9e854454cdc8e8898 100644 GIT binary patch delta 238 zcmZqpz}WDCaY6^npFoM*8+!y&1saY$uAZmz%Voi}%6pe5SkBqJCN-Z`!_>^wDACd| z)i5pD#MIo-)HvDL+|<~@$iyPe*d#5Q40V7 delta 238 zcmZqpz}WDCaY6@6L(t-r8+!y&1xlXfd0Y62IkZL{?y6HY^V+;7HJ??(*euD!z`{J$ zI4R96(a6X&$=o8%BH7H?GBG95*vv4|!oWN!E!o6!vvc-VW)>G7pe3r_lVkED6rh6TQcyvVYPD0mDdx}8kF3A>>(}Nh`7x~i#tdc*Nem_o z1`HMq<_xI}#z0;gP%M$b2nbDqJaeE-8W1M~MU5FOfifvT4AN%^q%D9t&B1z-fu>k) Jt}kt50sxwmNOS-I diff --git a/SushiBar/ImplementationExtensions/SushiBarDataModels.dll b/SushiBar/ImplementationExtensions/SushiBarDataModels.dll index 5241fa15b739ac2a035a5fb92a2bf326f1a3b1b1..453b3b00cca1170c9400c199fbad80bb36b33463 100644 GIT binary patch delta 235 zcmZqBY0#O_!7}Ae!GVoE1v~;W?hBtgZ*X*KH&gYQuln@#n!&Jkx zWD`?!LsR2qV{=nu3nLSYG-H#rB(vmHljKAL3&Y7X_*7U5qV)DpKEM|s@XRYAg>{~+ z@0>L&;`v?pj!#zLk5YgN>dHU`fvW8tZ6XAwE_nMgcb?|_&9nGdG5eb`m@$|#7%?O= zSTYzgqyljoLo$O2P|O_2Hf1md@{ECO5X%Cn&ICxN0of)%G6|?R8K}nuNG38E0A&m} JPZrK)0s#5oL6rai delta 235 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

?RdiqFF+y>Xvzl1V-$2C-RwnR`H{Nqthjv2Y_T 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 M&1&{h($ literal 0 HcmV?d00001 diff --git a/SushiBar/ImplementationExtensions/SushiBarFileImplement.dll b/SushiBar/ImplementationExtensions/SushiBarFileImplement.dll new file mode 100644 index 0000000000000000000000000000000000000000..e167b36170dc7e2e45e9029dddbd1be260e98b06 GIT binary patch literal 39936 zcmeHwdwf*Ywf{P2X3k6|lOZ#CkU+o*5FJQ}yafd$5Y)&+ASk9vVMqpuCK;Fs2qJVM zilvIJ_0?K!L3|V~tth@)twf>Ks#SYyYujrJ)q1N}YwcTmi@)z$d!I9Bl3;u9@At>= z^ZWdwv(9?$wbovH?S1yyXA%~C>I>u{A}>B4e@yfkuKY7g;3tDD#Nm^^9j1c?FIGQh z%zv?Z>Du;8Y+X9FCY|VvwI;f{Qr)pt$yj4Gj?$(V%_W*| zc<9k<7vF7rJ4z#Bg~m9do4~OY_rZs7jp1_$AEIKxO%*pYIDYkG5P{D>9$I-dtMdQ3 zt0tL+pOvtC9wUc{e#?pI`*V~i1m30xiI(=2eG(lb3b^C}(C4`5`tIbWZqSe22mqP% zRmTlVeqso(KAlOof|A${0pX6`f{*KG7KW=no$N?Kkz=K!_^_?p@NxajBAV?Y1-*&$ ziXV>6Bp=cF=<9MKWbuFWGu+&Qrrt3lOwU$9z(6R9AqW`AvtkGW20En}f|QK&(0q7D z`v{q($Bm#>=cCfX+Uc1v3ZlkLMTvqbShEO32@_~2L@5)f86nD;z$jQ$SWEsfCF8ub zYaqK@wcRv4u8Ws*tHBH^0OFO5XCa zpFLE2is_O5#if5BxPNi63WEC=7c*nt$qWHeW5&@1D}_*kNKG91wNh1@z~EY`VVXck ztkiHO#=y5lTi~02($nlnhwK`JA*d|Ajhr!?06I`)nr-1DXWdcYi+QWENy24?7(Ft^8l2C zmS-yrd&%0um((d}8;=7N`s)fPGa6W^_8gZ->$r7*oxoU-2cdS`RJ3!2@XcHZEXjos zs-*y0NncX9q7#wKgF1#YR1AE{#ZXsaZ4pi#hY>a7sI_4Eaii8KM|hYwMYXm0p<&AF z(9px$nz7!KOKW{`tQ=NREfsJ*c2jH$1i>)0qiFMKbTpO%p=;*jQ)Ne z?dQh>KXKbEm!3a`NgX_SAV*#d46=>YuL!1P!4w1xta6GW2pE`&iXjLXxT7hCAYepn zh9F=>ZH6EiQmnJWRmbnGF_NLFqny~FmU{b*| zfgHEK&7Getqs$UslWJ)U+6|F*@Z(M6KC*7xto(N0;dYpZs1BC!Dxlh7v4ub6+?&3X z+co63dxG0xx}qIRc-d3!IL+pkAh+Ah?Plkj-ee(xc*c-EPiN*I`F1-LxW7N z+jdTVt7o_s<`sOgB#vsYjSthUB*EBAtlQR<-|8^8LJgu7OX8RkwQ<~z#1|(geIvIz zH^0>pZiPZcE0)ADZ))S!+=|yblP3l@?U%aqZ8xtHn261w{=i(|qailI-&Rc<6(l}^$ zVc%V`cpwb5ya)mYLQ)Jtz<@u+5JcUtkY3(@=I_}~rQ`U2HLb-{o{rdC0_I^v;@!T<6RP5=&>^OlF`>PsE@VP?ECq|fl-rHe8&;dX^)?A5#x~<(69n6gi%k%0GcGnk zuuWd1u%f+_`4k8g9~N>ebrEo`L`+XBb+IO}c3COhpGAT-*h+nx2|OcNbO++#pWL&+ z&;e?aZRgh{ZWC%qlrN_yogp^k>`C)0)6NK)yp(EVF@$kv&5*P+IS z+HJbT>^DE`DAL0Qkm;b(WBbcw+GLWhXwzr**Rq38HxD4weMz_Xm&K93zWwt!XDyjE zkfL}o%dFH|;9SXAL9JA~Ca`Q+sY^70wb@ExO%*jP>Q<^l6IhR}R3{Ts;}0NJ{3DwM zS$C`K8h0|MygHA%PS#WanqQI2m>K6-uJaNN)xyeLqRcqQrujp1NizA~WAlgR5@g0X z;_GUhhiz5%Lo!|H!{x_y$#ZFIlxx_Gry$+R)vLK&w;GL!!bnL0D!Ce@Jaq^H#t54s z2pCXR8iIf^%4P@x2BK3Mf`D!wi$x(dbLQ_|RX{NV3wT&`Rdyb$4T~uJ6c*i0=fx_4Nw^p|+=^Yeu z6VoxT6r{&c_|^$5sF^FNfY$RT&{FAv!cPZKK#A&<6}*gLGUA)TFw?&pK=pD+?q(g8 zRTzA404dg6<#Ul3`LOeaK^Z?2%1Uk5L^~5#X#&fUmAYCJolNXtLY=$KMCp{EA8CH9l6B~$0(&8X$iAO) zc=sjzJpF;<0vMli*w_ah+wczj* zcI{R+io+wm=<_a%J`bOG#LC}Wd?tfJJ;+O7>hMmy=;@HtKA!pI z94cbak7>FG>B{~x^_Zr6m9EKCNY8c1Iow?=S?=yW&;9wLbeARD7Uhdy$cb6Prx1DF zmGQ^&(06~n9xDsyJuXp$;Jn8rLJ*So#rd9I%q5m3+m_^uf0z@qMDiY&yql#`AlTgB z$lWmGxQ|(>n}G9@g*xgovqX@n!o~QrEX;c<&S;@=$p7A>5()a07?1>I_qci z`Ad#7TFRZX)How$@_nJtGiOa@ZlLtMXwL64D#pru2?5q*SrQ+P+~=QxR6{uC7QKz( zIcsLV4A$1MjH*slgoWfgM^UsAWB%}J%HuW-|GV5od}n>IB++Age2+UF{wrne*uuON#@yO=Auw46mH|0#y~fGE2aam8 zEQ!ZB`N((QcOgSKKfmD7#k-J;pow=Od`aDlwyt*}Uk54gLL84s+`qGveXKYFmbbN_ zohyW&YG4;i# zf}8&?q>A&1cOg#O)ctT_zYB4=+dh@wx1Y25Z$Psq%aZsgIKjJ+{ovqT$YkjY?jx>u zA&x04g?Y;FLWG0p_+1DGrtb~vT?iJcNaj~!$Fp@g=fo8wQhyX8m3r=9zjq31Q0-|J0)A52oamNDya zAKb!ResyVWTM0}G2{R3~{2Pwp0ZBGX;x*`T{A2*vd%agsM=|cpZ*^ZL z5jg-Gp{XckEl52G25&#)-C9vWT`ifaN&E)r@B|&}msYi5xzt2_sfW;pLbXYym^uiu z^th+Qidc0`?p|P!-sZp`hC&>hnA&X##Nz7KTP#)GVo9!BAsjJFsIGU0?;z-E?jI1D zt9X3i{_#b+Vb2Pb+^K!S_)jN{IKr^s3!VdR(Nx@LY%AQ8x?*ke5!EeTro0hvU0olO z@1EFXZKF0}XNH%#zU|-pg!Z~X(u0J>@_Lv0Hf!j5#K2kjf2^mp*0T5YN~y^&^OzY;BL(4%q@K7Z>m`4aceI}bBNPd z&%ME}rxtnSz8o@$P}q^o#}a{O>pC>E%&qHj!LTru>P16d9-hV()jkc8IL0wH_&$!6 zd4`RTgIzETX5@P-n%V+K+TLO4miVGRSvBh_HTQ^{tG=foOUL{^?#w)Q+d2`Uj9v$j zCd5W^bDSWxEuSQ`G(Wxk}i%dRz^Cz!iWe#hZ> z45Gcpqb2q`7ibeaLbeGEkcguQ_xBg-=a26T^|pDQ_x{ui=pfeW6FIbRl)Mh$c0gDgBAFuXa|8Rdw(te}ANzYU zjoR7}*hf`{If@tIg{4AFgwLzZrcP*)+6*B>rp9(^)ejPWLd(mgll@mC1WcZz9FORGg_D>mu)J+E+POj~%Z0#_TnM_v zrRFeI2$Lt0snjuCp<>`mE(U&%63)MI7`P>%O#6SQ%pKYgCp4}QdtK>4rtH0m`c4_7 zGXI^nsUNdx{hcz0yY2G)zLm52SD{&xWl8)rIKlk?2{@Sl+u)|}cgh@7Rth%+p8vwZ z-iYt29GIkq=fuUx3C1gu8LD%Fm5%3q&ct!6DzATe^Pay`#w}7=w(a)g7e9L4R^KUu z%}8dL_Jg?l`WfEOkNq6wMB`7rh7MuA=Q?CN(lfoDA33coiiF?2=r2tU_sBQg#<;G0 ztIjEW+LQ8wVdlQ$nEDwU_$xWokMJoRMn2Huv?$OsSrNuIyiQQ*2KaZ zloFcUkr}<3%-s|NPh*MORCP^odT2f<#hPK{vcp9(Hlfqi9XIs2FmSgTQ@7jfwK!d9QzzpxWp7TVRCe zgK+Kx;hqoD)qK%Eoe!$ba&~+!%(>Hp*`lPMc1i0qNQ{+T0amV~$iO)|6ZZ9tzL~(J zLMB?-)IrX~TL3u=oCmC{vMzX1+}O;WH*g>GJ2K`6o|H1!mS?aIDLXUQ_z~L?k0C~5 zpeDH(&|l>^$u?0^eY2sY*#0=u`ph5UExQJ+oE>DN1zfHRxjNO22r#A5vrE{-6L27} zEORZ@a~9TQLP145{6@pV+3}^U{vS{;)QP~mvb=nN<~8xSu>zI)caEr|Z$xPwk$uI8 zyDC-c5W`GZ*5DTo*)P^8^+d-n=lF?ktf#!T$O7?Oj{R+by83+WcfcE1`#&M!VVGiW zSr5CO_?;X<{a~!66{^B48=)2<{g{ri1)A7oe8Tw3HCG9?e zbc1*T^rqf}r#@|!bR$bKSuIGNyQVOCjKHkVlwg~Yy$pJ}`bEX}K+KhIU)fwv0W$zC z(9bPwpZBYMR>b`E@CsW?cD1}7s@6F^?8tg39NZQ1)Zpx6USpR@o!&XF4Dylaejw(&*D0LF!1K?bbHqt z3?OV_QP_m1i;?Fy(-pW`7lSwQ?DLx%alH=oyJ66?JNTO@@?+wg5z7YOSx^8zePm4J z7jf);5k4?aa6{Mw64J}>nhAp}XE&&K`F*lUxME@Ad#tpxa2<({SM!Ko#^V$JSah^# zdeowMVTL~sjgAhY&M5OI6n!NO7+w^y==vgt^8~IHNWvc~_lv>%H$3hp8m8-G{f6uo zA=Et)riK#A9Gd?jR5dLZ*>}S%8$%m}dMNVs(iyOEl~9ibnHo>m2z9ei6X<%OGD1zH zn}xbYs7d%`MUEvY)MUDgJk`bY5A<&a_7(S&$0#Oj!a$u)4+!;Fq0XQOh58(deg;ja zgF-ze)C_$4IA>)hez!G8&7<#$=HEqgDZMPz8JNj4@GFo%66!UfE}$Q~+AX7>h)l(D z5&c3a70bo+x=<>X<@76|R4kvSV=gNz=na>ZR{E{WN*lf7vXZ3VxvZ?F-@B}=p+ATW z_X65aqVA?bp~hg@nt^dH5~@Y0 zjWo!}fEIfi}Fy zS{{7JAEB{;)wHdUIST~V3QP&SNZ>R;gZ>nF6n5?oJO#Kb@O{8v1YQDsGVoKtOyF05 z%GZ11<+6hRa5(#1-f!`9JWB%%|0eu-{&#@CBCYlod;mONz#exAR5s^Ht2)sv5qxC< zTR1boUWyC;0vHN#+lGR_1FBY!h|SOVS?5myFV0h|%ZdW3@71(7I?TZ@mOLoPnNd1Z zXrpgrpq!S`DS$&f3>O;X0~S3}e7XzH6ntiY^=Ct8GMxpulNJF!L7xIV)o24;ZFB*C z&0tQ%+yuDTb0y$l?{$FBdT#+d=G_fA-glo^I|%&8#$$kIn%@Jw#KVwtUrukC42KeP zNcbV+O+>=+TXfpsKLVc^TJGhj{tG(G@GENE3x*4g!UFC^sS8#LURl8U!=ST_MuW=%k*E);4<;1rzb8l1kV<*u4B5i+Ul)Yv8=6`l`ZYF1r8P>nA5<~* z2(=^ddgDay(%(r&F#J(Bqf z@{VTN4fK|8CH$?`)cd~fU=@8+sJ9A+51v3VI;be)Vpxgcp-60sl^B%>rD`xnLxt** z8jR5>E&F-l6s)>+TJ~;XF{sH}_Sy0q%n>w0s2zbD%I^eqj!;}@JA)(XCWrb$u!bsX zRgcz(ZVjG7^Av?TyCWETJ*7N3X%DzxlQ%$3m;)3S## zS4PulE#tW|hQ@0d&y_KBx|U4|PQW{<*;>{VG(gSMvbx9w?2wwZY$o13)X~L4asT!P z$5L!8N5<5B!Bgq8Lh(F$FgTuGRTTR7ID8b>v*r$&M-%9AMM?iA&}%}yRZwqD!P)## zp?U(-tzuAbYuOIGZJkITXxWX{VRIsVq-9TFj3$wZ^B$s}!1EZRNmMA*TLr%^f7F~z zC0h2!@)to>Y1yi>DcD<$(z33yVo+nX?3?9N@Qg88%N{K+1~p44?(I{-sdUhxz8^fD zZW^chcV+PpgVX6xn&Q!%P7jP{nHs<8^r%ofr0>(|uX(bMg;HZXodOe7yB$~~XHc_mTAultjT2tM~%S;-h+ntMcXVL`S?gF$slg`kx@#Pa}7R}MJGw^<4 z7R}ePe8}Jp-0U*v{B2h3B3sFGg|h$ zvbW4ex<<>We3Yk=z91Cm^T)xtRL75hQcM3HJc|zUgPyF(Zv@YwKPd{e^iHseu9z$` zsih|R-V~uEpG|a3D3$9bdRr)!&nEhVmVE*BaxQ(OWnV?ToJ*e5*veZ46uiNlM}F}v zJ4y?e(1VIXkA@aD)9*FK_0mlD@xv~u3TdX7^C&!);O8wPTV9QJ7i#Jk1-rdV=^3F^ zy9?+wE$b|=ExdqY(^b3W<�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�oawObv3k2VL1D?K{xAQ(MrQkp-YRjs)I2F-AlCd#lHrt4@xqB&iqsYngV`)NfSEJ949C_@U2P({Yr@~xxGCi7 z0`{B1*pXk4-q6L!eM0)U8u@Pp-i<4d4-H#}YZ`9|=OSzC&^`?bk6NqPnhhy`|D6VL z z-_ZU#>_udSoP!PM1!sXH@01Gc7QbAFRAzgcgEmPW4_+3Qlm(`Z4$X^5w6sKIh5%Z$0wC0sMJtZ_F?Po){TEAdv`@ zVFo^-7cd+q_^`0gZ<;g;+iue~u1+Pm0bDGS7K|+w3=*@1B#Ff;4HeNA4yZy=aYe-yHA+#V z6cvcJD5OfUs}$8@w{3~)W-U?Oq9q!zbsXgwdy5rd7&%?T@#P5&R1JokqAj7A8i8mF z#*UNUGMu0eC8f)8537P;IFySpD#M%{vDFst_pmCw36A!R^^L>tZJ2%-$-W*PC)eLZ zC&~4_=v2A>IXYdg|A@|#>xcU8yQXpisOP^pHf_1EHPD8WqyA&`!iU1l|KP|p!uqp|CtpdW}-D<7+>sR5&kdGD@nGefCG(I zM6*3yL3|a{Jt551byDFhl7&I8tZWuxI(F;1pX~`iwE~8F)V!`x^SUAsgw`e{Ve|@x zI<9vq*C?A^?3%CQde>m?&{f*^F5As6Q%A8&*{?E-{m9H`b8?ddsX`#TR3KGaF;EEa z+3S=@@GmI50Q%W4p}`$WGiHYTpl(;ay+g$pV=?06tHgJQ(}O$MVT{`=hcVS+R5ZJv zTkus{?62};SniTYx#oGr&F)u$o7^oVb(Gz`{e%3zX!h%NxAse~M#0H`0>OZZB>^CEO9~e|uQl15vFyQjk(wAPi7I)Wja75xXNki)T3eH5Ndk z?%S-)7>Ci0&-wUVsKvOSX$zBEZYmF$lLZlGPeK$+bq6XuQqR zoeXZ$Dm>4a{(!-5&E%=1+l`WTAHwo<*4W2jKd4cRJfZcuh_!y4^?MAKK8b&$2S0qn z4n)sa7rEs|&quXkTgCST-VNbirI2VlFP+Qn%lWoO1=ek)Qem@3Ijm7OEAFu3HY?z; z0yeA4VPUhU0*E=Rm=}A2Vr-^xr{mi~I4p&OZAED@emT$0ojns5#KVJzVFxLRu(lSF}nfhPWS##vM`Y5S zv+?-L<@gVON8F%#A!;X2nLHseZG3Y4>efkUexBoI}OJX5tI65;e#|{<=5+aS<>yE?=v)aoq$LM1qE7<`g+M_yfVh{@ABp zjj?6?Sqn_zqP8k@%{}n=DiW#iBu3Zo__I?MT;hkn=t8OJChEQm(q(kKfs58@w!b!@zA8zw;4Q%x7dcLv$F~xs@TmH@BY`zH@O?=~+`te!s9DFW3 zgui#s)uMl{^GpJE0ltO40&p(A4c{y$iVNkt?F(_fD1VlUp7g$dTzyxYM~Z*cRsMV) zC@(%-AMT$<5d1y*1Wsqp!ubrJ7uu(AtT#$pErm3Jlb{Ubu5&Lj^nmwW7&Q=6x18|c zo!9`Do)w*O=(qZB63)Sp1AP0R|GKe#3dBA(=gznw&z%I#?h_-Qj=E1b@tYZ9%kBlA zi)C=$#HUW{a%Xk_O`GGeKp9SdE`UuwZPn*~ur(fMmE)Wb$1nu?oWX95_qQp zpG*@$O$5%^ROn3tTn&5@;3~A`Gsj7Q35?WKwBVnqGOqj^_Zdh#q1SrP; ZkMlqIc|iTU7Y8T)6TSa0{(mw9{|oizzSjT% literal 0 HcmV?d00001 diff --git a/SushiBar/ImplementationExtensions/SushiBarListImplement.dll b/SushiBar/ImplementationExtensions/SushiBarListImplement.dll index 7faaac583864bbd1822d203d61e48484ceb95b9e..61e77d4078a7b897ad554211d3ebce78c7cbc311 100644 GIT binary patch delta 236 zcmZoT!q{+xaY6@+L>~9ujXfXy1ZzElk=N<0t`7cOwCM<5-kl= z4bzfMOwA2VjgyVdO^q##Of1rjP12Igl2c8R6Adg3CqIoaXZfXGJ%6%7WPrf>t&wK? zh20(J#a+q%qG6Lhxgjz^0V>!C69lT3-~YU^PT)qyq3v(DA8m??VD&d;Fk>)fFk(n# zuw*b~NCo0FhGYg4pqM$3ZOUK_aRk<}8!aWiC%vhzt-2V7U8O zbJ<$&xyzQ?yIjgPo7@nYpa2!Dz6%uustz`feQ@oKNB)EC$OeZ^Q4y^E#tdc*Nem_o z1`HMq<_xI}#z0;gP%M$b2nbDqJaeE-8W1M~MU5FOfifvT4AN%^q%D9t&B1z-fu>k) JULGIG1OV54OuhgB diff --git a/SushiBar/SushiBarContracts/SushiBarContracts.csproj b/SushiBar/SushiBarContracts/SushiBarContracts.csproj index 8c2ded0..f8bb4a0 100644 --- a/SushiBar/SushiBarContracts/SushiBarContracts.csproj +++ b/SushiBar/SushiBarContracts/SushiBarContracts.csproj @@ -7,6 +7,7 @@ + diff --git a/SushiBar/SushiBarDatabaseImplement/SushiBarDatabaseImplement.csproj b/SushiBar/SushiBarDatabaseImplement/SushiBarDatabaseImplement.csproj index 2a749b8..a66f784 100644 --- a/SushiBar/SushiBarDatabaseImplement/SushiBarDatabaseImplement.csproj +++ b/SushiBar/SushiBarDatabaseImplement/SushiBarDatabaseImplement.csproj @@ -20,4 +20,8 @@ + + + + diff --git a/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj b/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj index b4adc48..3438638 100644 --- a/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj +++ b/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj @@ -11,4 +11,8 @@ + + + + -- 2.25.1 From 56cbd4bfcdb22ebbfc5f15f51e0ff6d56dde574a Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 2 Jun 2024 23:27:47 +0400 Subject: [PATCH 7/9] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SushiBarDatabaseImplement.dll | Bin 75776 -> 0 bytes SushiBar/SushiBarView/FormClients.Designer.cs | 114 ++++++------ .../SushiBarView/FormImplementers.Designer.cs | 164 +++++++++--------- SushiBar/SushiBarView/FormMain.Designer.cs | 21 ++- SushiBar/SushiBarView/FormMain.cs | 5 + SushiBar/SushiBarView/SushiBarView.csproj | 3 + 6 files changed, 163 insertions(+), 144 deletions(-) delete mode 100644 SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll diff --git a/SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll b/SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll deleted file mode 100644 index 2c2cf6794f9ff8f47c6de00c2d4ab7db972634c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75776 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
?RdiqFF+y>Xvzl1V-$2C-RwnR`H{Nqthjv2Y_T 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 M&1&{h($ diff --git a/SushiBar/SushiBarView/FormClients.Designer.cs b/SushiBar/SushiBarView/FormClients.Designer.cs index abe9b7a..73246c4 100644 --- a/SushiBar/SushiBarView/FormClients.Designer.cs +++ b/SushiBar/SushiBarView/FormClients.Designer.cs @@ -20,66 +20,66 @@ base.Dispose(disposing); } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - buttonDel = new Button(); - buttonRef = new Button(); - dataGridView = new DataGridView(); - ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); - SuspendLayout(); - // - // buttonDel - // - buttonDel.Location = new Point(382, 12); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(119, 38); - buttonDel.TabIndex = 0; - buttonDel.Text = "Удалить"; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += buttonDel_Click; - // - // buttonRef - // - buttonRef.Location = new Point(382, 56); - buttonRef.Name = "buttonRef"; - buttonRef.Size = new Size(119, 37); - buttonRef.TabIndex = 1; - buttonRef.Text = "Обновить"; - buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += buttonRef_Click; - // - // dataGridView - // - dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridView.Location = new Point(2, 2); - dataGridView.Name = "dataGridView"; - dataGridView.Size = new Size(374, 447); - dataGridView.TabIndex = 2; - // - // FormClients - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(513, 450); - Controls.Add(dataGridView); - Controls.Add(buttonRef); - Controls.Add(buttonDel); - Name = "FormClients"; - Text = "Клиенты"; - Load += FormClients_Load; - ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); - ResumeLayout(false); - } + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + buttonDel = new Button(); + buttonRef = new Button(); + dataGridView = new DataGridView(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // buttonDel + // + buttonDel.Location = new Point(610, 12); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(119, 38); + buttonDel.TabIndex = 0; + buttonDel.Text = "Удалить"; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += buttonDel_Click; + // + // buttonRef + // + buttonRef.Location = new Point(610, 56); + buttonRef.Name = "buttonRef"; + buttonRef.Size = new Size(119, 37); + buttonRef.TabIndex = 1; + buttonRef.Text = "Обновить"; + buttonRef.UseVisualStyleBackColor = true; + buttonRef.Click += buttonRef_Click; + // + // dataGridView + // + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Location = new Point(2, 2); + dataGridView.Name = "dataGridView"; + dataGridView.Size = new Size(602, 447); + dataGridView.TabIndex = 2; + // + // FormClients + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(741, 450); + Controls.Add(dataGridView); + Controls.Add(buttonRef); + Controls.Add(buttonDel); + Name = "FormClients"; + Text = "Клиенты"; + Load += FormClients_Load; + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } - #endregion + #endregion - private Button buttonDel; + private Button buttonDel; private Button buttonRef; private DataGridView dataGridView; } diff --git a/SushiBar/SushiBarView/FormImplementers.Designer.cs b/SushiBar/SushiBarView/FormImplementers.Designer.cs index a686d6b..fa7f62b 100644 --- a/SushiBar/SushiBarView/FormImplementers.Designer.cs +++ b/SushiBar/SushiBarView/FormImplementers.Designer.cs @@ -20,90 +20,92 @@ base.Dispose(disposing); } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - dataGridView = new DataGridView(); - buttonAdd = new Button(); - buttonUpd = new Button(); - buttonDel = new Button(); - buttonRef = new Button(); - ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); - SuspendLayout(); - // - // dataGridView - // - dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridView.Location = new Point(2, 3); - dataGridView.Name = "dataGridView"; - dataGridView.Size = new Size(469, 405); - dataGridView.TabIndex = 0; - // - // buttonAdd - // - buttonAdd.Location = new Point(477, 12); - buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(123, 52); - buttonAdd.TabIndex = 1; - buttonAdd.Text = "Добавить"; - buttonAdd.UseVisualStyleBackColor = true; - buttonAdd.Click += buttonAdd_Click; - // - // buttonUpd - // - buttonUpd.Location = new Point(477, 70); - buttonUpd.Name = "buttonUpd"; - buttonUpd.Size = new Size(123, 52); - buttonUpd.TabIndex = 2; - buttonUpd.Text = "Изменить"; - buttonUpd.UseVisualStyleBackColor = true; - buttonUpd.Click += buttonUpd_Click; - // - // buttonDel - // - buttonDel.Location = new Point(477, 128); - buttonDel.Name = "buttonDel"; - buttonDel.Size = new Size(123, 52); - buttonDel.TabIndex = 3; - buttonDel.Text = "Удалить"; - buttonDel.UseVisualStyleBackColor = true; - buttonDel.Click += buttonDel_Click; - // - // buttonRef - // - buttonRef.Location = new Point(477, 186); - buttonRef.Name = "buttonRef"; - buttonRef.Size = new Size(123, 52); - buttonRef.TabIndex = 4; - buttonRef.Text = "Обновить"; - buttonRef.UseVisualStyleBackColor = true; - buttonRef.Click += buttonRef_Click; - // - // FormImplementers - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(612, 411); - Controls.Add(buttonRef); - Controls.Add(buttonDel); - Controls.Add(buttonUpd); - Controls.Add(buttonAdd); - Controls.Add(dataGridView); - Name = "FormImplementers"; - Text = "Исполнители"; - Load += FormImplementers_Load; - ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); - ResumeLayout(false); - } + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + dataGridView = new DataGridView(); + buttonAdd = new Button(); + buttonUpd = new Button(); + buttonDel = new Button(); + buttonRef = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Location = new Point(0, 0); + dataGridView.Name = "dataGridView"; + dataGridView.Size = new Size(679, 411); + dataGridView.TabIndex = 0; + // + // buttonAdd + // + buttonAdd.Location = new Point(685, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(123, 52); + buttonAdd.TabIndex = 1; + buttonAdd.Text = "Добавить"; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // buttonUpd + // + buttonUpd.Location = new Point(685, 70); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(123, 52); + buttonUpd.TabIndex = 2; + buttonUpd.Text = "Изменить"; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += buttonUpd_Click; + // + // buttonDel + // + buttonDel.Location = new Point(685, 128); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(123, 52); + buttonDel.TabIndex = 3; + buttonDel.Text = "Удалить"; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += buttonDel_Click; + // + // buttonRef + // + buttonRef.Location = new Point(685, 186); + buttonRef.Name = "buttonRef"; + buttonRef.Size = new Size(123, 52); + buttonRef.TabIndex = 4; + buttonRef.Text = "Обновить"; + buttonRef.UseVisualStyleBackColor = true; + buttonRef.Click += buttonRef_Click; + // + // FormImplementers + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(820, 411); + Controls.Add(buttonRef); + Controls.Add(buttonDel); + Controls.Add(buttonUpd); + Controls.Add(buttonAdd); + Controls.Add(dataGridView); + Name = "FormImplementers"; + Text = "Исполнители"; + Load += FormImplementers_Load; + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } - #endregion + #endregion - private DataGridView dataGridView; + private DataGridView dataGridView; private Button buttonAdd; private Button buttonUpd; private Button buttonDel; diff --git a/SushiBar/SushiBarView/FormMain.Designer.cs b/SushiBar/SushiBarView/FormMain.Designer.cs index f167b5e..b7bb3fa 100644 --- a/SushiBar/SushiBarView/FormMain.Designer.cs +++ b/SushiBar/SushiBarView/FormMain.Designer.cs @@ -44,6 +44,7 @@ ComponentSushisToolStripMenuItem = new ToolStripMenuItem(); OrdersToolStripMenuItem = new ToolStripMenuItem(); startWorkToolStripMenuItem = new ToolStripMenuItem(); + createBackUpToolStripMenuItem = new ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); menuStrip.SuspendLayout(); SuspendLayout(); @@ -90,7 +91,7 @@ // // menuStrip // - menuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem, ReportsToolStripMenuItem, startWorkToolStripMenuItem }); + menuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem, ReportsToolStripMenuItem, startWorkToolStripMenuItem, createBackUpToolStripMenuItem }); menuStrip.Location = new Point(0, 0); menuStrip.Name = "menuStrip"; menuStrip.Size = new Size(1381, 24); @@ -107,35 +108,35 @@ // componentsToolStripMenuItem // componentsToolStripMenuItem.Name = "componentsToolStripMenuItem"; - componentsToolStripMenuItem.Size = new Size(180, 22); + componentsToolStripMenuItem.Size = new Size(149, 22); componentsToolStripMenuItem.Text = "Компоненты"; componentsToolStripMenuItem.Click += componentsToolStripMenuItem_Click; // // sushiToolStripMenuItem // sushiToolStripMenuItem.Name = "sushiToolStripMenuItem"; - sushiToolStripMenuItem.Size = new Size(180, 22); + sushiToolStripMenuItem.Size = new Size(149, 22); sushiToolStripMenuItem.Text = "Суши"; sushiToolStripMenuItem.Click += sushiToolStripMenuItem_Click; // // clientToolStripMenuItem // clientToolStripMenuItem.Name = "clientToolStripMenuItem"; - clientToolStripMenuItem.Size = new Size(180, 22); + clientToolStripMenuItem.Size = new Size(149, 22); clientToolStripMenuItem.Text = "Клиент"; clientToolStripMenuItem.Click += clientToolStripMenuItem_Click; // // employersToolStripMenuItem // employersToolStripMenuItem.Name = "employersToolStripMenuItem"; - employersToolStripMenuItem.Size = new Size(180, 22); + employersToolStripMenuItem.Size = new Size(149, 22); employersToolStripMenuItem.Text = "Исполнители"; employersToolStripMenuItem.Click += employersToolStripMenuItem_Click; // // mailToolStripMenuItem // mailToolStripMenuItem.Name = "mailToolStripMenuItem"; - mailToolStripMenuItem.Size = new Size(180, 22); + mailToolStripMenuItem.Size = new Size(149, 22); mailToolStripMenuItem.Text = "Почта"; mailToolStripMenuItem.Click += mailToolStripMenuItem_Click; // @@ -174,6 +175,13 @@ startWorkToolStripMenuItem.Text = "Запуск работ"; startWorkToolStripMenuItem.Click += startWorkToolStripMenuItem_Click; // + // createBackUpToolStripMenuItem + // + createBackUpToolStripMenuItem.Name = "createBackUpToolStripMenuItem"; + createBackUpToolStripMenuItem.Size = new Size(97, 20); + createBackUpToolStripMenuItem.Text = "Создать бекап"; + createBackUpToolStripMenuItem.Click += createBackUpToolStripMenuItem_Click; + // // FormMain // AutoScaleDimensions = new SizeF(7F, 15F); @@ -213,5 +221,6 @@ private ToolStripMenuItem startWorkToolStripMenuItem; private ToolStripMenuItem employersToolStripMenuItem; private ToolStripMenuItem mailToolStripMenuItem; + private ToolStripMenuItem createBackUpToolStripMenuItem; } } \ No newline at end of file diff --git a/SushiBar/SushiBarView/FormMain.cs b/SushiBar/SushiBarView/FormMain.cs index 2b916d6..bf255fb 100644 --- a/SushiBar/SushiBarView/FormMain.cs +++ b/SushiBar/SushiBarView/FormMain.cs @@ -171,5 +171,10 @@ e) MessageBoxIcon.Error); } } + + private void создатьToolStripMenuItem_Click(object sender, EventArgs e) + { + + } } } diff --git a/SushiBar/SushiBarView/SushiBarView.csproj b/SushiBar/SushiBarView/SushiBarView.csproj index 087841a..d7ebe89 100644 --- a/SushiBar/SushiBarView/SushiBarView.csproj +++ b/SushiBar/SushiBarView/SushiBarView.csproj @@ -13,6 +13,9 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + + + -- 2.25.1 From 8dcb0798799c782bf37a9d00a9cb67cbf55492e0 Mon Sep 17 00:00:00 2001 From: tellsense Date: Sun, 2 Jun 2024 23:37:31 +0400 Subject: [PATCH 8/9] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SushiBarContracts.dll | Bin 30720 -> 30720 bytes .../SushiBarDatabaseImplement.dll | Bin 0 -> 75776 bytes .../SushiBarListImplement.dll | Bin 25088 -> 25088 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll diff --git a/SushiBar/ImplementationExtensions/SushiBarContracts.dll b/SushiBar/ImplementationExtensions/SushiBarContracts.dll index cb3df180a226eb99957239f9e854454cdc8e8898..35e4dcee4585967e72f389ef3620ea154ac4bc40 100644 GIT binary patch delta 232 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 delta 229 zcmZoT!q{+xaY83^9{1giJsNjAzD8el;q4xi^P77Dj5*XyjS?*lQw`IS zO-#)VO^uU{%}tFhj7%)jj7`##%#u@0k`oOq3@1O0FlYItUOj)ZLS%rz`mK>>`-R;d z=fz#g{-R-%KDi+>K>;e*2onUVmf!!pu} Date: Mon, 3 Jun 2024 00:41:04 +0400 Subject: [PATCH 9/9] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SushiBarBusinessLogic.dll | Bin 0 -> 64512 bytes .../SushiBarContracts.dll | Bin 30720 -> 30720 bytes .../SushiBarDataModels.dll | Bin 5632 -> 5632 bytes .../SushiBarDatabaseImplement.dll | Bin 75776 -> 0 bytes .../SushiBarFileImplement.dll | Bin 39936 -> 39936 bytes .../SushiBarListImplement.dll | Bin 25088 -> 25600 bytes .../ViewModels/ComponentViewModel.cs | 2 +- .../ViewModels/SushiViewModel.cs | 2 +- .../ImplementationExtension.cs | 2 +- .../SushiBarFileImplement.csproj | 1 + SushiBar/SushiBarListImplement/BackUpInfo.cs | 22 ++++++++++++++ .../ImplementationExtension.cs | 27 ++++++++++++++++++ .../SushiBarListImplement.csproj | 1 + .../SushiBarView/FormComponents.Designer.cs | 2 -- SushiBar/SushiBarView/SushiBarView.csproj | 1 + 15 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 SushiBar/ImplementationExtensions/SushiBarBusinessLogic.dll delete mode 100644 SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll create mode 100644 SushiBar/SushiBarListImplement/BackUpInfo.cs create mode 100644 SushiBar/SushiBarListImplement/ImplementationExtension.cs diff --git a/SushiBar/ImplementationExtensions/SushiBarBusinessLogic.dll b/SushiBar/ImplementationExtensions/SushiBarBusinessLogic.dll new file mode 100644 index 0000000000000000000000000000000000000000..7216e8b76ec74c20162cde0c5a4de81ceb58bc30 GIT binary patch literal 64512 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 literal 0 HcmV?d00001 diff --git a/SushiBar/ImplementationExtensions/SushiBarContracts.dll b/SushiBar/ImplementationExtensions/SushiBarContracts.dll index 35e4dcee4585967e72f389ef3620ea154ac4bc40..67c7228097adbdc7cb084bf7158ce3ea3295407a 100644 GIT binary patch delta 403 zcmZqpz}WDCaY6^nPQP=XEiWk%M?Yk{QJ1Ie3{In5jyKTq~HD`b?Iyw}WB-j1VzxtL)SVD7gyM1L33Hgs>%95a>`_1Ah}_3HjuozxzpT}k&$ikWea6S{mtJkmg)$6+QM?P z?@_Ve{P*fP`#9YkHm^y|XVtJsNlr2_x3n;~v`jX)FiJ`@HczxnF)&E9OinU0PfkiR zH8rs`N;TN*oXx|?E5XRXd12XwtrzxQ*r2dEI;Vh%v19U?JZ%;hrVp)?|KtS-e9R6B zHrJiyxw0=5eiU2)gMqnpla41KC<_XE&soLq2JN9`AU8atG@+93PUnO z5`zJQIfEsG1(>u1ikJi0MnLg224f&Q5h#}eRAT^Ufz+D;ML~2LgDDW20OgGsQW*?3 J*OxXj0RW`bf>;0m delta 394 zcmZqpz}WDCaY6?R)AFEi8+$GpGwz-oZ=%WgVsfX6G9%06wLnsH@ZBoXJ~(|9 z&)Uhniz{@ppt&q#zv5S%~$ecSp7{I%ovgxk{D7LOn_t>kevdg vjesx}NJB(Sf#QY?Akq{_r!p7-S!qChDL_7mOaY3SGMEERNZeds+Q@W_|Vv-npr`&%%iFeEc1F&HqI zGgvZMfJsZBh&hmL1QbtWFb1*{fpRH8H3nc7NWB?Q6hx;nm;#{*P~M0kmBC>1WZ_&U E0IGgWL;wH) delta 235 zcmZqBY0#O_!7}Ae!GVoE1v~;W?hBtgZ*X*KH&gYQuln@#n!&Jkx zWD`?!LsR2qV{=nu3nLSYG-H#rB(vmHljKAL3&Y7X_*7U5qV)DpKEM|s@XRYAg>{~+ z@0>L&;`v?pj!#zLk5YgN>dHU`fvW8tZ6XAwE_nMgcb?|_&9nGdG5eb`m@$|#7%?O= zSTYzgqyljoLo$O2P|O_2Hf1md@{ECO5X%Cn&ICxN0of)%G6|?R8K}nuNG38E0A&m} JPZrK)0s#5oL6rai diff --git a/SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll b/SushiBar/ImplementationExtensions/SushiBarDatabaseImplement.dll deleted file mode 100644 index 90e6bd92562c4a4c7728ccd468063cdaaa6d66b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75776 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 delta 9155 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 diff --git a/SushiBar/ImplementationExtensions/SushiBarListImplement.dll b/SushiBar/ImplementationExtensions/SushiBarListImplement.dll index ad39bf7ac12843849e75e58834832f5afee54394..cef2804cc4b1f248509c84bfe0248afd0fd4ed4b 100644 GIT binary patch literal 25600 zcmeHwe|%KcweLD-X3qS|Op;0XjXHsVBN<|V@FNIHAVH)2PC!v849O6pNlu(el&EN^ zK&91Qxz)DbTW+yxTUy&IZEdwrZ{aG}+IRK#ht_L9PcO8}ZS4cU- zH^MJeJz=bPp{i|1S3cR7vpaK{o@9Hbx7Y4ZZp$Wf1HH+v-elA2)?|;}k*$rzBGp>; znr5OEhL3)@Y|n3<)=torWYnl5+60cJxMy#{Gl}mIzC>k$o62rxu>JBm3J5-be6)2h zi}L>pPfaolpGTp0H6uerKW9e_{~RJJ0q@yCqPF2>??)$zLZ0#v=qo&QZGU!WKWP7T z04S5bYP&(nCrPxmHkZ$}gA&_@fN)1YgsnU>zyZ0fKd;M8}M`@?$_uGgC0kvd02P^C|Sfvd3v6 zz{Ge>1eut?#Ej3Iw@(DJi#?!G?z=|0*Jf&xNUqZenW-w&-vy2S8AOv{`#RW;TIH0V z4ABUgw{oEk#g=^@IMJGM2_tnruoALDc9i)Suu=j$31sGp*Gm(|*|AVE$%gg_{SPZv zLt*GQutrRpK-G(>6wOF`AI1}=IqmuEDX5Z~3J?uqK&+CQ>?_4Mzyp{J!#xpM@I%<1 zATcCLK6@J4j-i$5c&4j09kh8MEBxSJ2!6T$tf57=)EHw+Lg`pgtgHyU_6XGZ>=dM= z|1;4>BA^)|0UR2Zg%D+J4fo(faB zN9?DCQ{H>;J-CXBTvb^SsG;(}3_X?=^yb@+uY7b69l(^vydP)RK*dO(MQiHZ+2fNH z783uQHOHPcV&OEZD#o~Lv<7!tJvU-n`BGuD7qPI&D*WaCv_)*)WY0KRcACwww1<`D z&ODq%i?4BPH>n-A!<(axb4{%~$Z9l|8U9k1n%tMwVHnL^gMYa*6M zz`hveXZ`HAnFlJxEQClnK!r#_z<@=HAqW`oxMBzb2KufTf`EY~rx=2OfpDrAf^c8g zqObgMqfj3Ea3qDmXOWqo#W-Re^f2uF-#BZ;ICf-IT=ova_x zgJ54d-HzGlS24JR@=3@HF-P$wTt~*D64%*)I`T=)gTArs?;6rL0;-E6*0?z0mWyLy zxj5Qzad@(Zuv48Q^2XRXldukg(qd50-;h>662;`ow(tKD)`wK&Wxz-cAlt#g48B z*DOthRsSMX9mHRCLKR}T(!Hf3S{_wqMvBc0tKoPY!x0{4W24yE>@_KU4jW6# zOBy~p>L^siYT6PpWoDepvcuX1o z5DbqEGyE=CqJ3GWHC2?Cm#6cicrgJlCX{&zcA^WMrNF;@%85FhZWB2&BP!e zAYsE1qoP

>11rB!VHTELreV_WSVJ5nJ#ja0~OlxOTb0cLO!$asM7KZHQ%VEh#SE#*QMI@hnIb=f8_oBU=oq@evY2dwFf|TCNJuBCj+5ySo zd-)WP`z`wlHp8?EZY$13iudy_*dJ&6M+{-4rXKq_+a1NGtwxKjm;HP^@8_tCjU`xU zNbl-m`!i}+_t>tsPqgRk>y2%NeSHXgOhDP!H+gNb>=ray)IRq0`jH~o*WCzZ*;k4a zJn`SNySrlcRoox7yMIiX$GLqwY(WZM@CgnPmc0V95y^2@0%M?NXeA*jpKsY%LT6VS@-{?6GxBoq~kH&e;T@Q8cCg++Ftx02wuo)%DU6dKuKvHr; zWb`4A88s1}PGZD=S9_kv2*-;P*=pno*s5w~CH(5l5I_Q}^C^z)$R2s!V6Ooi+q-42 zKLLlER5KEj@fBocn|o=Y#z&xdU|imro6oW9BFvz3WinrLGJX_7vQN?wEb1N+$L z?pbsqPMlmXCG|jXy_D3O@y+~t5IAwxLJdz&IeykLakVCplUX)K1t-o``fSO4aWWiq z31h6fBnTMjjA94^Muo!=1dK|DAqW^q22~Y7I7jo*M)U<0iv7}(N1$ZCpftj%lK2G! z8{v#Z2wZr9DG5Ui8a z9^|8M<#CI`-dq6E-U6Ht^9UoBy;T!Sn8;{iArr`v;M!ZXYuRHOWnX!`Jl64$AaEIS zX5}(Lz`(jv3_-w{;4lOMW1_(DIpN~BQ_SjI|$q+=A?Y`2*&I|EOd$d;=xr++<*dhC$>|x&=V+AO;u!-h ze&u07;J@=6h9F?zrbI~y0>%XnLl7{M4nq(ysvL$OU`%lsf`BpAVF&_7wZjmE{dW(% zhow_IX1nrm8jl(8cf6p*|2ZZ$Y9i0Xb(-jB0%Ij&1599Y3vm+@n9xGp%mn7J5IdQ` zoDgD=2}}cbXeB1q!!|hG8jlw6KHLxSbP{L|bq6YVCKDrh4`IEl|e9V9i zXut+j#`zj1ZqvlIOzhGGW}s!?u8B=d+@T4qQp+CF#8xJDYXXbWvOlZ|Om54*lZhGE zn`3tI@aW0H1LK(%)12WD1miQ^VF&`og$_dyFj5Xf5Vh_wWeID!cnlZi;U^x$Jurl) zx;T0-6PVpX>|+9xScs1>fl<{%z-L|dzd6$XtRp2l;BwZ%3jv9c&t@Gd(SeY57YH~V zE6%d_1Lrk}MP}I_)dUuoWq(W)m|T{9Hxq71V;`7#Owhk2IAaRmKD;M54x*FSa90& z*`I)p5qFivHmJKwwn3ei>tKYcIQ*{CV;-mNVxPXN^x9XHvlri0zJzf_tm6F2wJcrX zv+qOe&dEX@ew{PU!>BRBZLyjh+Sev~RL!i!X{2C(>VEcMeX)8u0o6($omMf!`M_K_ z0o54eyKFdhLJ{T*k260MBv ziaMikS4!ZNb$Etswyx-m!VH{Ilm<>J#r67(;xWXRs)yw8GYak--4VC!Pq7)6^vXG% zIOl@m^9dp(VbdrdX|u}3*=Ekgl`q-y!hPdhn1Ld8ozBI@VtwD}u~?r>oO8+W`$p_h z?tP=D51&S3MeXYQ#$h5jmv}f2aK}T+row%rD`5W(_n_#$arjG!8N94ze?V9#Y?rQW zTw=pnmSz7f+qM9xPx3w4A^0wIm(F{U?LkM2D-FfO<8c@BQN#LAI#E{~8<)6%Rs1y4GiZ zj-R;hUnsp~u6y0TNLVc3Uib4g8P5}?>h(2R53c%$)pza(Ji>C<{}8k-obBHAqqELQ zt`dhPEYZSU|I0rwti2atbCP|-=L$>^+^-^-L`oKXQ#x}9I9_`A<#qxW`_r+Fr1o%k zVerhL$kxQ=F%8GAM<7lmHM@inQGKX9>yv|72QQIg_v7?62R9$={E85jhlcmHB3vGp zH$Wlri&BsA3Z}TXGdZdT&yMwUmESYTDObd$rT<2;^YdIg$43KV~FezbLL#_ZNrGD_CkEM#qS8!a!Jo|7(V+eXt^SQ z0uCXGfOGk$1VJO0!p6WM1&gedZ%90r^O%e2_p1vMujv&Q*0$xW?FnSxRhaKx@D&up z;lsV8?#|e14tih3lk*FH2KkQ9a>5cuG=h<2Tl7eZ9s2IfW5@g6oy~?F=r>|a3d5&% zUW6LFrZ1_PjL14ME{~xO&jT*w*XimeOwEIpD3f_` z6Z4O-cK5bPujSaEGY?GqF#3R9&}q+Se+|k;V0#@;U;s=s7>~CQgX(E{cg_aRWCVXxAf6r>kac9 zIV1O4=Zw;0oiloR{Qfy3R=(tn-#{OEju&@D#a8YL=Zt&sR9BHjv6an5Y*iZEsi9-5 z#}HqtACjZwjBcBj{WzOp+1x89vYtCd+`fKC?b=}3-$Y~j!dA7bbH-sJ$jdyOZ*j*%%BDhI<_g$Pa1V-dM*O&_^~$A& z{^d{!?76AFwyt(g-JDqsAn;3#Zoq#gDTOn(!O~{dNfS(r&(mlaGm^xO&{@!r>B-e=_Fq#f1U%GJLr%s?dG-UXO1j zzOb2ohcEmjzs=$&f*0S#NIhj&{AYKSn-LvwwwCu-5l0`IV{jh52iMVbGKWrZwy zD)@B7qB#P8YcU=Z{G$So3TK_veMsOZEY|i)Y!f2fzVI8-2z`krl~~jv{N>PZ(IbFy z`ckO2Bu?*!djOXQ!m$M2iv1Pd6ttlAI86<&LM?+fMdCCRnFmfaWa9Lk$p1%(OaEs; zN}(r0pFmr2dRlarM0&vK4^M*TzZTAqQ7b|lL}rI@z9yU&23}urN-u1uqf2Oz<~gTbxY6eod^B@ z64`|Huf~c;h5sv~Q2f&PVwbu+z*GS5!no|;BTT^p)GDLhLdB4)aoIGHjL|fq+Tv%U zi{Ym15Dgl@KCIh}}RtJ>4qwOZqQ{_*iROz2B`dPC<7nt1QYXWx*=OyD}NM0+oR{G}w z|Dlg1=ldBd4WAJ^UlJJcvxe`QtpD4-O91aTxz;azO8_4iZK~E~qBA6t5BOTNoyuA- zT$ALHJ{A5dR;)qS2(>%(IB(XU+!2c%YblJ2>9ex*gi%|PQ7e~rK z-KooN@Yf-xd`y?^^p}CUPpD7QW!Ba}fPSUQsLJXLSd^|JeD;NY8SV)LsZ&wo+ps2s zbfAd(qEM%d`{OxCj-SHyP8oaSw}N^?Q>F2Jfe^icq?^lbkKYrB(4lHYRay50N+^j$ zl*=}Qiqq$X+85d$yDv~iU)9t=>>#LbY3e&AUkH@bcQp0AlE*-OS5wbLza2=>_cisy z=rf>R)zr+`3xNtcsi}t8k3qeqsh3Mm1S;uwnmSeT3sC=|sjozT9~eVEB%SP+Z%5w+ zRU*`G@yl517V4Aq4}QxUOMffWsc=bY8Ugu`qKtds!Lei_d4LvOFIq$;g<^k3q2)eJ z?TuH0x_1WGJ7tu{FR;eZV@MK|Kc`z0WT#-N%9?IXqPIEdi$AAZ=g}Sx@wA&h7pS!^ zAb+i*PKW1ONqSo-HR~{x7fYGUx+)3_bt?S*Kpi4Txi0%DMqvs~)Mba`?dDXPBGkUn z*W#U^(n9gfT4YtzPF04P)nrYhFKfwPhOe@w)2oUSPfVv@3#DwCPJa+et$^utR+n9c z6>uS0b;`~UaXg|@p-zQ)mZxZ(F5_9AqNFZ+$)84)O6jtH$J)J!X6dpAB5C|Gt3j82 z89Uw#Y7&b3uomZ#M}^vlK5VpR(mRU6>ey=4QvEEpMU7@HwF-4A{1oi0rR#*+9r_;Z ztfdZJR%tu|M|bP8D&uzZVj9q8UxTmfXqPTK24C0FK3(>De5W~!KCa77$3FtP--0J(Wg|I zjL|%LrKs%Rgi>QPkAAMp{uL2yKK)jgy@B{OpWe}Bl}4KPm^o_vstf~EM5t5Y>*Hx^ zpoA{#j~k#S>9W2^ySb32>av}YPEcuG_Gs*H%uA?VmwhYt2&l!nEM@I97g4h=n{Ryt z)GA#zG5&pHF>TOg>G-4OV%j3qzR+)xCtXUNy3E8FT}pjIvCsOg%c!JYe1$YQgE*F3&*{sR3_A^@IimOxs1l^ zvM=~MK~?FpJ+Y_FCb~$MeLD6pW;4|b#dh9hEvLJM;<Hs zUP04^I%PZ(q-s0jgs@x4<#$xV3`X zaH*nV){E9EDwB+uW7dn-8oF0gn?bFkvA7&`R#h9Nh2s6;6|0TDp{dgN32Os={}QEh zZ~Pb5HS`p2Ai0J6gSrOf|l!O$E94R*6n5*5{m0la5Mc@Q+wkP zP>*sdEqxdl{1DYIQPl16WN<6xgi>0z(OtUi{`f_~ZS=OL_QvOc`gEhJR~lauY^S@H zD(d!lOE61KxLD#As;rh^Cq1jF&7k-Xc^jNdUoh;K6v%3r~^8Nb(k z9N%V~(w@he$DScVe@ao&7{I72={oF$wz zs!A8opvaU6tfb}9t$6$Op?DwqQELnU|8MbI=@-TX%R--6|4Cy)>8Al7Dme(wSFvAI z)9-_~0{$`92M)LX18M!F@mlmCEaBEGMO!7cMot5NF~%I;_tMgCy}(7<2JT&x;E0^S z&lpGi=No5?606#16HdL@xk>D76V02%&UdIi@_nO2?CB7D3}a^Kr^Y+<4)}(#OmNOa z-Vw{+A>Qx823r_5*oXC^tzPV`7dz|4&PCE2HRgH`l}4iAgc_{6=#X$EQ7~rmce=0EQ2$=SqA584N|K?YBd-K&0ZjA!E?H^T<^D-4|sm1lU2!Uks{VT1FHu)&!{*x(%Ej2ayo-!sJd&KdNNA?FQe zh%=cp#5v0u;_T!MaUODpIOEtY9@uU0{=eJcoqo5$d-{H{XTS7)zrh~fZ}85)-{3vI zUs}9PU|L3GkBrD|GHQEdEDnqR4@3VGn59&DrEh|0ON&feMm8-Yo0gGn5>AtFnly)3 z!QG)VLI#i1|bShYj zTbk2=lPC_(R2m0ZL+b(OP#@qWbSvO8x(o0s;kN=V5uJ@1vgT#Db9xSt^*0OLDy10> zS*BfN+NCrra7apbYsfNpip-r-dPw+>2!2%XW5ADvo)MX6gnwM%2`N3PA?x{>$ox!7 z-xNp&d&AI>WqbzP>@(PAKj5)YK=35^$3j&iS!J-~RFRx2rPBm15t&AjX%v|z(aX%`XSar|bFc6Z3Fko#nSWI9 zV;VB&gy1JNWX>C?dn`mgu~0+iCk3z4kU7;pmRus7Mh%(2Rq%|4%;^xxA>r)SkokuM ze^5i_JS>t&g>y_p=ARJ!q=w8f{9>V>@hZWq1aB0)QSgl58Nqi8zFY7I1%FWRV}c(O z{G{L~1vdhB(vL$%Kw1fKE8)Nmn2jBP$3pw1^r)1c5J(nFCIv1LxK-eg#dCF!#kCFz zPC=0rxJ2MqfkOfh2|OzBgg^?3yudwJe?JaAEbypsP6(th%lN~0(oaK4!K=eEI)ZN% zI3#e7@DB-oRN%A1IUzVjL{Eh4CIxR2e2>7R!g*Hk6M|DzY!g@=l@lVY6j&V-OMpKY8j7+0 zLjsQqJRy+cV!6O20=EhrinE?W0;!ZWBn3`KPH_qHgU``F(JS;OjW@O$dyQWimO0Lx zW?pPInVZdSGiTms9x}gW{?44}o9kQS+vdB`cbo4czK4B3@V(`G*BABA@n7xV?zjE- z`oHWy>i?ntq~FAj>ql-HK&}=<&WRsfAk!R&Z1e)`0C=}aHO9Ii(Vesba888bZGMKQ z!`A{n7~2B)V#yA`A4hKlTpYUv@U4>{+w9DG_ikYoblTt z-0pL+Cjl?9SVLX>JAjsGJ{^7@xT^a_Y30j)mj6ubMZnYH6G8Tt4__0IzX9=H0C)i2 zGvLP{@E|;Bz>{I%QT%5jPvtiZV*pLuVU_|P2WZlGc-ufWj~{{Jw|y1BCjpwsn8yG= z575MKrN#lj0MNwU;RHb5j}6>{O#)sADFbJK^MKEWltFU- z0yOcL_H%)+1T<+C?yC&^dkFJ^uR+TO{vNaecq`_wiQj!M2Hb$w47wW7#9u}>0^cZS zrE6&!@aq6g{9^{qz&8V$_{Rz^2fhW+q^)Qlclv-P{&9kwtC9QThYDOFkoF zlp8l2w;Mk(7MnjcqrM8?LErPfYJb{)m)}1m=X7-p6nJU8_}^~$mH&U^JUd)!62Ems zo8Hg=5+1G*+|RH4j|z|9K%T)bzipaf*vRs2F1t6A8w9avrQI>moxPM=2l6|*mS%Fx?B4!droBI3 z+tfmx+5RmpJ*d``?d{Lzmba{?{74o{E$i-rh$B#-+NgCf-=FQNU1oQ8XQknM?d93t zY_1D$AzM0B6CFyeqE=?}`AlaPW!zSQ;%3B3UE<)wjMSwbvvn)VC|&FljU64d$Rms{ zTzbQnElV@)H{hl6@~&(*%H95qENbZ($#ZQUS)`2~S>Q2YG?k9MBP*`SE-O#+V4FOTIZXM_u$y_^->F(Oz)t=!wJhE83K0mTVx-|-abq-w`h3^@VQA*W#j8@>d zVU#j4!S&N<0{xl(fzkK_+pfpr8QCfJs%z-T;$`+g?7rk6htx9RtLpEi%4Rm&9b4zpf&C-pcc4qTu5AM%!4=sp1)j4b6*wc*7m6D5`E1X&?!mUMey@(U zOb&ipj(-*^i*R?tNcrV3Xaklq;=;(n77Tu_M}kJC`4&+3xpk!TkduwKU zwtsLPw#s~gue>0_>$2UMoq~DFot~`8VUum|FI05=!J94q5vM|dQ-d{UdIt*ydO(HW z-?go)yQ|+*$`j~{OkTEmx`{XYVH2TNcNtq6sh>-!4WI13EtgAF&b95x^sde|--!6i z+!fe`y)2onOS^hIphDI(d6rcXUzS!8$FsbO_-ct2vz%pC#FfTdvzc7`juCBp*=kjL z*ENOM#h4&kU*wDe~~SN3K_dOTTRiuMBO zX`sO5albs^uj8WD@^UnTkFE2_FEZV-MN-@WYU)k+CTclNX!I*4E^Un5cA8-AH zSe0Q*TQMOKleB)0U~RT{Zc+>9a_jpz0+2YBY~Jz_%KA9S_O=hM%=BWT$dPL}aJaR( zcc3SWSYYRNt+Nwk4&`gr!!0Qu#9@VnYOZ`C@As~}LQ92m&k7l>*qv#G z!a{Sk?9)89kKXpF`~m5PdCBExwy$ddG_K~|{rnfKcPol^eW2v?>(>3d{xsp=Rz3QYeSL3s z{pecqCk-RyOOg=)QeMtvoIyb7l?=}d1cIiSU@88_eL=%Ct@zlWe@r4{BsPvI&*C2t zN`w?;c^{!rlDN2nEG6Yn;<|^GRuEK~CV>lQH!G6?3%M}z-ZBAB?lzODqBdH$M(&I8*VI+p$ z3DlW}VOkM0u{lu^#AE0OiF$dynphyulZi!KJdhYKVr7Vly%5_>bFxQt@9ZF=#scbRrGDGCw^&7}6SdSfrR$ zI*cB#r|r-Iv2=1`viN@JKu|wbuO?5_Q*-EmnwtfAvodIDM|zmJ6E)-Ua(HsGqZr*7 zIuO@W5e+dJ5noOQW-2t97&>T<31YY~uE|8w(R>j7R=nz9M41LT9%Pp1xvvmiOIv@? z?cPC0p{~Q0B^@4HcF?hm8wKgsJS-7SYdzE%{aj%X$P0JJ=I zEaK3(o+DmjJ%V3iBS%CDo0!fDNpxX?CpJ2d^^U~ku*_zR_+*Eba#<;dm3CQahZS;J z5`Ve1q{~V=Qq?Z2+K)I_=I{p{!v+((*f2bT@)+8y$U*f;1<^N5SU?+xNh;ww4 zsdu16J8$SfV(4Xr5wz?9TcF7dQ{V5*olrng-gQOfJ?I0lsNjgY1s>cGTK6F6f!63Bov;)Plk4p{< zek80)cs7DNSkBEA&q5YH9^#iX{5hZhKA_DUdvz|;x61By4;O7a_}0UKTu`R%VuQxl zu4-;uX6LeveSK+tnqGX0uP`I&}}y1Gn5`?h)W+qZ3> zJGZ`Jb{2K;vuyl{6u+Bd2m*Hg?8Y=F#Og_A=9LZ<7EAYK$i0E#fr}}fZkAL310q^X#05;=&Tr1xC zt;QS1EqJcNo5|H8`LzG^S@jmpneXZ;KRkwnA77r+-cJ(<16nh9>$e5(=8L0=EvL2?^|=urk#R@ArRx1xF40liDX%|X5kbU$oldA61%d%@vy=VeI zk9VSMQ(uwIe~HdI1jvHU4bYi`)CvCxHvZBB zHM`NT6h_TJ&v8>N+Sprt@Dul}6TacTC-L1RZLijR9tm#S@ds1NtN%APsBu~Y-8SqR zfM5GPy&{bMpFd6?mN)6ex`unU;MW?wyYE1IJYVMH4f+Cs4dBcNJ{$b)GzWMFWgU>I z6O85Ofy>YBcppC(zZ+?QbQb0OSs>%uh_TFr*8{0;cr=NXP&~o~J9vyg;M1r7KLg}% P2|hsfzl#6A^T7WB))`|o literal 25088 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 diff --git a/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs index 3abbbc7..9a1948e 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs @@ -17,7 +17,7 @@ namespace SushiBarContracts.ViewModels [Column(title: "Название компонента", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ComponentName { get; set; } = string.Empty; - [Column(title: "Цена", width: 150)] + [Column(title: "Цена ", width: 150)] public double Cost { get; set; } } diff --git a/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs index 5346691..d254838 100644 --- a/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs @@ -13,7 +13,7 @@ namespace SushiBarContracts.ViewModels { [Column(visible: false)] public int Id { get; set; } - [Column(title: "Название сущи", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] + [Column(title: "Название суши", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string SushiName { get; set; } = string.Empty; [Column(title: "Цена", width: 70)] public double Price { get; set; } diff --git a/SushiBar/SushiBarFileImplement/ImplementationExtension.cs b/SushiBar/SushiBarFileImplement/ImplementationExtension.cs index d4068f5..428ef94 100644 --- a/SushiBar/SushiBarFileImplement/ImplementationExtension.cs +++ b/SushiBar/SushiBarFileImplement/ImplementationExtension.cs @@ -15,7 +15,7 @@ namespace SushiBarFileImplement public void RegisterServices() { - //TODO DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); DependencyManager.Instance.RegisterType(); DependencyManager.Instance.RegisterType(); DependencyManager.Instance.RegisterType(); diff --git a/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj b/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj index 3438638..d9a548c 100644 --- a/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj +++ b/SushiBar/SushiBarFileImplement/SushiBarFileImplement.csproj @@ -7,6 +7,7 @@ + diff --git a/SushiBar/SushiBarListImplement/BackUpInfo.cs b/SushiBar/SushiBarListImplement/BackUpInfo.cs new file mode 100644 index 0000000..9ae4479 --- /dev/null +++ b/SushiBar/SushiBarListImplement/BackUpInfo.cs @@ -0,0 +1,22 @@ +using SushiBarContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SushiBarListImplement.Implements +{ + public class BackUpInfo : IBackUpInfo + { + public List? GetList() where T : class, new() + { + throw new NotImplementedException(); + } + + public Type? GetTypeByModelInterface(string modelInterfaceName) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarListImplement/ImplementationExtension.cs b/SushiBar/SushiBarListImplement/ImplementationExtension.cs new file mode 100644 index 0000000..a83413e --- /dev/null +++ b/SushiBar/SushiBarListImplement/ImplementationExtension.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SushiBarContracts.DI; +using SushiBarContracts.StoragesContracts; +using SushiBarListImplement.Implements; + +namespace SushiBarListImplement +{ + internal class ImplementationExtension : 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(); + } + } +} diff --git a/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj b/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj index 3438638..d9a548c 100644 --- a/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj +++ b/SushiBar/SushiBarListImplement/SushiBarListImplement.csproj @@ -7,6 +7,7 @@ + diff --git a/SushiBar/SushiBarView/FormComponents.Designer.cs b/SushiBar/SushiBarView/FormComponents.Designer.cs index 8842f1c..5d23904 100644 --- a/SushiBar/SushiBarView/FormComponents.Designer.cs +++ b/SushiBar/SushiBarView/FormComponents.Designer.cs @@ -38,12 +38,10 @@ // // dataGridView // - dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dataGridView.BackgroundColor = SystemColors.Window; dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridView.Location = new Point(2, 2); dataGridView.Name = "dataGridView"; - dataGridView.RowTemplate.Height = 25; dataGridView.Size = new Size(443, 446); dataGridView.TabIndex = 0; // diff --git a/SushiBar/SushiBarView/SushiBarView.csproj b/SushiBar/SushiBarView/SushiBarView.csproj index d7ebe89..2889477 100644 --- a/SushiBar/SushiBarView/SushiBarView.csproj +++ b/SushiBar/SushiBarView/SushiBarView.csproj @@ -24,6 +24,7 @@ + -- 2.25.1