diff --git a/FishFactory/FishFactory.csproj b/FishFactory/FishFactory.csproj index 13ee669..95274fe 100644 --- a/FishFactory/FishFactory.csproj +++ b/FishFactory/FishFactory.csproj @@ -9,12 +9,6 @@ - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - @@ -22,7 +16,6 @@ - diff --git a/FishFactory/FishFactory.sln b/FishFactory/FishFactory.sln index a986a5c..c761982 100644 --- a/FishFactory/FishFactory.sln +++ b/FishFactory/FishFactory.sln @@ -15,8 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FishFactoryListImplement", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FishFactoryFileImplement", "..\FishFactoryFileImplement\FishFactoryFileImplement.csproj", "{4EB943AB-67A8-4386-8874-FA0E3E98159C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FishFactoryDatabaseImplement", "..\FishFactoryDatabaseImplement\FishFactoryDatabaseImplement.csproj", "{5744376D-B7D8-4FFD-B6D9-F53C169B056C}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -73,14 +71,6 @@ Global {4EB943AB-67A8-4386-8874-FA0E3E98159C}.Release|Any CPU.Build.0 = Release|Any CPU {4EB943AB-67A8-4386-8874-FA0E3E98159C}.Release|x86.ActiveCfg = Release|Any CPU {4EB943AB-67A8-4386-8874-FA0E3E98159C}.Release|x86.Build.0 = Release|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Debug|x86.ActiveCfg = Debug|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Debug|x86.Build.0 = Debug|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Release|Any CPU.Build.0 = Release|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Release|x86.ActiveCfg = Release|Any CPU - {5744376D-B7D8-4FFD-B6D9-F53C169B056C}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/FishFactory/Program.cs b/FishFactory/Program.cs index ba4bc0a..1aa0d38 100644 --- a/FishFactory/Program.cs +++ b/FishFactory/Program.cs @@ -2,7 +2,7 @@ using FishFactory.Forms; using FishFactoryContracts.BusinessLogicsContracts; using FishFactoryBusinessLogic.BusinessLogic; using FishFactoryContracts.StoragesContracts; -using FishFactoryDatabaseImplement.Implements; +using FishFactoryFileImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; diff --git a/FishFactoryContracts/StoragesContracts/IOrderStorage.cs b/FishFactoryContracts/StoragesContracts/IOrderStorage.cs index a81b868..1f385c5 100644 --- a/FishFactoryContracts/StoragesContracts/IOrderStorage.cs +++ b/FishFactoryContracts/StoragesContracts/IOrderStorage.cs @@ -1,6 +1,11 @@ using FishFactoryContracts.BindingModels; using FishFactoryContracts.SearchModels; using FishFactoryContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; namespace FishFactoryContracts.StoragesContracts { diff --git a/FishFactoryDatabaseImplement/FishFactoryDatabase.cs b/FishFactoryDatabaseImplement/FishFactoryDatabase.cs deleted file mode 100644 index 89c09ee..0000000 --- a/FishFactoryDatabaseImplement/FishFactoryDatabase.cs +++ /dev/null @@ -1,21 +0,0 @@ -using FishFactoryDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; - -namespace FishFactoryDatabaseImplement -{ - public class FishFactoryDatabase : DbContext - { - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - if (optionsBuilder.IsConfigured == false) - { - optionsBuilder.UseSqlServer(@"Data Source=CHESHIR\SQLEXPRESS;Initial Catalog=FishFactoryDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); - } - base.OnConfiguring(optionsBuilder); - } - public virtual DbSet Components { set; get; } - public virtual DbSet Canneds { set; get; } - public virtual DbSet CannedComponents { set; get; } - public virtual DbSet Orders { set; get; } - } -} diff --git a/FishFactoryDatabaseImplement/FishFactoryDatabaseImplement.csproj b/FishFactoryDatabaseImplement/FishFactoryDatabaseImplement.csproj deleted file mode 100644 index 338b17d..0000000 --- a/FishFactoryDatabaseImplement/FishFactoryDatabaseImplement.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net6.0 - enable - enable - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - diff --git a/FishFactoryDatabaseImplement/Implements/CannedStorage.cs b/FishFactoryDatabaseImplement/Implements/CannedStorage.cs deleted file mode 100644 index 526a8a5..0000000 --- a/FishFactoryDatabaseImplement/Implements/CannedStorage.cs +++ /dev/null @@ -1,101 +0,0 @@ -using FishFactoryContracts.BindingModels; -using FishFactoryContracts.SearchModels; -using FishFactoryContracts.StoragesContracts; -using FishFactoryContracts.ViewModels; -using FishFactoryDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; - -namespace FishFactoryDatabaseImplement.Implements -{ - public class CannedStorage : ICannedStorage - { - public List GetFullList() - { - using var context = new FishFactoryDatabase(); - return context.Canneds - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - public List GetFilteredList(CannedSearchModel model) - { - if (string.IsNullOrEmpty(model.CannedName)) - { - return new(); - } - using var context = new FishFactoryDatabase(); - return context.Canneds - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .Where(x => x.CannedName.Contains(model.CannedName)) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - public CannedViewModel? GetElement(CannedSearchModel model) - { - if (string.IsNullOrEmpty(model.CannedName) && !model.Id.HasValue) - { - return null; - } - using var context = new FishFactoryDatabase(); - return context.Canneds - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.CannedName) && x.CannedName == model.CannedName) || - (model.Id.HasValue && x.Id == model.Id)) - ?.GetViewModel; - } - public CannedViewModel? Insert(CannedBindingModel model) - { - using var context = new FishFactoryDatabase(); - var newCanned = Canned.Create(context, model); - if (newCanned == null) - { - return null; - } - context.Canneds.Add(newCanned); - context.SaveChanges(); - return newCanned.GetViewModel; - } - public CannedViewModel? Update(CannedBindingModel model) - { - using var context = new FishFactoryDatabase(); - using var transaction = context.Database.BeginTransaction(); - try - { - var product = context.Canneds.FirstOrDefault(rec => rec.Id == model.Id); - if (product == null) - { - return null; - } - product.Update(model); - context.SaveChanges(); - product.UpdateComponents(context, model); - transaction.Commit(); - return product.GetViewModel; - } - catch - { - transaction.Rollback(); - throw; - } - } - public CannedViewModel? Delete(CannedBindingModel model) - { - using var context = new FishFactoryDatabase(); - var element = context.Canneds - .Include(x => x.Components) - .FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Canneds.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } -} diff --git a/FishFactoryDatabaseImplement/Implements/ComponentStorage.cs b/FishFactoryDatabaseImplement/Implements/ComponentStorage.cs deleted file mode 100644 index 2021947..0000000 --- a/FishFactoryDatabaseImplement/Implements/ComponentStorage.cs +++ /dev/null @@ -1,76 +0,0 @@ -using FishFactoryContracts.BindingModels; -using FishFactoryContracts.SearchModels; -using FishFactoryContracts.StoragesContracts; -using FishFactoryContracts.ViewModels; -using FishFactoryDatabaseImplement.Models; - -namespace FishFactoryDatabaseImplement.Implements -{ - public class ComponentStorage : IComponentStorage - { - public List GetFullList() - { - using var context = new FishFactoryDatabase(); - return context.Components - .Select(x => x.GetViewModel).ToList(); - } - public List GetFilteredList(ComponentSearchModel model) - { - if (string.IsNullOrEmpty(model.ComponentName)) - { - return new(); - } - using var context = new FishFactoryDatabase(); - return context.Components - .Where(x => x.ComponentName.Contains(model.ComponentName)) - .Select(x => x.GetViewModel) - .ToList(); - } - public ComponentViewModel? GetElement(ComponentSearchModel model) - { - if (string.IsNullOrEmpty(model.ComponentName) && !model.Id.HasValue) - { - return null; - } - using var context = new FishFactoryDatabase(); - return context.Components - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.ComponentName) && x.ComponentName == model.ComponentName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - public ComponentViewModel? Insert(ComponentBindingModel model) - { - var newComponent = Component.Create(model); - if (newComponent == null) - { - return null; - } - using var context = new FishFactoryDatabase(); - context.Components.Add(newComponent); - context.SaveChanges(); - return newComponent.GetViewModel; - } - public ComponentViewModel? Update(ComponentBindingModel model) - { - using var context = new FishFactoryDatabase(); - var component = context.Components.FirstOrDefault(x => x.Id == model.Id); - if (component == null) - { - return null; - } - component.Update(model); - context.SaveChanges(); - return component.GetViewModel; - } - public ComponentViewModel? Delete(ComponentBindingModel model) - { - using var context = new FishFactoryDatabase(); - var element = context.Components.FirstOrDefault(rec => rec.Id == model.Id); - if (element != null) - { - context.Components.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - return null; - } - } -} diff --git a/FishFactoryDatabaseImplement/Implements/OrderStorage.cs b/FishFactoryDatabaseImplement/Implements/OrderStorage.cs deleted file mode 100644 index 3c38dca..0000000 --- a/FishFactoryDatabaseImplement/Implements/OrderStorage.cs +++ /dev/null @@ -1,84 +0,0 @@ -using FishFactoryContracts.BindingModels; -using FishFactoryContracts.SearchModels; -using FishFactoryContracts.StoragesContracts; -using FishFactoryContracts.ViewModels; -using FishFactoryDatabaseImplement.Models; -using Microsoft.EntityFrameworkCore; - -namespace FishFactoryDatabaseImplement.Implements -{ - public class OrderStorage : IOrderStorage - { - public List GetFullList() - { - using var context = new FishFactoryDatabase(); - return context.Orders - .Include(x => x.Canned) - .Select(x => x.GetViewModel) - .ToList(); - } - public List GetFilteredList(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return new(); - } - using var context = new FishFactoryDatabase(); - return context.Orders - .Include(x => x.Canned) - .Where(x => x.Id == model.Id) - .Select(x => x.GetViewModel) - .ToList(); - } - public OrderViewModel? GetElement(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return new(); - } - using var context = new FishFactoryDatabase(); - return context.Orders - .Include(x => x.Canned) - .FirstOrDefault(x => x.Id == model.Id) - ?.GetViewModel; - } - public OrderViewModel? Insert(OrderBindingModel model) - { - using var context = new FishFactoryDatabase(); - if (model == null) - return null; - var newOrder = Order.Create(context, model); - if (newOrder == null) - { - return null; - } - context.Orders.Add(newOrder); - context.SaveChanges(); - return newOrder.GetViewModel; - } - public OrderViewModel? Update(OrderBindingModel model) - { - using var context = new FishFactoryDatabase(); - var order = context.Orders.FirstOrDefault(x => x.Id == model.Id); - if (order == null) - { - return null; - } - order.Update(model); - context.SaveChanges(); - return order.GetViewModel; - } - public OrderViewModel? Delete(OrderBindingModel model) - { - using var context = new FishFactoryDatabase(); - var order = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); - if (order != null) - { - context.Orders.Remove(order); - context.SaveChanges(); - return order.GetViewModel; - } - return null; - } - } -} diff --git a/FishFactoryDatabaseImplement/Models/Canned.cs b/FishFactoryDatabaseImplement/Models/Canned.cs deleted file mode 100644 index 9202805..0000000 --- a/FishFactoryDatabaseImplement/Models/Canned.cs +++ /dev/null @@ -1,88 +0,0 @@ -using FishFactoryContracts.BindingModels; -using FishFactoryContracts.ViewModels; -using FishFactoryDataModel.Models; -using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel.DataAnnotations; - -namespace FishFactoryDatabaseImplement.Models -{ - public class Canned - { - public int Id { get; set; } - [Required] - public string CannedName { get; set; } = string.Empty; - [Required] - public double Price { get; set; } - private Dictionary? _cannedComponents = null; - [NotMapped] - public Dictionary CannedComponents - { - get - { - if (_cannedComponents == null) - { - _cannedComponents = Components.ToDictionary(recPC => recPC.ComponentId, recPC => (recPC.Component as IComponentModel, recPC.Count)); - } - return _cannedComponents; - } - } - [ForeignKey("CannedId")] - public virtual List Components { get; set; } = new(); - [ForeignKey("CannedId")] - public virtual List Orders { get; set; } = new(); - public static Canned Create(FishFactoryDatabase context, CannedBindingModel model) - { - return new Canned() - { - Id = model.Id, - CannedName = model.CannedName, - Price = model.Price, - Components = model.CannedComponents.Select(x => new CannedComponent - { - Component = context.Components.First(y => y.Id == x.Key), - Count = x.Value.Item2 - }).ToList() - }; - } - public void Update(CannedBindingModel model) - { - CannedName = model.CannedName; - Price = model.Price; - } - public CannedViewModel GetViewModel => new() - { - Id = Id, - CannedName = CannedName, - Price = Price, - CannedComponents = CannedComponents - }; - public void UpdateComponents(FishFactoryDatabase context, CannedBindingModel model) - { - var cannedComponents = context.CannedComponents.Where(rec => rec.CannedId == model.Id).ToList(); - if (cannedComponents != null && cannedComponents.Count > 0) - { // удалили те, которых нет в модели - context.CannedComponents.RemoveRange(cannedComponents.Where(rec => !model.CannedComponents.ContainsKey(rec.ComponentId))); - context.SaveChanges(); - // обновили количество у существующих записей - foreach (var updateComponent in cannedComponents) - { - updateComponent.Count = model.CannedComponents[updateComponent.ComponentId].Item2; - model.CannedComponents.Remove(updateComponent.ComponentId); - } - context.SaveChanges(); - } - var canned = context.Canneds.First(x => x.Id == Id); - foreach (var pc in model.CannedComponents) - { - context.CannedComponents.Add(new CannedComponent - { - Canned = canned, - Component = context.Components.First(x => x.Id == pc.Key), - Count = pc.Value.Item2 - }); - context.SaveChanges(); - } - _cannedComponents = null; - } - } -} diff --git a/FishFactoryDatabaseImplement/Models/CannedComponent.cs b/FishFactoryDatabaseImplement/Models/CannedComponent.cs deleted file mode 100644 index 785a669..0000000 --- a/FishFactoryDatabaseImplement/Models/CannedComponent.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace FishFactoryDatabaseImplement.Models -{ - public class CannedComponent - { - public int Id { get; set; } - [Required] - public int CannedId { get; set; } - [Required] - public int ComponentId { get; set; } - [Required] - public int Count { get; set; } - public virtual Component Component { get; set; } = new(); - public virtual Canned Canned { get; set; } = new(); - } -} \ No newline at end of file diff --git a/FishFactoryDatabaseImplement/Models/Component.cs b/FishFactoryDatabaseImplement/Models/Component.cs deleted file mode 100644 index d811164..0000000 --- a/FishFactoryDatabaseImplement/Models/Component.cs +++ /dev/null @@ -1,56 +0,0 @@ -using FishFactoryContracts.BindingModels; -using FishFactoryContracts.ViewModels; -using FishFactoryDataModel.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace FishFactoryDatabaseImplement.Models -{ - public class Component : IComponentModel - { - public int Id { get; private set; } - [Required] - public string ComponentName { get; private set; } = string.Empty; - [Required] - public double Cost { get; set; } - [ForeignKey("ComponentId")] - public virtual List CannedComponents { get; set; } = new(); - public static Component? Create(ComponentBindingModel model) - { - if (model == null) - { - return null; - } - return new Component() - { - Id = model.Id, - ComponentName = model.ComponentName, - Cost = model.Cost - }; - } - public static Component Create(ComponentViewModel model) - { - return new Component - { - Id = model.Id, - ComponentName = model.ComponentName, - Cost = model.Cost - }; - } - public void Update(ComponentBindingModel model) - { - if (model == null) - { - return; - } - ComponentName = model.ComponentName; - Cost = model.Cost; - } - public ComponentViewModel GetViewModel => new() - { - Id = Id, - ComponentName = ComponentName, - Cost = Cost - }; - } -} \ No newline at end of file diff --git a/FishFactoryDatabaseImplement/Models/Order.cs b/FishFactoryDatabaseImplement/Models/Order.cs deleted file mode 100644 index 4b24b0e..0000000 --- a/FishFactoryDatabaseImplement/Models/Order.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.ComponentModel.DataAnnotations.Schema; -using System.ComponentModel.DataAnnotations; -using FishFactoryDataModel.Enums; -using FishFactoryContracts.BindingModels; -using FishFactoryContracts.ViewModels; - -namespace FishFactoryDatabaseImplement.Models -{ - public class Order - { - public int Id { get; set; } - [Required] - public int CannedId { get; set; } - public virtual Canned Canned { get; set; } = new(); - [Required] - public int Count { get; set; } - [Required] - public double Sum { get; set; } - [Required] - public OrderStatus Status { get; set; } = OrderStatus.Неизвестен; - [Required] - public DateTime DateCreate { get; set; } = DateTime.Now; - public DateTime? DateImplement { get; set; } - public static Order Create (FishFactoryDatabase context, OrderBindingModel model) - { - return new Order() - { - Id = model.Id, - CannedId = model.CannedId, - Canned = context.Canneds.First(x => x.Id == model.CannedId), - Count = model.Count, - Sum = model.Sum, - Status = model.Status, - DateCreate = model.DateCreate, - DateImplement = model.DateImplement, - }; - } - public void Update(OrderBindingModel model) - { - Status = model.Status; - DateImplement = model.DateImplement; - } - public OrderViewModel GetViewModel => new() - { - Id = Id, - CannedId = CannedId, - CannedName = Canned.CannedName, - Count = Count, - Sum = Sum, - Status = Status, - DateCreate = DateCreate, - DateImplement = DateImplement, - }; - } -}