From 465606f0549ed664c842cd331959da5382924d83 Mon Sep 17 00:00:00 2001 From: Zyzf Date: Mon, 15 May 2023 12:00:40 -0700 Subject: [PATCH] fixes in namespaces, added new model and relation with contracts and etc, added res api with crud --- FurnitureAssembly/FurnitureAssembly.sln | 8 +- .../BusinessLogics/FurnitureLogic.cs | 2 +- .../BusinessLogics/MaterialLogic.cs | 2 +- .../BusinessLogics/OrderInfoLogic.cs | 108 +++ .../BusinessLogics/OrderLogic.cs | 4 +- .../BusinessLogics/ScopeLogic.cs | 2 +- .../BusinessLogics/UserLogic.cs | 2 +- .../BindingModels/OrderBindingModel.cs | 9 +- .../BindingModels/OrderInfoBindingModel.cs | 20 + .../BusinessLogicContracts/IOrderInfoLogic.cs | 20 + .../SearchModels/OrderInfoSearchModel.cs | 16 + .../SearchModels/OrderSearchModel.cs | 5 +- .../StorageContracts/IOrderInfoStorage.cs | 21 + .../ViewModels/OrderInfoViewModel.cs | 28 + .../ViewModels/OrderViewModel.cs | 17 +- .../Models/IFurnitureModel.cs | 4 +- .../Models/IOrderInfoModel.cs | 18 + .../Models/IOrderModel.cs | 11 +- .../FurnitureAssemblyDatabase.cs | 1 + .../Implements/FurnitureStorage.cs | 3 +- .../Implements/OrderInfoStorage.cs | 117 ++++ .../Implements/OrderStorage.cs | 59 +- .../Implements/RoleStorage.cs | 94 +++ .../20230406130140_Init.Designer.cs | 14 +- .../Migrations/20230406130140_Init.cs | 18 +- .../FurnitureAssemblyDatabaseModelSnapshot.cs | 14 +- .../Models/Order.cs | 38 +- .../Models/OrderInfo.cs | 65 ++ .../Controllers/MainController.cs | 650 ++++++++++++++++++ .../FurnitureAssemblyRestApi.csproj | 20 + .../FurnitureAssemblyRestApi/Program.cs | 56 ++ .../Properties/launchSettings.json | 31 + .../appsettings.Development.json | 8 + .../FurnitureAssemblyRestApi/appsettings.json | 9 + 34 files changed, 1381 insertions(+), 113 deletions(-) create mode 100644 FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderInfoLogic.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderInfoBindingModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicContracts/IOrderInfoLogic.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderInfoSearchModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/StorageContracts/IOrderInfoStorage.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderInfoViewModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderInfoModel.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderInfoStorage.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/RoleStorage.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/OrderInfo.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyRestApi/Controllers/MainController.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyRestApi/FurnitureAssemblyRestApi.csproj create mode 100644 FurnitureAssembly/FurnitureAssemblyRestApi/Program.cs create mode 100644 FurnitureAssembly/FurnitureAssemblyRestApi/Properties/launchSettings.json create mode 100644 FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.Development.json create mode 100644 FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.json diff --git a/FurnitureAssembly/FurnitureAssembly.sln b/FurnitureAssembly/FurnitureAssembly.sln index 9d45684..01554aa 100644 --- a/FurnitureAssembly/FurnitureAssembly.sln +++ b/FurnitureAssembly/FurnitureAssembly.sln @@ -11,7 +11,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FurnitureAssemblyContracts" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FurnitureAssembly", "FurnitureAssembly\FurnitureAssembly.csproj", "{C7E2829D-78C7-400B-8BBB-47FE7B2DB878}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FurnitureAssemblyBusinessLogic", "FurnitureAssemblyBusinessLogic\FurnitureAssemblyBusinessLogic.csproj", "{D7934CFF-BB47-4F7A-8B6D-2FF213542B5B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FurnitureAssemblyBusinessLogic", "FurnitureAssemblyBusinessLogic\FurnitureAssemblyBusinessLogic.csproj", "{D7934CFF-BB47-4F7A-8B6D-2FF213542B5B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FurnitureAssemblyRestApi", "FurnitureAssemblyRestApi\FurnitureAssemblyRestApi.csproj", "{61874779-CE96-475E-A17B-69F86C1C5A85}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -39,6 +41,10 @@ Global {D7934CFF-BB47-4F7A-8B6D-2FF213542B5B}.Debug|Any CPU.Build.0 = Debug|Any CPU {D7934CFF-BB47-4F7A-8B6D-2FF213542B5B}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7934CFF-BB47-4F7A-8B6D-2FF213542B5B}.Release|Any CPU.Build.0 = Release|Any CPU + {61874779-CE96-475E-A17B-69F86C1C5A85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61874779-CE96-475E-A17B-69F86C1C5A85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61874779-CE96-475E-A17B-69F86C1C5A85}.Release|Any CPU.ActiveCfg = Release|Any CPU + {61874779-CE96-475E-A17B-69F86C1C5A85}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/FurnitureLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/FurnitureLogic.cs index 122cd32..7d85222 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/FurnitureLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/FurnitureLogic.cs @@ -10,7 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace FurnitureAssembly_StorekeeperBusinessLogic.BusinessLogics +namespace FurnitureAssemblyBusinessLogic.BusinessLogics { public class FurnitureLogic: IFurnitureLogic { diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/MaterialLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/MaterialLogic.cs index 10edb25..82f8d17 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/MaterialLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/MaterialLogic.cs @@ -5,7 +5,7 @@ using FurnitureAssemblyContracts.StorageContracts; using FurnitureAssemblyContracts.ViewModels; using Microsoft.Extensions.Logging; -namespace FurnitureAssembly_Storekeeper_BusinessLogic.BusinessLogics +namespace FurnitureAssemblyBusinessLogic.BusinessLogics { public class MaterialLogic : IMaterialLogic { diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderInfoLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderInfoLogic.cs new file mode 100644 index 0000000..85cec77 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderInfoLogic.cs @@ -0,0 +1,108 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.BusinessLogicContracts; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.StorageContracts; +using FurnitureAssemblyContracts.ViewModels; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyBusinessLogic.BusinessLogics +{ + public class OrderInfoLogic : IOrderInfoLogic + { + private readonly ILogger _logger; + private readonly IOrderInfoStorage _orderInfoStorage; + public OrderInfoLogic(ILogger logger, IOrderInfoStorage orderInfoStorage) + { + _logger = logger; + _orderInfoStorage = orderInfoStorage; + } + public List? ReadList(OrderInfoSearchModel? model) + { + _logger.LogInformation("ReadList. OrderInfoId:{Id}", model?.Id); + var list = model == null ? _orderInfoStorage.GetFullList() : _orderInfoStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + public OrderInfoViewModel? ReadElement(OrderInfoSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. OrderInfoId:{ Id}", model.Id); + var element = _orderInfoStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + public bool Create(OrderInfoBindingModel model) + { + CheckModel(model); + if (_orderInfoStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public bool Update(OrderInfoBindingModel model) + { + CheckModel(model); + if (_orderInfoStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(OrderInfoBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_orderInfoStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + private void CheckModel(OrderInfoBindingModel model, bool withParams = true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (model.PaymentType == FurnitureAssemblyDataModels.Enums.PaymentType.Неизвестен) + { + throw new ArgumentNullException("Неизвестный тип оплаты", nameof(model.PaymentType)); + } + if (model.Sum < 0) + { + throw new ArgumentNullException("Сумма заказа должна быть больше 0", nameof(model.Sum)); + } + if (model.UserId < 0) + { + throw new ArgumentNullException("Неправильный Id пользователя", nameof(model.UserId)); + } + _logger.LogInformation("OrderInfo. Id: {Id}.", model.Id); + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderLogic.cs index 0a9cc86..911a9fc 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/OrderLogic.cs @@ -94,9 +94,9 @@ namespace FurnitureAssemblyBusinessLogic.BusinessLogics { throw new ArgumentNullException("Некорректный идентификатор гарнитура", nameof(model.SetId)); } - if (model.Sum < 0) + if (model.OrderInfoId < 0) { - throw new ArgumentNullException("Сумма заказа должна быть больше 0", nameof(model.Sum)); + throw new ArgumentNullException("Некорректный индентификатор order_info", nameof(model.OrderInfoId)); } _logger.LogInformation("Order. Id: {Id}. SetId: {SetId}", model.Id, model.SetId); } diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/ScopeLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/ScopeLogic.cs index 4ea0d14..80be146 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/ScopeLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/ScopeLogic.cs @@ -5,7 +5,7 @@ using FurnitureAssemblyContracts.StorageContracts; using FurnitureAssemblyContracts.ViewModels; using Microsoft.Extensions.Logging; -namespace FurnitureAssembly_Storekeeper_BusinessLogic.BusinessLogics +namespace FurnitureAssemblyBusinessLogic.BusinessLogics { public class ScopeLogic : IScopeLogic { diff --git a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/UserLogic.cs b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/UserLogic.cs index e6ae640..2307931 100644 --- a/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/UserLogic.cs +++ b/FurnitureAssembly/FurnitureAssemblyBusinessLogic/BusinessLogics/UserLogic.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace FurnitureAssemblyBusinessLogic.BusinessLogics { - internal class UserLogic : IUserLogic + public class UserLogic : IUserLogic { private readonly ILogger _logger; private readonly IUserStorage _userStorage; diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderBindingModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderBindingModel.cs index 12fb8f4..a8939e8 100644 --- a/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderBindingModel.cs +++ b/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderBindingModel.cs @@ -13,11 +13,8 @@ namespace FurnitureAssemblyContracts.BindingModels public class OrderBindingModel : IOrderModel { public int Id { get; set; } - public string CustomerName { get; set; } = string.Empty; - public PaymentType PaymentType { get; set; } = PaymentType.Неизвестен; public int SetId { get; set; } - public DateTime DateCreate { get; set; } - public double Sum { get; set; } - public int UserId { get; set; } - } + public int OrderInfoId { get; set; } + public int Count { get; set; } + } } diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderInfoBindingModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderInfoBindingModel.cs new file mode 100644 index 0000000..21930f5 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/BindingModels/OrderInfoBindingModel.cs @@ -0,0 +1,20 @@ +using FurnitureAssemblyDataModels.Enums; +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.BindingModels +{ + public class OrderInfoBindingModel : IOrderInfoModel + { + public int Id { get; set; } + public string CustomerName { get; set; } = string.Empty; + public PaymentType PaymentType { get; set; } = PaymentType.Неизвестен; + public DateTime DateCreate { get; set; } + public double Sum { get; set; } + public int UserId { get; set; } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicContracts/IOrderInfoLogic.cs b/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicContracts/IOrderInfoLogic.cs new file mode 100644 index 0000000..ba415a3 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/BusinessLogicContracts/IOrderInfoLogic.cs @@ -0,0 +1,20 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.BusinessLogicContracts +{ + public interface IOrderInfoLogic + { + List? ReadList(OrderInfoSearchModel? model); + OrderInfoViewModel? ReadElement(OrderInfoSearchModel model); + bool Create(OrderInfoBindingModel model); + bool Update(OrderInfoBindingModel model); + bool Delete(OrderInfoBindingModel model); + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderInfoSearchModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderInfoSearchModel.cs new file mode 100644 index 0000000..acee68d --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderInfoSearchModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.SearchModels +{ + public class OrderInfoSearchModel + { + public int? Id { get; set; } + public int? UserId { get; set; } + public DateTime? DateFrom { get; set; } + public DateTime? DateTo { get; set; } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderSearchModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderSearchModel.cs index e8938f9..8c207a3 100644 --- a/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderSearchModel.cs +++ b/FurnitureAssembly/FurnitureAssemblyContracts/SearchModels/OrderSearchModel.cs @@ -9,8 +9,7 @@ namespace FurnitureAssemblyContracts.SearchModels public class OrderSearchModel { public int? Id { get; set; } - public int? UserId { get; set; } - public DateTime? DateFrom { get; set; } - public DateTime? DateTo { get; set; } + public int? SetId { get; set; } + public int? OrderInfoId { get; set; } } } diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/StorageContracts/IOrderInfoStorage.cs b/FurnitureAssembly/FurnitureAssemblyContracts/StorageContracts/IOrderInfoStorage.cs new file mode 100644 index 0000000..c580db9 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/StorageContracts/IOrderInfoStorage.cs @@ -0,0 +1,21 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.StorageContracts +{ + public interface IOrderInfoStorage + { + List GetFullList(); + List GetFilteredList(OrderInfoSearchModel model); + OrderInfoViewModel? GetElement(OrderInfoSearchModel model); + OrderInfoViewModel? Insert(OrderInfoBindingModel model); + OrderInfoViewModel? Update(OrderInfoBindingModel model); + OrderInfoViewModel? Delete(OrderInfoBindingModel model); + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderInfoViewModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderInfoViewModel.cs new file mode 100644 index 0000000..1f155bc --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderInfoViewModel.cs @@ -0,0 +1,28 @@ +using FurnitureAssemblyDataModels.Enums; +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyContracts.ViewModels +{ + public class OrderInfoViewModel : IOrderInfoModel + { + [DisplayName("Номер")] + public int Id { get; set; } + [DisplayName("Имя заказчика")] + public string CustomerName { get; set; } = string.Empty; + [DisplayName("Тип оплаты")] + public PaymentType PaymentType { get; set; } = PaymentType.Неизвестен; + [DisplayName("Дата создания")] + public DateTime DateCreate { get; set; } + [DisplayName("Сумма")] + public double Sum { get; set; } + public int UserId { get; set; } + [DisplayName("Менеджер")] + public string UserName { get; set; } = string.Empty; + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderViewModel.cs b/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderViewModel.cs index 4516058..68a8682 100644 --- a/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderViewModel.cs +++ b/FurnitureAssembly/FurnitureAssemblyContracts/ViewModels/OrderViewModel.cs @@ -11,21 +11,12 @@ namespace FurnitureAssemblyContracts.ViewModels { public class OrderViewModel : IOrderModel { - [DisplayName("Номер")] public int Id { get; set; } - [DisplayName("Имя заказчика")] - public string CustomerName { get; set; } = string.Empty; - [DisplayName("Тип оплаты")] - public PaymentType PaymentType { get; set; } = PaymentType.Неизвестен; public int SetId { get; set; } [DisplayName("Гарнитур")] public string SetName { get; set; } = string.Empty; - [DisplayName("Дата создания")] - public DateTime DateCreate { get; set; } - [DisplayName("Сумма")] - public double Sum { get; set; } - public int UserId { get; set; } - [DisplayName("Менеджер")] - public string UserName { get; set; } = string.Empty; - } + [DisplayName("Количество")] + public int Count { get; set; } + public int OrderInfoId { get; set; } + } } diff --git a/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IFurnitureModel.cs b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IFurnitureModel.cs index 33fd734..4ea698b 100644 --- a/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IFurnitureModel.cs +++ b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IFurnitureModel.cs @@ -11,7 +11,7 @@ namespace FurnitureAssemblyDataModels.Models string Name { get; } double Cost { get; } DateTime DateCreate { get; } - Dictionary FurnitureMaterials { get; } - int UserId { get; } + int UserId { get; } + Dictionary FurnitureMaterials { get; } } } diff --git a/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderInfoModel.cs b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderInfoModel.cs new file mode 100644 index 0000000..c70ebbd --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderInfoModel.cs @@ -0,0 +1,18 @@ +using FurnitureAssemblyDataModels.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyDataModels.Models +{ + public class IOrderInfoModel + { + PaymentType PaymentType { get; } + DateTime DateCreate { get; } + string CustomerName { get; } + double Sum { get; } + int UserId { get; } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderModel.cs b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderModel.cs index e570f3d..5e76d6e 100644 --- a/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderModel.cs +++ b/FurnitureAssembly/FurnitureAssemblyDataModels/Models/IOrderModel.cs @@ -9,11 +9,8 @@ namespace FurnitureAssemblyDataModels.Models { public interface IOrderModel : IId { - string CustomerName { get; } - PaymentType PaymentType { get; } - int SetId { get; } - int UserId { get; } - double Sum { get; } - DateTime DateCreate { get; } - } + int SetId { get; } + int OrderInfoId { get; } + int Count { get; } + } } diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/FurnitureAssemblyDatabase.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/FurnitureAssemblyDatabase.cs index e2e4ff1..3ade6e9 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/FurnitureAssemblyDatabase.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/FurnitureAssemblyDatabase.cs @@ -29,5 +29,6 @@ namespace FurnitureAssemblyDatabaseImplement public virtual DbSet Scopes { get; set; } public virtual DbSet Users { get; set; } public virtual DbSet Orders { get; set; } + public virtual DbSet OrderInfos { get; set; } } } diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/FurnitureStorage.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/FurnitureStorage.cs index 13cd18f..f361d4b 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/FurnitureStorage.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/FurnitureStorage.cs @@ -22,7 +22,8 @@ namespace FurnitureAssemblyDatabaseImplement.Implements .Include(x => x.Materials) .ThenInclude(x => x.Material).ToList() .Select(x => x.GetViewModel).ToList(); - } + return context.Furnitures.Include(x => x.FurnitureModules).ThenInclude(x => x.Component).ToList().Select(x => x.GetViewModel).ToList(); + } public List GetFilteredList(FurnitureSearchModel model) { using var context = new FurnitureAssemblyDatabase(); diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderInfoStorage.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderInfoStorage.cs new file mode 100644 index 0000000..3b3d15a --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderInfoStorage.cs @@ -0,0 +1,117 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.StorageContracts; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyDatabaseImplement.Models; +using FurnitureAssemblyDataModels.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyDatabaseImplement.Implements +{ + public class OrderInfoStorage : IOrderInfoStorage + { + public OrderInfoViewModel? Delete(OrderInfoBindingModel model) + { + using var context = new FurnitureAssemblyDatabase(); + var element = context.OrderInfos.FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.OrderInfos + .Include(x => x.User) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.OrderInfos.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + public OrderInfoViewModel? GetElement(OrderInfoSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new FurnitureAssemblyDatabase(); + return context.OrderInfos + .Include(x => x.User) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + public List GetFilteredList(OrderInfoSearchModel model) + { + using var context = new FurnitureAssemblyDatabase(); + if (model.Id.HasValue) + { + return context.OrderInfos + .Include(x => x.User) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + else if (model.DateFrom != null && model.DateTo != null) + { + return context.OrderInfos + .Include(x => x.User) + .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) + .Select(x => x.GetViewModel) + .ToList(); + } + else if (model.UserId.HasValue) + { + return context.OrderInfos + .Include(x => x.User) + .Where(x => x.UserId == model.UserId) + .Select(x => x.GetViewModel) + .ToList(); + } + else + { + return new(); + } + } + public List GetFullList() + { + using var context = new FurnitureAssemblyDatabase(); + return context.OrderInfos + .Include(x => x.User) + .Select(x => x.GetViewModel) + .ToList(); + } + public OrderInfoViewModel? Insert(OrderInfoBindingModel model) + { + var newOrderInfo = OrderInfo.Create(model); + if (newOrderInfo == null) + { + return null; + } + using var context = new FurnitureAssemblyDatabase(); + context.OrderInfos.Add(newOrderInfo); + context.SaveChanges(); + return context.OrderInfos + .Include(x => x.User) + .FirstOrDefault(x => x.Id == newOrderInfo.Id) + ?.GetViewModel; + } + public OrderInfoViewModel? Update(OrderInfoBindingModel model) + { + using var context = new FurnitureAssemblyDatabase(); + var orderInfo = context.OrderInfos.FirstOrDefault(x => x.Id == model.Id); + if (orderInfo == null) + { + return null; + } + orderInfo.Update(model); + context.SaveChanges(); + return context.OrderInfos + .Include(x => x.User) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderStorage.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderStorage.cs index 1550300..f233762 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderStorage.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/OrderStorage.cs @@ -22,7 +22,7 @@ namespace FurnitureAssemblyDatabaseImplement.Implements { var deletedElement = context.Orders .Include(x => x.Set) - .Include(x => x.User) + .Include(x => x.OrderInfoId) .FirstOrDefault(x => x.Id == model.Id) ?.GetViewModel; context.Orders.Remove(element); @@ -40,8 +40,8 @@ namespace FurnitureAssemblyDatabaseImplement.Implements using var context = new FurnitureAssemblyDatabase(); return context.Orders .Include(x => x.Set) - .Include(x => x.User) - .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + .Include(x => x.OrderInfoId) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) ?.GetViewModel; } public List GetFilteredList(OrderSearchModel model) @@ -51,30 +51,39 @@ namespace FurnitureAssemblyDatabaseImplement.Implements { return context.Orders .Include(x => x.Set) - .Include(x => x.User) - .Where(x => x.Id == model.Id) + .Include(x => x.OrderInfoId) + .Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); } - else if (model.DateFrom != null && model.DateTo != null) + else if (model.SetId.HasValue && model.OrderInfoId.HasValue) { return context.Orders - .Include(x => x.Set) - .Include(x => x.User) - .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) + .Include(x => x.Set) + .Include(x => x.OrderInfoId) + .Where(x => x.SetId == model.SetId && x.OrderInfoId == model.OrderInfoId) .Select(x => x.GetViewModel) .ToList(); } - else if (model.UserId.HasValue) - { - return context.Orders - .Include(x => x.Set) - .Include(x => x.User) - .Where(x => x.UserId == model.UserId) - .Select(x => x.GetViewModel) - .ToList(); - } - else + else if (model.SetId.HasValue) + { + return context.Orders + .Include(x => x.Set) + .Include(x => x.OrderInfoId) + .Where(x => x.SetId == model.SetId) + .Select(x => x.GetViewModel) + .ToList(); + } + else if (model.OrderInfoId.HasValue) + { + return context.Orders + .Include(x => x.Set) + .Include(x => x.OrderInfoId) + .Where(x => x.OrderInfoId == model.OrderInfoId) + .Select(x => x.GetViewModel) + .ToList(); + } + else { return new(); } @@ -84,8 +93,8 @@ namespace FurnitureAssemblyDatabaseImplement.Implements using var context = new FurnitureAssemblyDatabase(); return context.Orders .Include(x => x.Set) - .Include(x => x.User) - .Select(x => x.GetViewModel) + .Include(x => x.OrderInfoId) + .Select(x => x.GetViewModel) .ToList(); } public OrderViewModel? Insert(OrderBindingModel model) @@ -100,8 +109,8 @@ namespace FurnitureAssemblyDatabaseImplement.Implements context.SaveChanges(); return context.Orders .Include(x => x.Set) - .Include(x => x.User) - .FirstOrDefault(x => x.Id == newOrder.Id) + .Include(x => x.OrderInfoId) + .FirstOrDefault(x => x.Id == newOrder.Id) ?.GetViewModel; } public OrderViewModel? Update(OrderBindingModel model) @@ -116,8 +125,8 @@ namespace FurnitureAssemblyDatabaseImplement.Implements context.SaveChanges(); return context.Orders .Include(x => x.Set) - .Include(x => x.User) - .FirstOrDefault(x => x.Id == model.Id) + .Include(x => x.OrderInfoId) + .FirstOrDefault(x => x.Id == model.Id) ?.GetViewModel; } } diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/RoleStorage.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/RoleStorage.cs new file mode 100644 index 0000000..1cd08da --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Implements/RoleStorage.cs @@ -0,0 +1,94 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.StorageContracts; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyDatabaseImplement.Models; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyDatabaseImplement.Implements +{ + public class RoleStorage : IRoleStorage + { + public RoleViewModel? Delete(RoleBindingModel model) + { + using var context = new FurnitureAssemblyDatabase(); + var element = context.Roles.FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + var deletedElement = context.Roles + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + context.Roles.Remove(element); + context.SaveChanges(); + return deletedElement; + } + return null; + } + public RoleViewModel? GetElement(RoleSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new FurnitureAssemblyDatabase(); + return context.Roles + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + public List GetFilteredList(RoleSearchModel model) + { + using var context = new FurnitureAssemblyDatabase(); + if (model.Id.HasValue) + { + return context.Roles + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + else + { + return new(); + } + } + public List GetFullList() + { + using var context = new FurnitureAssemblyDatabase(); + return context.Roles + .Select(x => x.GetViewModel) + .ToList(); + } + public RoleViewModel? Insert(RoleBindingModel model) + { + var newRole = Role.Create(model); + if (newRole == null) + { + return null; + } + using var context = new FurnitureAssemblyDatabase(); + context.Roles.Add(newRole); + context.SaveChanges(); + return context.Roles + .FirstOrDefault(x => x.Id == newRole.Id) + ?.GetViewModel; + } + public RoleViewModel? Update(RoleBindingModel model) + { + using var context = new FurnitureAssemblyDatabase(); + var role = context.Roles.FirstOrDefault(x => x.Id == model.Id); + if (role == null) + { + return null; + } + role.Update(model); + context.SaveChanges(); + return context.Roles + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.Designer.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.Designer.cs index 3932a08..784764c 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.Designer.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.Designer.cs @@ -163,7 +163,7 @@ namespace FurnitureAssembly_WorkerDatabaseImplement.Migrations b.ToTable("Materials"); }); - modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Order", b => + modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Role", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -196,7 +196,7 @@ namespace FurnitureAssembly_WorkerDatabaseImplement.Migrations b.HasIndex("UserId"); - b.ToTable("Orders"); + b.ToTable("Roles"); }); modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Role", b => @@ -396,16 +396,16 @@ namespace FurnitureAssembly_WorkerDatabaseImplement.Migrations b.Navigation("User"); }); - modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Order", b => + modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Role", b => { b.HasOne("FurnitureAssembly_WorkerDatabaseImplement.Models.Set", "Set") - .WithMany("Orders") + .WithMany("Roles") .HasForeignKey("SetId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("FurnitureAssembly_WorkerDatabaseImplement.Models.User", "User") - .WithMany("Orders") + .WithMany("Roles") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -487,7 +487,7 @@ namespace FurnitureAssembly_WorkerDatabaseImplement.Migrations { b.Navigation("FurnitureModules"); - b.Navigation("Orders"); + b.Navigation("Roles"); }); modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.User", b => @@ -498,7 +498,7 @@ namespace FurnitureAssembly_WorkerDatabaseImplement.Migrations b.Navigation("Materials"); - b.Navigation("Orders"); + b.Navigation("Roles"); b.Navigation("Sets"); }); diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.cs index 41fcc76..b064e2e 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/20230406130140_Init.cs @@ -209,7 +209,7 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations }); migrationBuilder.CreateTable( - name: "Orders", + name: "Roles", columns: table => new { Id = table.Column(type: "integer", nullable: false) @@ -223,15 +223,15 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations }, constraints: table => { - table.PrimaryKey("PK_Orders", x => x.Id); + table.PrimaryKey("PK_Roles", x => x.Id); table.ForeignKey( - name: "FK_Orders_Sets_SetId", + name: "FK_Roles_Sets_SetId", column: x => x.SetId, principalTable: "Sets", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_Orders_Users_UserId", + name: "FK_Roles_Users_UserId", column: x => x.UserId, principalTable: "Users", principalColumn: "Id", @@ -306,13 +306,13 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations column: "UserId"); migrationBuilder.CreateIndex( - name: "IX_Orders_SetId", - table: "Orders", + name: "IX_Roles_SetId", + table: "Roles", column: "SetId"); migrationBuilder.CreateIndex( - name: "IX_Orders_UserId", - table: "Orders", + name: "IX_Roles_UserId", + table: "Roles", column: "UserId"); migrationBuilder.CreateIndex( @@ -346,7 +346,7 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations name: "FurnitureModuleFurnitures"); migrationBuilder.DropTable( - name: "Orders"); + name: "Roles"); migrationBuilder.DropTable( name: "SetFurnitureModules"); diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/FurnitureAssemblyDatabaseModelSnapshot.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/FurnitureAssemblyDatabaseModelSnapshot.cs index a26446c..46503e6 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/FurnitureAssemblyDatabaseModelSnapshot.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Migrations/FurnitureAssemblyDatabaseModelSnapshot.cs @@ -160,7 +160,7 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations b.ToTable("Materials"); }); - modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Order", b => + modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Role", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -193,7 +193,7 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations b.HasIndex("UserId"); - b.ToTable("Orders"); + b.ToTable("Roles"); }); modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Role", b => @@ -393,16 +393,16 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations b.Navigation("User"); }); - modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Order", b => + modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.Role", b => { b.HasOne("FurnitureAssembly_WorkerDatabaseImplement.Models.Set", "Set") - .WithMany("Orders") + .WithMany("Roles") .HasForeignKey("SetId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("FurnitureAssembly_WorkerDatabaseImplement.Models.User", "User") - .WithMany("Orders") + .WithMany("Roles") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -484,7 +484,7 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations { b.Navigation("FurnitureModules"); - b.Navigation("Orders"); + b.Navigation("Roles"); }); modelBuilder.Entity("FurnitureAssembly_WorkerDatabaseImplement.Models.User", b => @@ -495,7 +495,7 @@ namespace FurnitureAssemblyDatabaseImplement.Migrations b.Navigation("Materials"); - b.Navigation("Orders"); + b.Navigation("Roles"); b.Navigation("Sets"); }); diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/Order.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/Order.cs index 3bd3eb9..f0ca689 100644 --- a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/Order.cs +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/Order.cs @@ -15,20 +15,13 @@ namespace FurnitureAssemblyDatabaseImplement.Models { public int Id { get; set; } [Required] - public string CustomerName { get; set; } = string.Empty; - [Required] - public PaymentType PaymentType { get; set; } = PaymentType.Неизвестен; - [Required] public int SetId { get; set; } public virtual Set Set { get; set; } [Required] - public DateTime DateCreate { get; set; } + public int Count { get; set; } [Required] - public double Sum { get; set; } - [Required] - public int UserId { get; set; } - public virtual User User { get; set; } - public static Order? Create(OrderBindingModel? model) + public int OrderInfoId { get; set; } + public static Order? Create(OrderBindingModel? model) { if (model == null) { @@ -37,12 +30,9 @@ namespace FurnitureAssemblyDatabaseImplement.Models return new Order() { Id = model.Id, - CustomerName = model.CustomerName, - PaymentType = model.PaymentType, SetId = model.SetId, - Sum = model.Sum, - DateCreate = model.DateCreate, - UserId = model.UserId + Count = model.Count, + OrderInfoId = model.OrderInfoId }; } public void Update(OrderBindingModel? model) @@ -51,22 +41,18 @@ namespace FurnitureAssemblyDatabaseImplement.Models { return; } - CustomerName = model.CustomerName; - PaymentType = model.PaymentType; SetId = model.SetId; - UserId = model.UserId; - } + Count = model.Count; + OrderInfoId = model.OrderInfoId; + } public OrderViewModel GetViewModel => new() { Id = Id, - CustomerName = CustomerName, - PaymentType = PaymentType, SetId = SetId, SetName = Set.Name, - DateCreate = DateCreate, - Sum = Sum, - UserId = UserId, - UserName = User.Name + Count = Count, + OrderInfoId = OrderInfoId }; - } + + } } diff --git a/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/OrderInfo.cs b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/OrderInfo.cs new file mode 100644 index 0000000..e68921d --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyDatabaseImplement/Models/OrderInfo.cs @@ -0,0 +1,65 @@ +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyDataModels.Enums; +using FurnitureAssemblyDataModels.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FurnitureAssemblyDatabaseImplement.Models +{ + public class OrderInfo : IOrderInfoModel + { + public int Id { get; set; } + [Required] + public string CustomerName { get; set; } = string.Empty; + [Required] + public PaymentType PaymentType { get; set; } = PaymentType.Неизвестен; + [Required] + public DateTime DateCreate { get; set; } + [Required] + public double Sum { get; set; } + [Required] + public int UserId { get; set; } + public virtual User User { get; set; } + public static OrderInfo? Create(OrderInfoBindingModel? model) + { + if (model == null) + { + return null; + } + return new OrderInfo() + { + Id = model.Id, + CustomerName = model.CustomerName, + PaymentType = model.PaymentType, + Sum = model.Sum, + DateCreate = model.DateCreate, + UserId = model.UserId + }; + } + public void Update(OrderInfoBindingModel? model) + { + if (model == null) + { + return; + } + CustomerName = model.CustomerName; + PaymentType = model.PaymentType; + UserId = model.UserId; + } + public OrderInfoViewModel GetViewModel => new() + { + Id = Id, + CustomerName = CustomerName, + PaymentType = PaymentType, + DateCreate = DateCreate, + Sum = Sum, + UserId = UserId, + UserName = User.Name + }; + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyRestApi/Controllers/MainController.cs b/FurnitureAssembly/FurnitureAssemblyRestApi/Controllers/MainController.cs new file mode 100644 index 0000000..767fb56 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyRestApi/Controllers/MainController.cs @@ -0,0 +1,650 @@ +using DocumentFormat.OpenXml.Spreadsheet; +using FurnitureAssemblyContracts.BindingModels; +using FurnitureAssemblyContracts.BusinessLogicContracts; +using FurnitureAssemblyContracts.SearchModels; +using FurnitureAssemblyContracts.ViewModels; +using FurnitureAssemblyDatabaseImplement.Models; +using Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; + +namespace FurnitureAssemblyRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class MainController : Controller + { + private readonly ILogger _logger; + private readonly IFurnitureLogic _furniture; + private readonly IFurnitureModuleLogic _furnitureModule; + private readonly IMaterialLogic _material; + private readonly IOrderInfoLogic _orderInfo; + private readonly IOrderLogic _order; + private readonly IRoleLogic _role; + private readonly IScopeLogic _scope; + private readonly ISetLogic _set; + private readonly IUserLogic _user; + public MainController(ILogger logger, + IFurnitureLogic furniture, + IFurnitureModuleLogic furnitureModule, + IMaterialLogic material, + IOrderInfoLogic orderInfo, + IOrderLogic order, + IRoleLogic role, + IScopeLogic scope, + ISetLogic set, + IUserLogic user) + { + _logger = logger; + _furniture = furniture; + _furnitureModule = furnitureModule; + _material = material; + _orderInfo = orderInfo; + _order = order; + _role = role; + _scope = scope; + _set = set; + _user = user; + } + [HttpGet] + public List? GetFurnitureList() + { + try + { + return _furniture.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка мебели"); + throw; + } + } + [HttpGet] + public FurnitureViewModel? GetFurniture(int Id) + { + try + { + return _furniture.ReadElement(new FurnitureSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения мебели по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddFurniture(FurnitureBindingModel model) + { + try + { + _furniture.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания мебели"); + throw; + } + } + [HttpPut] + public void UpdateFurniture(FurnitureBindingModel model) + { + try + { + _furniture.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления мебели"); + throw; + } + } + [HttpDelete] + public void DeleteFurniture(FurnitureBindingModel model) + { + try + { + _furniture.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления мебели"); + throw; + } + } + + + [HttpGet] + public List? GetFurnitureModuleList() + { + try + { + return _furnitureModule.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка мебельных модулей"); + throw; + } + } + [HttpGet] + public FurnitureModuleViewModel? GetFurnitureModule(int Id) + { + try + { + return _furnitureModule.ReadElement(new FurnitureModuleSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения мебельного модуля по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddFurnitureModule(FurnitureModuleBindingModel model) + { + try + { + _furnitureModule.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания мебельного модуля"); + throw; + } + } + [HttpPut] + public void UpdateFurnitureModule(FurnitureModuleBindingModel model) + { + try + { + _furnitureModule.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления мебельного модуля"); + throw; + } + } + [HttpDelete] + public void DeleteFurnitureModule(FurnitureModuleBindingModel model) + { + try + { + _furnitureModule.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления мебельного модуля"); + throw; + } + } + + + [HttpGet] + public List? GetMaterialList() + { + try + { + return _material.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public MaterialViewModel? GetMaterial(int Id) + { + try + { + return _material.ReadElement(new MaterialSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddMaterial(MaterialBindingModel model) + { + try + { + _material.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateMaterial(MaterialBindingModel model) + { + try + { + _material.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteMaterial(MaterialBindingModel model) + { + try + { + _material.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + + + [HttpGet] + public List? GetOrderList() + { + try + { + return _order.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public OrderViewModel? GetOrder(int Id) + { + try + { + return _order.ReadElement(new OrderSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddOrder(OrderBindingModel model) + { + try + { + _order.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateOrder(OrderBindingModel model) + { + try + { + _order.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteOrder(OrderBindingModel model) + { + try + { + _order.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + + + [HttpGet] + public List? GetOrderInfoList() + { + try + { + return _orderInfo.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public OrderInfoViewModel? GetOrderInfo(int Id) + { + try + { + return _orderInfo.ReadElement(new OrderInfoSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddOrderInfo(OrderInfoBindingModel model) + { + try + { + _orderInfo.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateOrderInfo(OrderInfoBindingModel model) + { + try + { + _orderInfo.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteOrderInfo(OrderInfoBindingModel model) + { + try + { + _orderInfo.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + + + [HttpGet] + public List? GetRoleList() + { + try + { + return _role.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public RoleViewModel? GetRole(int Id) + { + try + { + return _role.ReadElement(new RoleSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddRole(RoleBindingModel model) + { + try + { + _role.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateRole(RoleBindingModel model) + { + try + { + _role.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteRole(RoleBindingModel model) + { + try + { + _role.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + + + [HttpGet] + public List? GetScopeList() + { + try + { + return _scope.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public ScopeViewModel? GetScope(int Id) + { + try + { + return _scope.ReadElement(new ScopeSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddScope(ScopeBindingModel model) + { + try + { + _scope.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateScope(ScopeBindingModel model) + { + try + { + _scope.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteScope(ScopeBindingModel model) + { + try + { + _scope.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + + + [HttpGet] + public List? GetSetList() + { + try + { + return _set.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public SetViewModel? GetSet(int Id) + { + try + { + return _set.ReadElement(new SetSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddSet(SetBindingModel model) + { + try + { + _set.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateSet(SetBindingModel model) + { + try + { + _set.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteSet(SetBindingModel model) + { + try + { + _set.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + + + [HttpGet] + public List? GetUserList() + { + try + { + return _user.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка материалов"); + throw; + } + } + [HttpGet] + public UserViewModel? GetUser(int Id) + { + try + { + return _user.ReadElement(new UserSearchModel { Id = Id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); + throw; + } + } + [HttpPost] + public void AddUser(UserBindingModel model) + { + try + { + _user.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания материала"); + throw; + } + } + [HttpPut] + public void UpdateUser(UserBindingModel model) + { + try + { + _user.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления материала"); + throw; + } + } + [HttpDelete] + public void DeleteUser(UserBindingModel model) + { + try + { + _user.Delete(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка удаления материала"); + throw; + } + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyRestApi/FurnitureAssemblyRestApi.csproj b/FurnitureAssembly/FurnitureAssemblyRestApi/FurnitureAssemblyRestApi.csproj new file mode 100644 index 0000000..81d800e --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyRestApi/FurnitureAssemblyRestApi.csproj @@ -0,0 +1,20 @@ + + + + net6.0 + enable + enable + + + + + + + + + + + + + + diff --git a/FurnitureAssembly/FurnitureAssemblyRestApi/Program.cs b/FurnitureAssembly/FurnitureAssemblyRestApi/Program.cs new file mode 100644 index 0000000..5dbcd35 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyRestApi/Program.cs @@ -0,0 +1,56 @@ +using FurnitureAssemblyBusinessLogic.BusinessLogics; +using FurnitureAssemblyContracts.BusinessLogicContracts; +using FurnitureAssemblyContracts.StorageContracts; +using FurnitureAssemblyDatabaseImplement.Implements; +using Microsoft.OpenApi.Models; + +var builder = WebApplication.CreateBuilder(args); + +builder.Logging.SetMinimumLevel(LogLevel.Trace); +builder.Logging.AddLog4Net("log4net.config"); + +// Add services to the container. +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); + +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(c => +{ + c.SwaggerDoc("v1", new OpenApiInfo { Title = "BlacksmithWorkshopRestApi", Version = "v1" }); +}); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "AbstractShopRestApi v1")); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/FurnitureAssembly/FurnitureAssemblyRestApi/Properties/launchSettings.json b/FurnitureAssembly/FurnitureAssemblyRestApi/Properties/launchSettings.json new file mode 100644 index 0000000..7339299 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyRestApi/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:38599", + "sslPort": 44309 + } + }, + "profiles": { + "FurnitureAssemblyRestApi": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7181;http://localhost:5201", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.Development.json b/FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.json b/FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/FurnitureAssembly/FurnitureAssemblyRestApi/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +}