diff --git a/BeautySaloon/BeautySaloon.sln b/BeautySaloon/BeautySaloon.sln index 4c7abb8..a62677b 100644 --- a/BeautySaloon/BeautySaloon.sln +++ b/BeautySaloon/BeautySaloon.sln @@ -9,6 +9,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BeautySaloonDataModels", "B EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeautySaloonContracts", "BeautySaloonContracts\BeautySaloonContracts.csproj", "{7494D3AF-2581-4128-9183-BB87A9DC4B10}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BeautySaloonBusinessLogic", "BeautySaloonBusinessLogic\BeautySaloonBusinessLogic.csproj", "{E43A1394-BC9A-430B-B984-BCCD828FFF45}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -27,6 +29,10 @@ Global {7494D3AF-2581-4128-9183-BB87A9DC4B10}.Debug|Any CPU.Build.0 = Debug|Any CPU {7494D3AF-2581-4128-9183-BB87A9DC4B10}.Release|Any CPU.ActiveCfg = Release|Any CPU {7494D3AF-2581-4128-9183-BB87A9DC4B10}.Release|Any CPU.Build.0 = Release|Any CPU + {E43A1394-BC9A-430B-B984-BCCD828FFF45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E43A1394-BC9A-430B-B984-BCCD828FFF45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E43A1394-BC9A-430B-B984-BCCD828FFF45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E43A1394-BC9A-430B-B984-BCCD828FFF45}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/BeautySaloon/BeautySaloonBusinessLogic/BeautySaloonBusinessLogic.csproj b/BeautySaloon/BeautySaloonBusinessLogic/BeautySaloonBusinessLogic.csproj new file mode 100644 index 0000000..e696bb1 --- /dev/null +++ b/BeautySaloon/BeautySaloonBusinessLogic/BeautySaloonBusinessLogic.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + enable + enable + + + + + + + diff --git a/BeautySaloon/BeautySaloonBusinessLogic/ClientLogic.cs b/BeautySaloon/BeautySaloonBusinessLogic/ClientLogic.cs new file mode 100644 index 0000000..c05fe09 --- /dev/null +++ b/BeautySaloon/BeautySaloonBusinessLogic/ClientLogic.cs @@ -0,0 +1,103 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.BusinessLogicsContracts; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.StoragesContracts; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonBusinessLogic +{ + public class ClientLogic : IClientLogic + { + private readonly IClientStorage _clientStorage; + public ClientLogic(IClientStorage clientStorage) + { + _clientStorage = clientStorage; + } + public bool Create(ClientBindingModel model) + { + CheckModel(model); + if (_clientStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public bool Delete(ClientBindingModel model) + { + CheckModel(model, false); + if (_clientStorage.Delete(model) == null) + { + return false; + } + return true; + } + + public ClientViewModel? ReadElement(ClientSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + var element = _clientStorage.GetElement(model); + if (element == null) + { + return null; + } + return element; + } + + public List? ReadList(ClientSearchModel? model) + { + var list = model == null ? _clientStorage.GetFullList() : + _clientStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + public bool Update(ClientBindingModel model) + { + CheckModel(model); + if (_clientStorage.Update(model) == null) + { + return false; + } + return true; + } + + private void CheckModel(ClientBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Name)) + { + throw new ArgumentNullException("Нет имени клиента", nameof(model.Name)); + } + if (string.IsNullOrEmpty(model.Surname)) + { + throw new ArgumentNullException("Нет фамилии клиента", nameof(model.Surname)); + } + if (string.IsNullOrEmpty(model.Phone)) + { + throw new ArgumentNullException("Нет телефона клиента", nameof(model.Phone)); + } + var element = _clientStorage.GetElement(new ClientSearchModel + { + Phone = model.Phone + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Клиент с таким номером телефона уже есть"); + } + } + } +} diff --git a/BeautySaloon/BeautySaloonBusinessLogic/EmployeeLogic.cs b/BeautySaloon/BeautySaloonBusinessLogic/EmployeeLogic.cs new file mode 100644 index 0000000..1b9b7f2 --- /dev/null +++ b/BeautySaloon/BeautySaloonBusinessLogic/EmployeeLogic.cs @@ -0,0 +1,107 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.BusinessLogicsContracts; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.StoragesContracts; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonBusinessLogic +{ + public class EmployeeLogic : IEmployeeLogic + { + private readonly IEmployeeStorage _employeeStorage; + public EmployeeLogic(IEmployeeStorage employeeStorage) + { + _employeeStorage = employeeStorage; + } + public bool Create(EmployeeBindingModel model) + { + CheckModel(model); + if (_employeeStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public bool Delete(EmployeeBindingModel model) + { + CheckModel(model, false); + if (_employeeStorage.Delete(model) == null) + { + return false; + } + return true; + } + + public EmployeeViewModel? ReadElement(EmployeeSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + var element = _employeeStorage.GetElement(model); + if (element == null) + { + return null; + } + return element; + } + + public List? ReadList(EmployeeSearchModel? model) + { + var list = model == null ? _employeeStorage.GetFullList() : + _employeeStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + public bool Update(EmployeeBindingModel model) + { + CheckModel(model); + if (_employeeStorage.Update(model) == null) + { + return false; + } + return true; + } + + private void CheckModel(EmployeeBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Name)) + { + throw new ArgumentNullException("Нет имени сотрудника", nameof(model.Name)); + } + if (string.IsNullOrEmpty(model.Surname)) + { + throw new ArgumentNullException("Нет фамилии сотрудника", nameof(model.Surname)); + } + if (string.IsNullOrEmpty(model.Phone)) + { + throw new ArgumentNullException("Нет телефона сотрудника", nameof(model.Phone)); + } + if (model.PositionId <= 0) + { + throw new ArgumentNullException("Некорректный идентификатор у должности", nameof(model.PositionId)); + } + var element = _employeeStorage.GetElement(new EmployeeSearchModel + { + Phone = model.Phone + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Сотрудник с таким номером телефона уже есть"); + } + } + } +} diff --git a/BeautySaloon/BeautySaloonBusinessLogic/OrderLogic.cs b/BeautySaloon/BeautySaloonBusinessLogic/OrderLogic.cs new file mode 100644 index 0000000..e7a40cc --- /dev/null +++ b/BeautySaloon/BeautySaloonBusinessLogic/OrderLogic.cs @@ -0,0 +1,63 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.BusinessLogicsContracts; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.StoragesContracts; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonBusinessLogic +{ + public class OrderLogic : IOrderLogic + { + private readonly IOrderStorage _orderStorage; + public OrderLogic(IOrderStorage orderStorage) + { + _orderStorage = orderStorage; + } + public bool CreateOrder(OrderBindingModel model) + { + CheckModel(model); + if (_orderStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public List? ReadList(OrderSearchModel? model) + { + var list = model == null ? _orderStorage.GetFullList() : + _orderStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + private void CheckModel(OrderBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (model.Sum <= 0) + { + throw new ArgumentNullException("Сумма заказа должна быть больше 0", nameof(model.Sum)); + } + if (model.ClientId <= 0) + { + throw new ArgumentNullException("Некорректный идентификатор клиента", + nameof(model.ClientId)); + } + if (model.EmployeeId <= 0) + { + throw new ArgumentNullException("Некорректный идентификатор сотрудника", + nameof(model.ClientId)); + } + } + } +} diff --git a/BeautySaloon/BeautySaloonBusinessLogic/PositionLogic.cs b/BeautySaloon/BeautySaloonBusinessLogic/PositionLogic.cs new file mode 100644 index 0000000..8e21bbf --- /dev/null +++ b/BeautySaloon/BeautySaloonBusinessLogic/PositionLogic.cs @@ -0,0 +1,95 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.BusinessLogicsContracts; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.StoragesContracts; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonBusinessLogic +{ + public class PositionLogic : IPositionLogic + { + private readonly IPositionStorage _positionStorage; + public PositionLogic(IPositionStorage positionStorage) + { + _positionStorage = positionStorage; + } + public bool Create(PositionBindingModel model) + { + CheckModel(model); + if (_positionStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public bool Delete(PositionBindingModel model) + { + CheckModel(model, false); + if (_positionStorage.Delete(model) == null) + { + return false; + } + return true; + } + + public PositionViewModel? ReadElement(PositionSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + var element = _positionStorage.GetElement(model); + if (element == null) + { + return null; + } + return element; + } + + public List? ReadList(PositionSearchModel? model) + { + var list = model == null ? _positionStorage.GetFullList() : + _positionStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + public bool Update(PositionBindingModel model) + { + CheckModel(model); + if (_positionStorage.Update(model) == null) + { + return false; + } + return true; + } + + private void CheckModel(PositionBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Name)) + { + throw new ArgumentNullException("Нет названия у должности", nameof(model.Name)); + } + var element = _positionStorage.GetElement(new PositionSearchModel + { + Name = model.Name + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Должность с таким названием уже есть"); + } + } + } +} diff --git a/BeautySaloon/BeautySaloonBusinessLogic/ServiceLogic.cs b/BeautySaloon/BeautySaloonBusinessLogic/ServiceLogic.cs new file mode 100644 index 0000000..cd958b0 --- /dev/null +++ b/BeautySaloon/BeautySaloonBusinessLogic/ServiceLogic.cs @@ -0,0 +1,95 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.BusinessLogicsContracts; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.StoragesContracts; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonBusinessLogic +{ + public class ServiceLogic : IServiceLogic + { + private readonly IServiceStorage _serviceStorage; + public ServiceLogic(IServiceStorage serviceStorage) + { + _serviceStorage = serviceStorage; + } + public bool Create(ServiceBindingModel model) + { + CheckModel(model); + if (_serviceStorage.Insert(model) == null) + { + return false; + } + return true; + } + + public bool Delete(ServiceBindingModel model) + { + CheckModel(model, false); + if (_serviceStorage.Delete(model) == null) + { + return false; + } + return true; + } + + public ServiceViewModel? ReadElement(ServiceSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + var element = _serviceStorage.GetElement(model); + if (element == null) + { + return null; + } + return element; + } + + public List? ReadList(ServiceSearchModel? model) + { + var list = model == null ? _serviceStorage.GetFullList() : + _serviceStorage.GetFilteredList(model); + if (list == null) + { + return null; + } + return list; + } + + public bool Update(ServiceBindingModel model) + { + CheckModel(model); + if (_serviceStorage.Update(model) == null) + { + return false; + } + return true; + } + + private void CheckModel(ServiceBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Name)) + { + throw new ArgumentNullException("Нет названия у услуги", nameof(model.Name)); + } + var element = _serviceStorage.GetElement(new ServiceSearchModel + { + Name = model.Name + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Услуга с таким названием уже есть"); + } + } + } +} diff --git a/BeautySaloon/BeautySaloonContracts/BeautySaloonContracts.csproj b/BeautySaloon/BeautySaloonContracts/BeautySaloonContracts.csproj index d72f66d..b46dcf3 100644 --- a/BeautySaloon/BeautySaloonContracts/BeautySaloonContracts.csproj +++ b/BeautySaloon/BeautySaloonContracts/BeautySaloonContracts.csproj @@ -6,10 +6,6 @@ enable - - - - diff --git a/BeautySaloon/BeautySaloonContracts/BindingModels/OrderBindingModel.cs b/BeautySaloon/BeautySaloonContracts/BindingModels/OrderBindingModel.cs index f951e04..fdd8ce7 100644 --- a/BeautySaloon/BeautySaloonContracts/BindingModels/OrderBindingModel.cs +++ b/BeautySaloon/BeautySaloonContracts/BindingModels/OrderBindingModel.cs @@ -9,7 +9,8 @@ namespace BeautySaloonContracts.BindingModels public double Sum { get; set; } public int ClientId { get; set; } public int EmployeeId { get; set; } - public Dictionary OrderServices + + public Dictionary OrderServices { get; set; diff --git a/BeautySaloon/BeautySaloonContracts/BusinessLogicsContracts/IOrderLogic.cs b/BeautySaloon/BeautySaloonContracts/BusinessLogicsContracts/IOrderLogic.cs index 8c365eb..afe1e2f 100644 --- a/BeautySaloon/BeautySaloonContracts/BusinessLogicsContracts/IOrderLogic.cs +++ b/BeautySaloon/BeautySaloonContracts/BusinessLogicsContracts/IOrderLogic.cs @@ -7,7 +7,6 @@ namespace BeautySaloonContracts.BusinessLogicsContracts public interface IOrderLogic { List? ReadList(OrderSearchModel? model); - bool CreateOrder(OrderBindingModel model); } } diff --git a/BeautySaloon/BeautySaloonContracts/StoragesContracts/IClientStorage.cs b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IClientStorage.cs new file mode 100644 index 0000000..7250eb2 --- /dev/null +++ b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IClientStorage.cs @@ -0,0 +1,16 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonContracts.StoragesContracts +{ + public interface IClientStorage + { + List GetFullList(); + List GetFilteredList(ClientSearchModel model); + ClientViewModel? GetElement(ClientSearchModel model); + ClientViewModel? Insert(ClientBindingModel model); + ClientViewModel? Update(ClientBindingModel model); + ClientViewModel? Delete(ClientBindingModel model); + } +} diff --git a/BeautySaloon/BeautySaloonContracts/StoragesContracts/IEmployeeStorage.cs b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IEmployeeStorage.cs new file mode 100644 index 0000000..62a2815 --- /dev/null +++ b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IEmployeeStorage.cs @@ -0,0 +1,16 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonContracts.StoragesContracts +{ + public interface IEmployeeStorage + { + List GetFullList(); + List GetFilteredList(EmployeeSearchModel model); + EmployeeViewModel? GetElement(EmployeeSearchModel model); + EmployeeViewModel? Insert(EmployeeBindingModel model); + EmployeeViewModel? Update(EmployeeBindingModel model); + EmployeeViewModel? Delete(EmployeeBindingModel model); + } +} diff --git a/BeautySaloon/BeautySaloonContracts/StoragesContracts/IOrderStorage.cs b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IOrderStorage.cs new file mode 100644 index 0000000..62d474c --- /dev/null +++ b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IOrderStorage.cs @@ -0,0 +1,16 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonContracts.StoragesContracts +{ + public interface IOrderStorage + { + List GetFullList(); + List GetFilteredList(OrderSearchModel model); + OrderViewModel? GetElement(OrderSearchModel model); + OrderViewModel? Insert(OrderBindingModel model); + OrderViewModel? Update(OrderBindingModel model); + OrderViewModel? Delete(OrderBindingModel model); + } +} diff --git a/BeautySaloon/BeautySaloonContracts/StoragesContracts/IPositionStorage.cs b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IPositionStorage.cs new file mode 100644 index 0000000..a6c8335 --- /dev/null +++ b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IPositionStorage.cs @@ -0,0 +1,16 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonContracts.StoragesContracts +{ + public interface IPositionStorage + { + List GetFullList(); + List GetFilteredList(PositionSearchModel model); + PositionViewModel? GetElement(PositionSearchModel model); + PositionViewModel? Insert(PositionBindingModel model); + PositionViewModel? Update(PositionBindingModel model); + PositionViewModel? Delete(PositionBindingModel model); + } +} diff --git a/BeautySaloon/BeautySaloonContracts/StoragesContracts/IServiceStorage.cs b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IServiceStorage.cs new file mode 100644 index 0000000..adb6b8a --- /dev/null +++ b/BeautySaloon/BeautySaloonContracts/StoragesContracts/IServiceStorage.cs @@ -0,0 +1,16 @@ +using BeautySaloonContracts.BindingModels; +using BeautySaloonContracts.SearchModels; +using BeautySaloonContracts.ViewModels; + +namespace BeautySaloonContracts.StoragesContracts +{ + public interface IServiceStorage + { + List GetFullList(); + List GetFilteredList(ServiceSearchModel model); + ServiceViewModel? GetElement(ServiceSearchModel model); + ServiceViewModel? Insert(ServiceBindingModel model); + ServiceViewModel? Update(ServiceBindingModel model); + ServiceViewModel? Delete(ServiceBindingModel model); + } +} diff --git a/BeautySaloon/BeautySaloonContracts/ViewModels/OrderViewModel.cs b/BeautySaloon/BeautySaloonContracts/ViewModels/OrderViewModel.cs index 0f249f0..460c753 100644 --- a/BeautySaloon/BeautySaloonContracts/ViewModels/OrderViewModel.cs +++ b/BeautySaloon/BeautySaloonContracts/ViewModels/OrderViewModel.cs @@ -17,6 +17,10 @@ namespace BeautySaloonContracts.ViewModels public int EmployeeId { get; set; } [DisplayName("Продавец")] public string EmployeeName { get; set; } = string.Empty; - public Dictionary OrderServices { get; set; } = new(); + public Dictionary OrderServices + { + get; + set; + } = new(); } } diff --git a/BeautySaloon/BeautySaloonDataModels/IOrderModel.cs b/BeautySaloon/BeautySaloonDataModels/IOrderModel.cs index b2bbaf2..810ff4c 100644 --- a/BeautySaloon/BeautySaloonDataModels/IOrderModel.cs +++ b/BeautySaloon/BeautySaloonDataModels/IOrderModel.cs @@ -7,6 +7,6 @@ double Sum { get; } int ClientId { get; } int EmployeeId { get; } - Dictionary OrderServices { get; } + Dictionary OrderServices { get; } } } diff --git a/BeautySaloon/BeautySaloonView/BeautySaloonView.csproj b/BeautySaloon/BeautySaloonView/BeautySaloonView.csproj index b57c89e..9200065 100644 --- a/BeautySaloon/BeautySaloonView/BeautySaloonView.csproj +++ b/BeautySaloon/BeautySaloonView/BeautySaloonView.csproj @@ -8,4 +8,14 @@ enable + + + + + + + + + + \ No newline at end of file diff --git a/BeautySaloon/BeautySaloonView/Form1.Designer.cs b/BeautySaloon/BeautySaloonView/FormMain.Designer.cs similarity index 97% rename from BeautySaloon/BeautySaloonView/Form1.Designer.cs rename to BeautySaloon/BeautySaloonView/FormMain.Designer.cs index bba430b..b874383 100644 --- a/BeautySaloon/BeautySaloonView/Form1.Designer.cs +++ b/BeautySaloon/BeautySaloonView/FormMain.Designer.cs @@ -1,6 +1,6 @@ namespace BeautySaloonView { - partial class Form1 + partial class FormMain { /// /// Required designer variable. diff --git a/BeautySaloon/BeautySaloonView/Form1.cs b/BeautySaloon/BeautySaloonView/FormMain.cs similarity index 58% rename from BeautySaloon/BeautySaloonView/Form1.cs rename to BeautySaloon/BeautySaloonView/FormMain.cs index feebdb1..bfc866b 100644 --- a/BeautySaloon/BeautySaloonView/Form1.cs +++ b/BeautySaloon/BeautySaloonView/FormMain.cs @@ -1,8 +1,8 @@ namespace BeautySaloonView { - public partial class Form1 : Form + public partial class FormMain : Form { - public Form1() + public FormMain() { InitializeComponent(); } diff --git a/BeautySaloon/BeautySaloonView/Form1.resx b/BeautySaloon/BeautySaloonView/FormMain.resx similarity index 100% rename from BeautySaloon/BeautySaloonView/Form1.resx rename to BeautySaloon/BeautySaloonView/FormMain.resx diff --git a/BeautySaloon/BeautySaloonView/Program.cs b/BeautySaloon/BeautySaloonView/Program.cs index 1545c43..a08a70e 100644 --- a/BeautySaloon/BeautySaloonView/Program.cs +++ b/BeautySaloon/BeautySaloonView/Program.cs @@ -1,7 +1,14 @@ +using BeautySaloonBusinessLogic; +using BeautySaloonContracts.BusinessLogicsContracts; +using BeautySaloonContracts.StoragesContracts; +using Microsoft.Extensions.DependencyInjection; + namespace BeautySaloonView { internal static class Program { + private static ServiceProvider? _serviceProvider; + public static ServiceProvider? ServiceProvider => _serviceProvider; /// /// The main entry point for the application. /// @@ -11,7 +18,29 @@ namespace BeautySaloonView // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + + var services = new ServiceCollection(); + ConfigureServices(services); + _serviceProvider = services.BuildServiceProvider(); + + Application.Run(_serviceProvider.GetRequiredService()); + } + + private static void ConfigureServices(ServiceCollection services) + { + /*services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient();*/ + + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + services.AddTransient(); } } } \ No newline at end of file