diff --git a/SushiBar/SushiBar/FormComponents.cs b/SushiBar/SushiBar/FormComponents.cs index c8543a9..aca4041 100644 --- a/SushiBar/SushiBar/FormComponents.cs +++ b/SushiBar/SushiBar/FormComponents.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; namespace SushiBar { @@ -18,57 +19,48 @@ namespace SushiBar private void ButtonAdd_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormComponent)); - if (service is FormComponent form) + var service = DependencyManager.Instance.Resolve(); + if (service is not { }) return; + if (service.ShowDialog() == DialogResult.OK) { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } + LoadData(); } } private void ButtonEdit_Click(object sender, EventArgs e) { - if (dataGridView.SelectedRows.Count == 1) + if (dataGridView.SelectedRows.Count != 1) return; + var service = DependencyManager.Instance.Resolve(); + if (service is not { }) return; + service.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (service.ShowDialog() == DialogResult.OK) { - var service = Program.ServiceProvider?.GetService(typeof(FormComponent)); - if (service is FormComponent form) - { - form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } - } + LoadData(); } } private void ButtonRemove_Click(object sender, EventArgs e) { - if (dataGridView.SelectedRows.Count == 1) + if (dataGridView.SelectedRows.Count != 1) return; + if (MessageBox.Show("Delete record?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != + DialogResult.Yes) return; + var id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Delete component"); + try { - if (MessageBox.Show("Delete record?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + if (!_logic.Delete(new ComponentBindingModel + { + Id = id + })) { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Delete component"); - try - { - if (!_logic.Delete(new ComponentBindingModel - { - Id = id - })) - { - throw new Exception("Error on deleting. Additional info below."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error delete component"); - MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } + throw new Exception("Error on deleting. Additional info below."); } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error delete component"); + MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } diff --git a/SushiBar/SushiBar/FormImplementers.cs b/SushiBar/SushiBar/FormImplementers.cs index 8c3d391..f719b35 100644 --- a/SushiBar/SushiBar/FormImplementers.cs +++ b/SushiBar/SushiBar/FormImplementers.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; namespace SushiBar { @@ -17,29 +18,22 @@ namespace SushiBar private void ButtonAdd_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormImplementer)); - if (service is FormImplementer form) + var service = DependencyManager.Instance.Resolve(); + if (service.ShowDialog() == DialogResult.OK) { - if (form.ShowDialog() == DialogResult.OK) - { - LoadData(); - } + LoadData(); } } private void ButtonEdit_Click(object sender, EventArgs e) { - if (dataGridView.SelectedRows.Count == 1) + if (dataGridView.SelectedRows.Count != 1) return; + var service = DependencyManager.Instance.Resolve(); + if (service == null) return; + service.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + if (service.ShowDialog() == DialogResult.OK) { - 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(); - } - } + LoadData(); } } diff --git a/SushiBar/SushiBar/FormMain.cs b/SushiBar/SushiBar/FormMain.cs index dfb6b0b..caa4a30 100644 --- a/SushiBar/SushiBar/FormMain.cs +++ b/SushiBar/SushiBar/FormMain.cs @@ -1,7 +1,9 @@ using Microsoft.Extensions.Logging; using SushiBarBusinessLogic.BusinessLogics; +using SushiBarContracts.Attributes; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; using SushiBarDataModels.Enums; namespace SushiBar @@ -32,33 +34,14 @@ namespace SushiBar private void LoadData() { _logger.LogInformation("Load components"); - try - { - var list = _orderLogic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["SushiId"].Visible = false; - dataGridView.Columns["ClientId"].Visible = false; - dataGridView.Columns["ImplementerId"].Visible = false; - dataGridView.Columns["ClientFio"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - } - catch (Exception ex) - { - _logger.LogError(ex, "Error on load orders"); - MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } + dataGridView.FillAndConfigGrid(_orderLogic.ReadList(null)); } private void ButtonCreateOrder_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); - if (service is FormCreateOrder form) - { - form.ShowDialog(); - LoadData(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); + LoadData(); } private void ButtonSubmit_Click(object sender, EventArgs e) @@ -96,67 +79,63 @@ namespace SushiBar private void ButtonReady_Click(object sender, EventArgs e) { - if (dataGridView.SelectedRows.Count == 1) + if (dataGridView.SelectedRows.Count != 1) return; + var id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Order №{id}. Change status on -Ready",id); + try { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Order №{id}. Change status on -Ready",id); - try + var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel { + Id = id, + SushiId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["SushiId"].Value), + SushiName = dataGridView.SelectedRows[0].Cells["SushiName"].Value.ToString() ?? "", + ClientFio = dataGridView.SelectedRows[0].Cells["ClientFio"].Value.ToString() ?? "", + Status = Enum.Parse(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString() ?? "Unknown"), + Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), + Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString() ?? "0"), + DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString() ?? ""), + }); + if (!operationResult) { - var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel { - Id = id, - SushiId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["SushiId"].Value), - SushiName = dataGridView.SelectedRows[0].Cells["SushiName"].Value.ToString() ?? "", - ClientFio = dataGridView.SelectedRows[0].Cells["ClientFio"].Value.ToString() ?? "", - Status = Enum.Parse(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString() ?? "Unknown"), - Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), - Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString() ?? "0"), - DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString() ?? ""), - }); - if (!operationResult) - { - throw new Exception("Error on saving. Additional info below."); - } - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error on change status"); - MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + throw new Exception("Error on saving. Additional info below."); } + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error on change status"); + MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonIssue_Click(object sender, EventArgs e) { - if (dataGridView.SelectedRows.Count == 1) + if (dataGridView.SelectedRows.Count != 1) return; + var id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Order №{id}. Change status on -Issued", id); + try { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Order №{id}. Change status on -Issued", id); - try + var operationResult = _orderLogic.FinishOrder(new OrderBindingModel { + Id = id, + SushiId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["SushiId"].Value), + SushiName = dataGridView.SelectedRows[0].Cells["SushiName"].Value.ToString(), + Status = Enum.Parse(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()), + ClientFio = dataGridView.SelectedRows[0].Cells["ClientFio"].Value.ToString(), + Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), + Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()), + DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString()), + }); + if (!operationResult) { - var operationResult = _orderLogic.FinishOrder(new OrderBindingModel { - Id = id, - SushiId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["SushiId"].Value), - SushiName = dataGridView.SelectedRows[0].Cells["SushiName"].Value.ToString(), - Status = Enum.Parse(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()), - ClientFio = dataGridView.SelectedRows[0].Cells["ClientFio"].Value.ToString(), - Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), - Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()), - DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString()), - }); - if (!operationResult) - { - throw new Exception("Error on saving. Additional info below."); - } - _logger.LogInformation("Order №{id} issued", id); - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Error on change status"); - MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + throw new Exception("Error on saving. Additional info below."); } + _logger.LogInformation("Order №{id} issued", id); + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error on change status"); + MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -172,85 +151,61 @@ namespace SushiBar private void ComponentsToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); - if (service is FormComponents form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); } private void SushiToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushiMoreThenOne)); - - if (service is FormSushiMoreThenOne form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); } private void ListComponentsToolStripMenuItem_Click(object sender, EventArgs e) { using var dialog = new SaveFileDialog { Filter = "docx|*.docx" }; - if (dialog.ShowDialog() == DialogResult.OK) + if (dialog.ShowDialog() != DialogResult.OK) return; + _reportLogic.SaveSushiToWordFile(new ReportBindingModel { - _reportLogic.SaveSushiToWordFile(new ReportBindingModel - { - FileName = dialog.FileName - }); - MessageBox.Show("Complete", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); - } + FileName = dialog.FileName + }); + MessageBox.Show("Complete", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void ComponentsOnSushiToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushiOnComponents)); - if (service is FormSushiOnComponents form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); } private void ListOrdersToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders)); - if (service is FormReportOrders form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); } private void ClientsToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormClients)); - if (service is FormClients form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.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("Process work is started", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void ImplementersToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormImplementers)); - if (service is FormImplementers form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); } private void MailsToolStripMenuItem_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormMails)); - if (service is FormMails form) - { - form.ShowDialog(); - } + var service = DependencyManager.Instance.Resolve(); + service.ShowDialog(); } private void CreateBackupStripMenuItem_Click(object sender, EventArgs e) @@ -266,7 +221,6 @@ namespace SushiBar { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } - } } } diff --git a/SushiBar/SushiBar/FormSushi.cs b/SushiBar/SushiBar/FormSushi.cs index 8c6f484..2c8df97 100644 --- a/SushiBar/SushiBar/FormSushi.cs +++ b/SushiBar/SushiBar/FormSushi.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; using SushiBarContracts.SearchModels; using SushiBarDataModels.Models; @@ -27,15 +28,13 @@ namespace SushiBar _logger.LogInformation("Load components"); try { - if (_sushiComponents != null) + if (_sushiComponents == null) return; + dataGridView.Rows.Clear(); + foreach (var pc in _sushiComponents) { - dataGridView.Rows.Clear(); - foreach (var pc in _sushiComponents) - { - dataGridView.Rows.Add(new object[] { pc.Key, pc.Value.Item1.ComponentName, pc.Value.Item2 }); - } - textBoxPrice.Text = CalcPrice().ToString(); + dataGridView.Rows.Add(new object[] { pc.Key, pc.Value.Item1.ComponentName, pc.Value.Item2 }); } + textBoxPrice.Text = CalcPrice().ToString(); } catch (Exception ex) { @@ -82,7 +81,7 @@ namespace SushiBar private void ButtonAdd_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); + var service = DependencyManager.Instance.Resolve(); if (service is FormSushiComponent form) { if (form.ShowDialog() == DialogResult.OK) @@ -109,7 +108,7 @@ namespace SushiBar { if (dataGridView.SelectedRows.Count == 1) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushiComponent)); + var service = DependencyManager.Instance.Resolve(); if (service is FormSushiComponent form) { int id = diff --git a/SushiBar/SushiBar/FormSushiMoreThenOne.cs b/SushiBar/SushiBar/FormSushiMoreThenOne.cs index c7404ec..9455401 100644 --- a/SushiBar/SushiBar/FormSushiMoreThenOne.cs +++ b/SushiBar/SushiBar/FormSushiMoreThenOne.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.DI; namespace SushiBar { @@ -38,7 +39,7 @@ namespace SushiBar private void ButtonAdd_Click(object sender, EventArgs e) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); + var service = DependencyManager.Instance.Resolve(); if (service is FormSushi form) { if (form.ShowDialog() == DialogResult.OK) @@ -52,7 +53,7 @@ namespace SushiBar { if (dataGridView.SelectedRows.Count == 1) { - var service = Program.ServiceProvider?.GetService(typeof(FormSushi)); + var service = DependencyManager.Instance.Resolve(); if (service is FormSushi form) { form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); diff --git a/SushiBar/SushiBar/Program.cs b/SushiBar/SushiBar/Program.cs index 0c9549d..71e0c4c 100644 --- a/SushiBar/SushiBar/Program.cs +++ b/SushiBar/SushiBar/Program.cs @@ -1,4 +1,3 @@ -using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; using SushiBarBusinessLogic.BusinessLogics; @@ -7,26 +6,20 @@ using SushiBarBusinessLogic.OfficePackage; using SushiBarBusinessLogic.OfficePackage.Implements; using SushiBarContracts.BindingModels; using SushiBarContracts.BusinessLogicsContracts; -using SushiBarContracts.StoragesContracts; -using SushiBarDatabaseImplement.Implements; +using SushiBarContracts.DI; namespace SushiBar { internal static class Program { - private static ServiceProvider? _serviceProvider; - public static ServiceProvider? ServiceProvider => _serviceProvider; - [STAThread] 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 = @@ -49,56 +42,54 @@ namespace SushiBar } catch(Exception ex) { - var logger = _serviceProvider.GetService(); + var logger = DependencyManager.Instance.Resolve(); logger?.LogError(ex, "Error on working w/ email"); } - Application.Run(_serviceProvider.GetRequiredService()); + Application.Run(DependencyManager.Instance.Resolve()); } - private static void ConfigureServices(IServiceCollection services) + + private static void InitDependency() { - services.AddLogging(option => + DependencyManager.InitDependency(); + + DependencyManager.Instance.AddLogging(option => { option.SetMinimumLevel(LogLevel.Information); option.AddNLog("nlog.config"); }); - 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.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(); + 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(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); } - private static void MailCheck(object obj) => ServiceProvider?.GetService()?.MailCheck(); + private static void MailCheck(object obj) => + DependencyManager.Instance.Resolve()?.MailCheck(); } } \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs b/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs index 8ceba17..bddb67d 100644 --- a/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs +++ b/SushiBar/SushiBarContracts/BindingModels/MessageInfoBindingModel.cs @@ -10,4 +10,5 @@ public class MessageInfoBindingModel : IMessageInfoModel public DateTime DateDelivery { get; set; } public string Subject { get; set; } = string.Empty; public string Body { get; set; } = string.Empty; + public int Id { get; } } \ 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..adcd28f --- /dev/null +++ b/SushiBar/SushiBarContracts/DI/ServiceDependencyContainer.cs @@ -0,0 +1,56 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +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()!; + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/DI/UnityDependencyContainer.cs b/SushiBar/SushiBarContracts/DI/UnityDependencyContainer.cs new file mode 100644 index 0000000..7ea0672 --- /dev/null +++ b/SushiBar/SushiBarContracts/DI/UnityDependencyContainer.cs @@ -0,0 +1,37 @@ +using Microsoft.Extensions.Logging; +using Unity; +using Unity.Microsoft.Logging; + +namespace SushiBarContracts.DI; + +public class UnityDependencyContainer : IDependencyContainer +{ + private readonly IUnityContainer _container; + + public UnityDependencyContainer() + { + _container = new UnityContainer(); + } + + public void AddLogging(Action configure) + { + var factory = LoggerFactory.Create(configure); + _container.AddExtension(new LoggingExtension(factory)); + } + + public void RegisterType(bool isSingle) where T : class + { + _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); + + } + + public T Resolve() + { + return _container.Resolve(); + } + + void IDependencyContainer.RegisterType(bool isSingle) + { + _container.RegisterType(isSingle ? TypeLifetime.Singleton : TypeLifetime.Transient); + } +} \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/SushiBarContracts.csproj b/SushiBar/SushiBarContracts/SushiBarContracts.csproj index a09a3ba..eae6d6e 100644 --- a/SushiBar/SushiBarContracts/SushiBarContracts.csproj +++ b/SushiBar/SushiBarContracts/SushiBarContracts.csproj @@ -18,6 +18,8 @@ + + diff --git a/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs index cb9e6ea..5c5cc69 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ClientViewModel.cs @@ -1,15 +1,16 @@ -using System.ComponentModel; +using SushiBarContracts.Attributes; using SushiBarDataModels.Models; namespace SushiBarContracts.ViewModels; public class ClientViewModel : IClientModel { + [Column(visible: false)] public int Id { get; set; } - [DisplayName("FIO client")] + [Column("FIO client", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ClientFio { get; set; } = string.Empty; - [DisplayName("Email")] + [Column("Email", width: 150)] public string Email { get; set; } = string.Empty; - [DisplayName("Password")] + [Column("Password", width : 150)] public string Password { get; set; } = string.Empty; } \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs index 4651811..4b97377 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ComponentViewModel.cs @@ -1,16 +1,15 @@ using SushiBarDataModels.Models; -using System.ComponentModel; +using SushiBarContracts.Attributes; namespace SushiBarContracts.ViewModels { public class ComponentViewModel : IComponentModel { + [Column(visible: false)] public int Id { get; set; } - - [DisplayName("Name of Component")] + [Column("Name of Component", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ComponentName { get; set; } = string.Empty; - - [DisplayName("Cost")] + [Column("Cost", width: 80)] public double Cost { get; set; } } diff --git a/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs index 20c5a96..670b159 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ImplementerViewModel.cs @@ -1,20 +1,19 @@ using System.ComponentModel; +using SushiBarContracts.Attributes; using SushiBarDataModels.Models; namespace SushiBarContracts.ViewModels; public class ImplementerViewModel : IImplementerModel { + [Column(visible : false)] public int Id { get; init; } - - [DisplayName("Implementer FIO")] + [Column("Implementer FIO", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ImplementerFio { get; set; } = string.Empty; - + [Column("Password", width: 150)] public string Password { get; set; } = string.Empty; - - [DisplayName("Work Experience")] + [Column("Work Experience", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public int WorkExperience { get; set; } - - [DisplayName("Qualification")] + [Column("Qualification", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public int Qualification { get; set; } } \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs index 5ec60fb..3f0a765 100644 --- a/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/MessageInfoViewModel.cs @@ -1,16 +1,22 @@ -using System.ComponentModel; +using SushiBarContracts.Attributes; using SushiBarDataModels.Models; namespace SushiBarContracts.ViewModels; public class MessageInfoViewModel : IMessageInfoModel { + [Column(visible: false)] public string MessageId { get; set; } + [Column(visible: false)] public int? ClientId { get; set; } - [DisplayName("Sender name")] + [Column("Sender name", gridViewAutoSize: GridViewAutoSize.DisplayedCells, isUseAutoSize: true)] public string SenderName { get; set; } - [DisplayName("Date delivery")] + [Column("Date delivery", width: 100)] public DateTime DateDelivery { get; set; } + [Column("Subject", width:150)] public string Subject { get; set; } + [Column("Body", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string Body { get; set; } + [Column(visible:false)] + public int Id { get; } } \ No newline at end of file diff --git a/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs index 5a0d8e7..5e0dab3 100644 --- a/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/OrderViewModel.cs @@ -1,40 +1,43 @@ using SushiBarDataModels.Enums; using SushiBarDataModels.Models; using System.ComponentModel; +using SushiBarContracts.Attributes; namespace SushiBarContracts.ViewModels { public class OrderViewModel : IOrderModel { - [DisplayName("Number")] + [Column("Number", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public int Id { get; init; } - + [Column(visible:false)] public int SushiId { get; init; } + [Column(visible:false)] public int ClientId { get; init; } + [Column(visible:false)] public int? ImplementerId { get; set; } - [DisplayName("Client FIO")] + [Column("Client FIO", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ClientFio { get; init; } = string.Empty; - [DisplayName("Implementer FIO")] + [Column("Implementer FIO", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string ImplementerFio { get; set; } = string.Empty; - [DisplayName("Name of Product")] + [Column("Name of Product", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public string SushiName { get; init; } = string.Empty; - [DisplayName("Count")] + [Column("Count", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public int Count { get; set; } - [DisplayName("Sum")] + [Column("Sum", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public double Sum { get; set; } - [DisplayName("Status")] + [Column("Status", gridViewAutoSize: GridViewAutoSize.AllCells, isUseAutoSize: true)] public OrderStatus Status { get; set; } = OrderStatus.Unknown; - [DisplayName("Date Create")] + [Column("Date Create", width:100)] public DateTime DateCreate { get; set; } = DateTime.Now; - [DisplayName("Date Implement")] + [Column("Date Implement", width:100)] public DateTime? DateImplement { get; set; } } } diff --git a/SushiBar/SushiBarContracts/ViewModels/ReportOrdersViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/ReportOrdersViewModel.cs index f205c08..f075e8b 100644 --- a/SushiBar/SushiBarContracts/ViewModels/ReportOrdersViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/ReportOrdersViewModel.cs @@ -1,4 +1,6 @@ -namespace SushiBarContracts.ViewModels +using SushiBarContracts.Attributes; + +namespace SushiBarContracts.ViewModels { public class ReportOrdersViewModel { diff --git a/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs b/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs index 1567b04..49cd319 100644 --- a/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs +++ b/SushiBar/SushiBarContracts/ViewModels/SushiViewModel.cs @@ -1,17 +1,20 @@ using SushiBarDataModels.Models; using System.ComponentModel; +using SushiBarContracts.Attributes; namespace SushiBarContracts.ViewModels { public class SushiViewModel : ISushiModel { + [Column(visible:false)] public int Id { get; set; } - [DisplayName("Name of Product")] + [Column("Name of Product", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)] public string SushiName { get; set; } = string.Empty; - [DisplayName("Cost")] + [Column("Cost", width:100)] public double Price { get; set; } + [Column(visible:false)] public Dictionary SushiComponents { get; set; } = new(); } } diff --git a/SushiBar/SushiBarDatabaseImplement/Models/Message.cs b/SushiBar/SushiBarDatabaseImplement/Models/Message.cs index 8f70c2e..08d7dcd 100644 --- a/SushiBar/SushiBarDatabaseImplement/Models/Message.cs +++ b/SushiBar/SushiBarDatabaseImplement/Models/Message.cs @@ -47,4 +47,6 @@ public class Message : IMessageInfoModel SenderName = SenderName, DateDelivery = DateDelivery, }; + + public int Id { get; } } \ No newline at end of file diff --git a/SushiBar/SushiBarFileImplement/Models/Message.cs b/SushiBar/SushiBarFileImplement/Models/Message.cs index 3f2314f..18e297d 100644 --- a/SushiBar/SushiBarFileImplement/Models/Message.cs +++ b/SushiBar/SushiBarFileImplement/Models/Message.cs @@ -66,4 +66,6 @@ public class Message : IMessageInfoModel new XAttribute("SenderName", SenderName), new XAttribute("DateDelivery", DateDelivery) ); + + public int Id { get; } } \ No newline at end of file diff --git a/SushiBar/SushiBarModels/Models/IMessageInfoModel.cs b/SushiBar/SushiBarModels/Models/IMessageInfoModel.cs index 360e36d..0eada2c 100644 --- a/SushiBar/SushiBarModels/Models/IMessageInfoModel.cs +++ b/SushiBar/SushiBarModels/Models/IMessageInfoModel.cs @@ -1,6 +1,6 @@ namespace SushiBarDataModels.Models; -public interface IMessageInfoModel +public interface IMessageInfoModel : IId { string MessageId { get; } int? ClientId { get; } diff --git a/SushiBar/SushibarListImplement/Implements/BackUpInfo.cs b/SushiBar/SushibarListImplement/Implements/BackUpInfo.cs new file mode 100644 index 0000000..cf7347a --- /dev/null +++ b/SushiBar/SushibarListImplement/Implements/BackUpInfo.cs @@ -0,0 +1,17 @@ +using SushiBarContracts.BusinessLogicsContracts; +using SushiBarContracts.StoragesContracts; + +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/Implements/ClientStorage.cs b/SushiBar/SushibarListImplement/Implements/ClientStorage.cs new file mode 100644 index 0000000..eda3729 --- /dev/null +++ b/SushiBar/SushibarListImplement/Implements/ClientStorage.cs @@ -0,0 +1,39 @@ +using SushiBarContracts.BindingModels; +using SushiBarContracts.SearchModels; +using SushiBarContracts.StoragesContracts; +using SushiBarContracts.ViewModels; + +namespace SushibarListImplement.Implements; + +public class ClientStorage : IClientStorage +{ + public List GetFullList() + { + throw new NotImplementedException(); + } + + public List GetFilteredList(ClientSearchModel? model) + { + throw new NotImplementedException(); + } + + public ClientViewModel? GetElement(ClientSearchModel model) + { + throw new NotImplementedException(); + } + + public ClientViewModel? Insert(ClientBindingModel model) + { + throw new NotImplementedException(); + } + + public ClientViewModel? Update(ClientBindingModel model) + { + throw new NotImplementedException(); + } + + public ClientViewModel? Delete(ClientBindingModel model) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/SushiBar/SushibarListImplement/ListImplementationExtension.cs b/SushiBar/SushibarListImplement/ListImplementationExtension.cs new file mode 100644 index 0000000..be8c196 --- /dev/null +++ b/SushiBar/SushibarListImplement/ListImplementationExtension.cs @@ -0,0 +1,20 @@ +using SushiBarContracts.DI; +using SushiBarContracts.StoragesContracts; +using SushibarListImplement.Implements; + +namespace SushibarListImplement; + +public class ListImplementationExtension : IImplementationExtension +{ + public int Priority => 0; + public void RegisterServices() + { + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } +} \ No newline at end of file diff --git a/SushiBar/SushibarListImplement/Models/Message.cs b/SushiBar/SushibarListImplement/Models/Message.cs index 2f2ce2d..8897ed0 100644 --- a/SushiBar/SushibarListImplement/Models/Message.cs +++ b/SushiBar/SushibarListImplement/Models/Message.cs @@ -39,4 +39,6 @@ public class Message : IMessageInfoModel ClientId = ClientId, MessageId = MessageId }; + + public int Id { get; } } \ No newline at end of file diff --git a/SushiBar/SushibarListImplement/SushibarListImplement.csproj b/SushiBar/SushibarListImplement/SushibarListImplement.csproj index c8c675f..1c72149 100644 --- a/SushiBar/SushibarListImplement/SushibarListImplement.csproj +++ b/SushiBar/SushibarListImplement/SushibarListImplement.csproj @@ -11,4 +11,8 @@ + + + +