From f61ff192afe0c5ae819dae8ec41134248cfad8ef Mon Sep 17 00:00:00 2001 From: georgiy semikolenov Date: Thu, 23 Mar 2023 14:41:26 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D1=81=D0=B4=D0=B0=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PlumbingRepair/PlumbingRepair.sln | 8 +- .../DataFileSingletone.cs | 56 ++++++++++ .../Implements/ComponentStorage.cs | 89 ++++++++++++++++ .../Implements/OrderStorage.cs | 89 ++++++++++++++++ .../Implements/WorkStorage.cs | 89 ++++++++++++++++ .../Models/Component.cs | 59 +++++++++++ .../Models/Order.cs | 100 ++++++++++++++++++ .../PlumbingRepairFileImplemet/Models/Work.cs | 75 +++++++++++++ .../PlumbingRepairFileImplement.csproj | 14 +++ .../PlumbingRepairView/FormWorks.Designer.cs | 1 + .../PlumbingRepairView.csproj | 1 + PlumbingRepair/PlumbingRepairView/Program.cs | 2 +- 12 files changed, 581 insertions(+), 2 deletions(-) create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/DataFileSingletone.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/Implements/ComponentStorage.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/Implements/OrderStorage.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/Implements/WorkStorage.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/Models/Component.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/Models/Order.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/Models/Work.cs create mode 100644 PlumbingRepair/PlumbingRepairFileImplemet/PlumbingRepairFileImplement.csproj diff --git a/PlumbingRepair/PlumbingRepair.sln b/PlumbingRepair/PlumbingRepair.sln index 0b09086..3c80525 100644 --- a/PlumbingRepair/PlumbingRepair.sln +++ b/PlumbingRepair/PlumbingRepair.sln @@ -11,7 +11,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairBusinessLogic EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairListImplement", "PlumbingRepairListImplement\PlumbingRepairListImplement.csproj", "{111DF058-BDAC-479D-AB5F-1AC10A75FEA1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairView", "PlumbingRepairView\PlumbingRepairView.csproj", "{A67F7409-283B-47B5-A6ED-E9550F9C7185}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairView", "PlumbingRepairView\PlumbingRepairView.csproj", "{A67F7409-283B-47B5-A6ED-E9550F9C7185}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -39,6 +41,10 @@ Global {A67F7409-283B-47B5-A6ED-E9550F9C7185}.Debug|Any CPU.Build.0 = Debug|Any CPU {A67F7409-283B-47B5-A6ED-E9550F9C7185}.Release|Any CPU.ActiveCfg = Release|Any CPU {A67F7409-283B-47B5-A6ED-E9550F9C7185}.Release|Any CPU.Build.0 = Release|Any CPU + {F114881C-8CBB-4747-BF61-993E764752A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F114881C-8CBB-4747-BF61-993E764752A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/DataFileSingletone.cs b/PlumbingRepair/PlumbingRepairFileImplemet/DataFileSingletone.cs new file mode 100644 index 0000000..2f5e914 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/DataFileSingletone.cs @@ -0,0 +1,56 @@ +using PlumbingRepairFileImplement.Models; +using System.Xml.Linq; + +namespace PlumbingRepairFileImplement +{ + public class DataFileSingleton + { + private static DataFileSingleton? instance; + + private readonly string ComponentFileName = "Component.xml"; + private readonly string OrderFileName = "Order.xml"; + private readonly string WorkFileName = "Work.xml"; + + public List Components { get; private set; } + public List Orders { get; private set; } + public List Works { get; private set; } + + public static DataFileSingleton GetInstance() + { + if (instance == null) + { + instance = new DataFileSingleton(); + } + return instance; + } + + public void SaveComponents() => SaveData(Components, ComponentFileName, "Components", x => x.GetXElement); + public void SaveWorks() => SaveData(Works, WorkFileName, "Works", x => x.GetXElement); + public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement); + + private DataFileSingleton() + { + Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!; + Works = LoadData(WorkFileName, "Work", x => Work.Create(x)!)!; + Orders = LoadData(OrderFileName, "Order", x => Order.Create(x)!)!; + } + + private static List? LoadData(string filename, string xmlNodeName, Func selectFunction) + { + if (File.Exists(filename)) + { + return XDocument.Load(filename)?.Root?.Elements(xmlNodeName)?.Select(selectFunction)?.ToList(); + } + + return new List(); + } + + private static void SaveData(List data, string filename, string xmlNodeName, Func selectFunction) + { + if (data != null) + { + new XDocument(new XElement(xmlNodeName, data.Select(selectFunction).ToArray())).Save(filename); + } + } + } +} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/Implements/ComponentStorage.cs b/PlumbingRepair/PlumbingRepairFileImplemet/Implements/ComponentStorage.cs new file mode 100644 index 0000000..53f467f --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/Implements/ComponentStorage.cs @@ -0,0 +1,89 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.SearchModels; +using PlumbingRepairContracts.StoragesContracts; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairFileImplement.Models; + +namespace PlumbingRepairFileImplement.Implements +{ + public class ComponentStorage : IComponentStorage + { + private readonly DataFileSingleton source; + + public ComponentStorage() + { + source = DataFileSingleton.GetInstance(); + } + + public List GetFullList() + { + return source.Components.Select(x => x.GetViewModel).ToList(); + } + + public List GetFilteredList(ComponentSearchModel model) + { + if (string.IsNullOrEmpty(model.ComponentName)) + { + return new(); + } + + return source.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; + } + + return source.Components.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ComponentName) && x.ComponentName == model.ComponentName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + } + + public ComponentViewModel? Insert(ComponentBindingModel model) + { + model.Id = source.Components.Count > 0 ? source.Components.Max(x => x.Id) + 1 : 1; + var newComponent = Component.Create(model); + + if (newComponent == null) + { + return null; + } + + source.Components.Add(newComponent); + source.SaveComponents(); + + return newComponent.GetViewModel; + } + + public ComponentViewModel? Update(ComponentBindingModel model) + { + var component = source.Components.FirstOrDefault(x => x.Id == model.Id); + + if (component == null) + { + return null; + } + + component.Update(model); + source.SaveComponents(); + + return component.GetViewModel; + } + + public ComponentViewModel? Delete(ComponentBindingModel model) + { + var element = source.Components.FirstOrDefault(x => x.Id == model.Id); + + if (element != null) + { + source.Components.Remove(element); + source.SaveComponents(); + + return element.GetViewModel; + } + + return null; + } + } +} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/Implements/OrderStorage.cs b/PlumbingRepair/PlumbingRepairFileImplemet/Implements/OrderStorage.cs new file mode 100644 index 0000000..a8ffae6 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/Implements/OrderStorage.cs @@ -0,0 +1,89 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.SearchModels; +using PlumbingRepairContracts.StoragesContracts; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairFileImplement.Models; + +namespace PlumbingRepairFileImplement.Implements +{ + public class OrderStorage : IOrderStorage + { + private readonly DataFileSingleton source; + + public OrderStorage() + { + source = DataFileSingleton.GetInstance(); + } + + public List GetFullList() + { + return source.Orders.Select(x => x.GetViewModel).ToList(); + } + + public List GetFilteredList(OrderSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + + return source.Orders.Where(x => x.Id == model.Id).Select(x => x.GetViewModel).ToList(); + } + + public OrderViewModel? GetElement(OrderSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + + return source.Orders.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + } + + public OrderViewModel? Insert(OrderBindingModel model) + { + model.Id = source.Orders.Count > 0 ? source.Orders.Max(x => x.Id) + 1 : 1; + var newOrder = Order.Create(model); + + if (newOrder == null) + { + return null; + } + + source.Orders.Add(newOrder); + source.SaveOrders(); + + return newOrder.GetViewModel; + } + + public OrderViewModel? Update(OrderBindingModel model) + { + var order = source.Orders.FirstOrDefault(x => x.Id == model.Id); + + if (order == null) + { + return null; + } + + order.Update(model); + source.SaveOrders(); + + return order.GetViewModel; + } + + public OrderViewModel? Delete(OrderBindingModel model) + { + var element = source.Orders.FirstOrDefault(x => x.Id == model.Id); + + if (element != null) + { + source.Orders.Remove(element); + source.SaveOrders(); + + return element.GetViewModel; + } + + return null; + } + } +} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/Implements/WorkStorage.cs b/PlumbingRepair/PlumbingRepairFileImplemet/Implements/WorkStorage.cs new file mode 100644 index 0000000..3d14b5b --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/Implements/WorkStorage.cs @@ -0,0 +1,89 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.SearchModels; +using PlumbingRepairContracts.StoragesContracts; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairFileImplement.Models; + +namespace PlumbingRepairFileImplement.Implements +{ + public class WorkStorage : IWorkStorage + { + private readonly DataFileSingleton source; + + public WorkStorage() + { + source = DataFileSingleton.GetInstance(); + } + + public List GetFullList() + { + return source.Works.Select(x => x.GetViewModel).ToList(); + } + + public List GetFilteredList(WorkSearchModel model) + { + if (string.IsNullOrEmpty(model.WorkName)) + { + return new(); + } + + return source.Works.Where(x => x.WorkName.Contains(model.WorkName)).Select(x => x.GetViewModel).ToList(); + } + + public WorkViewModel? GetElement(WorkSearchModel model) + { + if (string.IsNullOrEmpty(model.WorkName) && !model.Id.HasValue) + { + return null; + } + + return source.Works.FirstOrDefault(x => (!string.IsNullOrEmpty(model.WorkName) && x.WorkName == model.WorkName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + } + + public WorkViewModel? Insert(WorkBindingModel model) + { + model.Id = source.Works.Count > 0 ? source.Works.Max(x => x.Id) + 1 : 1; + var newWork = Work.Create(model); + + if (newWork == null) + { + return null; + } + + source.Works.Add(newWork); + source.SaveWorks(); + + return newWork.GetViewModel; + } + + public WorkViewModel? Update(WorkBindingModel model) + { + var work = source.Works.FirstOrDefault(x => x.Id == model.Id); + + if (work == null) + { + return null; + } + + work.Update(model); + source.SaveWorks(); + + return work.GetViewModel; + } + + public WorkViewModel? Delete(WorkBindingModel model) + { + var element = source.Works.FirstOrDefault(x => x.Id == model.Id); + + if (element != null) + { + source.Works.Remove(element); + source.SaveWorks(); + + return element.GetViewModel; + } + + return null; + } + } +} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/Models/Component.cs b/PlumbingRepair/PlumbingRepairFileImplemet/Models/Component.cs new file mode 100644 index 0000000..64ebdcf --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/Models/Component.cs @@ -0,0 +1,59 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Models; +using System.Xml.Linq; + +namespace PlumbingRepairFileImplement.Models +{ + public class Component + { + public int Id { get; private set; } + public string ComponentName { get; private set; } = string.Empty; + public double Cost { get; set; } + 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(XElement element) + { + if (element == null) + { + return null; + } + return new Component() + { + Id = Convert.ToInt32(element.Attribute("Id")!.Value), + ComponentName = element.Element("ComponentName")!.Value, + Cost = Convert.ToDouble(element.Element("Cost")!.Value) + }; + } + 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 + }; + public XElement GetXElement => new("Component", + new XAttribute("Id", Id), + new XElement("ComponentName", ComponentName), + new XElement("Cost", Cost.ToString())); + } +} diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/Models/Order.cs b/PlumbingRepair/PlumbingRepairFileImplemet/Models/Order.cs new file mode 100644 index 0000000..a19a1f9 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/Models/Order.cs @@ -0,0 +1,100 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Enums; +using PlumbingRepairDataModels.Models; +using System.Xml.Linq; + +namespace PlumbingRepairFileImplement.Models +{ + public class Order : IOrderModel + { + public int Id { get; private set; } + public int WorkId { get; private set; } + public string WorkName { get; private set; } = string.Empty; + public int Count { get; private set; } + public double Sum { get; private set; } + public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; + public DateTime DateCreate { get; private set; } = DateTime.Now; + public DateTime? DateImplement { get; private set; } + + public static Order? Create(OrderBindingModel model) + { + if (model == null) + { + return null; + } + return new Order() + { + Id = model.Id, + WorkId = model.WorkId, + WorkName = model.WorkName, + Count = model.Count, + Sum = model.Sum, + Status = model.Status, + DateCreate = model.DateCreate, + DateImplement = model.DateImplement + }; + } + + public static Order? Create(XElement element) + { + if (element == null) + { + return null; + } + + var order = new Order() + { + Id = Convert.ToInt32(element.Attribute("Id")!.Value), + WorkId = Convert.ToInt32(element.Element("WorkId")!.Value), + WorkName = element.Element("WorkName")!.Value, + Count = Convert.ToInt32(element.Element("Count")!.Value), + Sum = Convert.ToDouble(element.Element("Sum")!.Value), + Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value), + DateCreate = DateTime.ParseExact(element.Element("DateCreate")!.Value, "G", null) + }; + + DateTime.TryParse(element.Element("DateImplement")!.Value, out DateTime dateImpl); + order.DateImplement = dateImpl; + + return order; + } + + public void Update(OrderBindingModel model) + { + if (model == null) + { + return; + } + WorkId = model.WorkId; + WorkName = model.WorkName; + Count = model.Count; + Sum = model.Sum; + Status = model.Status; + DateCreate = model.DateCreate; + DateImplement = model.DateImplement; + } + + public OrderViewModel GetViewModel => new() + { + Id = Id, + WorkId = WorkId, + WorkName = WorkName, + Count = Count, + Sum = Sum, + Status = Status, + DateCreate = DateCreate, + DateImplement = DateImplement + }; + + public XElement GetXElement => new("Order", + new XAttribute("Id", Id), + new XElement("WorkName", WorkName), + new XElement("WorkId", WorkId.ToString()), + new XElement("Count", Count.ToString()), + new XElement("Sum", Sum.ToString()), + new XElement("Status", Status.ToString()), + new XElement("DateCreate", DateCreate.ToString()), + new XElement("DateImplement", DateImplement.ToString())); + } +} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/Models/Work.cs b/PlumbingRepair/PlumbingRepairFileImplemet/Models/Work.cs new file mode 100644 index 0000000..3b955f0 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/Models/Work.cs @@ -0,0 +1,75 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Models; +using System.Xml.Linq; + +namespace PlumbingRepairFileImplement.Models +{ + public class Work : IWorkModel + { + public int Id { get; set; } + public string WorkName { get; set; } = String.Empty; + public double Price { get; private set; } + public Dictionary Components { get; private set; } = new(); + public Dictionary? _workComponents=null; + public Dictionary WorkComponents + { + get + { + if (_workComponents == null) + { + var source = DataFileSingleton.GetInstance(); + _workComponents = Components.ToDictionary(x => x.Key, y => ((source.Components.FirstOrDefault(z => z.Id == y.Key) as IComponentModel)!, y.Value)); + } + return _workComponents; + } + } + public static Work? Create(WorkBindingModel model) + { + if (model == null) + { + return null; + } + return new Work() + { + Id = model.Id, + WorkName = model.WorkName, + Price = model.Price, + Components = model.WorkComponents.ToDictionary(x => x.Key, x => x.Value.Item2) + }; + } + public static Work? Create(XElement element) + { + if (element == null) + { + return null; + } + return new Work() + { + Id = Convert.ToInt32(element.Attribute("Id")!.Value), + WorkName = element.Element("WorkName")!.Value, + Price = Convert.ToDouble(element.Element("Price")!.Value), + Components = element.Element("WorkComponents")!.Elements("WorkComponent").ToDictionary(x => Convert.ToInt32(x.Element("Key")?.Value), x => Convert.ToInt32(x.Element("Value")?.Value)) + }; + } + public void Update(WorkBindingModel model) + { + if(model == null) + { + return; + } + WorkName = model.WorkName; + Price = model.Price; + Components = model.WorkComponents.ToDictionary(x => x.Key, x => x.Value.Item2); + _workComponents = null; + } + public WorkViewModel GetViewModel => new() + { + Id = Id, + WorkName = WorkName, + Price = Price, + WorkComponents = WorkComponents + }; + public XElement GetXElement => new("Work", new XAttribute("Id", Id), new XElement("WorkName", WorkName), new XElement("Price", Price.ToString()), new XElement("WorkComponents", Components.Select(x => new XElement("WorkComponent", new XElement("Key", x.Key), new XElement("Value", x.Value))).ToArray())); + } +} diff --git a/PlumbingRepair/PlumbingRepairFileImplemet/PlumbingRepairFileImplement.csproj b/PlumbingRepair/PlumbingRepairFileImplemet/PlumbingRepairFileImplement.csproj new file mode 100644 index 0000000..d1a8bdc --- /dev/null +++ b/PlumbingRepair/PlumbingRepairFileImplemet/PlumbingRepairFileImplement.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + + + + + + + + diff --git a/PlumbingRepair/PlumbingRepairView/FormWorks.Designer.cs b/PlumbingRepair/PlumbingRepairView/FormWorks.Designer.cs index 5231cdb..41177f4 100644 --- a/PlumbingRepair/PlumbingRepairView/FormWorks.Designer.cs +++ b/PlumbingRepair/PlumbingRepairView/FormWorks.Designer.cs @@ -98,6 +98,7 @@ this.Controls.Add(this.dataGridView); this.Name = "FormWorks"; this.Text = "Работы"; + this.Load += new System.EventHandler(this.FormComponents_Load); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); this.ResumeLayout(false); diff --git a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj index 5e182e3..ebe3048 100644 --- a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj +++ b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj @@ -16,6 +16,7 @@ + diff --git a/PlumbingRepair/PlumbingRepairView/Program.cs b/PlumbingRepair/PlumbingRepairView/Program.cs index 14d3f5a..b4f54db 100644 --- a/PlumbingRepair/PlumbingRepairView/Program.cs +++ b/PlumbingRepair/PlumbingRepairView/Program.cs @@ -1,6 +1,6 @@ using PlumbingRepairContracts.BusinesLogicsContracts; using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairListImplement.Implements; +using PlumbingRepairFileImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; -- 2.25.1 From 58dedaf1b16caf06fb2b78c718f00dfdf2bc311e Mon Sep 17 00:00:00 2001 From: georgiy semikolenov Date: Thu, 6 Apr 2023 13:59:30 +0400 Subject: [PATCH 2/3] done --- PlumbingRepair/PlumbingRepair.sln | 8 +- .../Implements/ComponentStorage.cs | 92 +++++++++ .../Implements/OrderStorage.cs | 93 ++++++++++ .../Implements/WorkStorage.cs | 120 ++++++++++++ .../20230406094555_InitCreate.Designer.cs | 175 ++++++++++++++++++ .../Migrations/20230406094555_InitCreate.cs | 126 +++++++++++++ .../PlumbingRepairDatabaseModelSnapshot.cs | 172 +++++++++++++++++ .../Models/Component.cs | 60 ++++++ .../Models/Order.cs | 77 ++++++++ .../Models/Work.cs | 90 +++++++++ .../Models/WorkComponent.cs | 21 +++ .../PlumbingRepairDatabase.cs | 22 +++ .../PlumbingRepairDatabaseImplements.csproj | 23 +++ .../PlumbingRepairView.csproj | 9 +- PlumbingRepair/PlumbingRepairView/Program.cs | 2 +- 15 files changed, 1085 insertions(+), 5 deletions(-) create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs create mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj diff --git a/PlumbingRepair/PlumbingRepair.sln b/PlumbingRepair/PlumbingRepair.sln index 3c80525..aed8dde 100644 --- a/PlumbingRepair/PlumbingRepair.sln +++ b/PlumbingRepair/PlumbingRepair.sln @@ -13,7 +13,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairListImplement EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairView", "PlumbingRepairView\PlumbingRepairView.csproj", "{A67F7409-283B-47B5-A6ED-E9550F9C7185}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairDatabaseImplements", "PlumbingRepairDatabaseImplements\PlumbingRepairDatabaseImplements.csproj", "{6FE59A4C-DC53-4FD5-B011-597BE45360C2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -45,6 +47,10 @@ Global {F114881C-8CBB-4747-BF61-993E764752A3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.Build.0 = Release|Any CPU + {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs new file mode 100644 index 0000000..942cf3c --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs @@ -0,0 +1,92 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.SearchModels; +using PlumbingRepairContracts.StoragesContracts; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDatabaseImplements.Models; + +namespace PlumbingRepairDatabaseImplements.Implements +{ + public class ComponentStorage : IComponentStorage + { + public List GetFullList() + { + using var context = new PlumbingRepairDatabase(); + + return context.Components.Select(x => x.GetViewModel).ToList(); + } + + public List GetFilteredList(ComponentSearchModel model) + { + if (string.IsNullOrEmpty(model.ComponentName)) + { + return new(); + } + + using var context = new PlumbingRepairDatabase(); + + 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 PlumbingRepairDatabase(); + + 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 PlumbingRepairDatabase(); + + context.Components.Add(newComponent); + context.SaveChanges(); + + return newComponent.GetViewModel; + } + + public ComponentViewModel? Update(ComponentBindingModel model) + { + using var context = new PlumbingRepairDatabase(); + + 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 PlumbingRepairDatabase(); + + 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/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs new file mode 100644 index 0000000..303a870 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs @@ -0,0 +1,93 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.SearchModels; +using PlumbingRepairContracts.StoragesContracts; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDatabaseImplements.Models; + +namespace PlumbingRepairDatabaseImplements.Implements +{ + public class OrderStorage : IOrderStorage + { + public List GetFullList() + { + using var context = new PlumbingRepairDatabase(); + + return context.Orders.Select(x => x.GetViewModel).ToList(); + } + + public List GetFilteredList(OrderSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + + using var context = new PlumbingRepairDatabase(); + + return context.Orders.Where(x => x.Id == model.Id).Select(x => x.GetViewModel).ToList(); + } + + public OrderViewModel? GetElement(OrderSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + + using var context = new PlumbingRepairDatabase(); + + return context.Orders.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + } + + public OrderViewModel? Insert(OrderBindingModel model) + { + var newOrder = Order.Create(model); + + if (newOrder == null) + { + return null; + } + + using var context = new PlumbingRepairDatabase(); + + context.Orders.Add(newOrder); + context.SaveChanges(); + + return newOrder.GetViewModel; + } + + public OrderViewModel? Update(OrderBindingModel model) + { + using var context = new PlumbingRepairDatabase(); + + 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 PlumbingRepairDatabase(); + + var element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); + + if (element != null) + { + context.Orders.Remove(element); + context.SaveChanges(); + + return element.GetViewModel; + } + + return null; + } + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs new file mode 100644 index 0000000..f48fe99 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs @@ -0,0 +1,120 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.SearchModels; +using PlumbingRepairContracts.StoragesContracts; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDatabaseImplements.Models; +using Microsoft.EntityFrameworkCore; + +namespace PlumbingRepairDatabaseImplements.Implements +{ + public class WorkStorage : IWorkStorage + { + public List GetFullList() + { + using var context = new PlumbingRepairDatabase(); + + return context.Works + .Include(x => x.Components) + .ThenInclude(x => x.Component) + .ToList() + .Select(x => x.GetViewModel) + .ToList(); + } + + public List GetFilteredList(WorkSearchModel model) + { + if (string.IsNullOrEmpty(model.WorkName)) + { + return new(); + } + + using var context = new PlumbingRepairDatabase(); + + return context.Works + .Include(x => x.Components) + .ThenInclude(x => x.Component) + .Where(x => x.WorkName.Contains(model.WorkName)) + .ToList() + .Select(x => x.GetViewModel) + .ToList(); + } + + public WorkViewModel? GetElement(WorkSearchModel model) + { + if (string.IsNullOrEmpty(model.WorkName) && !model.Id.HasValue) + { + return null; + } + + using var context = new PlumbingRepairDatabase(); + + return context.Works + .Include(x => x.Components) + .ThenInclude(x => x.Component) + .FirstOrDefault(x => (!string.IsNullOrEmpty(model.WorkName) && x.WorkName == model.WorkName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + } + + public WorkViewModel? Insert(WorkBindingModel model) + { + using var context = new PlumbingRepairDatabase(); + + var newWork = Work.Create(context, model); + + if (newWork == null) + { + return null; + } + + context.Works.Add(newWork); + context.SaveChanges(); + + return newWork.GetViewModel; + } + + public WorkViewModel? Update(WorkBindingModel model) + { + using var context = new PlumbingRepairDatabase(); + + using var transaction = context.Database.BeginTransaction(); + + try + { + var package = context.Works.FirstOrDefault(rec => rec.Id == model.Id); + + if (package == null) + { + return null; + } + + package.Update(model); + context.SaveChanges(); + package.UpdateComponents(context, model); + transaction.Commit(); + + return package.GetViewModel; + } + catch + { + transaction.Rollback(); + + throw; + } + } + + public WorkViewModel? Delete(WorkBindingModel model) + { + using var context = new PlumbingRepairDatabase(); + + var element = context.Works.Include(x => x.Components).FirstOrDefault(rec => rec.Id == model.Id); + + if (element != null) + { + context.Works.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + + return null; + } + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs new file mode 100644 index 0000000..7e99443 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs @@ -0,0 +1,175 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PlumbingRepairDatabaseImplements; + +#nullable disable + +namespace PlumbingRepairDatabaseImplements.Migrations +{ + [DbContext(typeof(PlumbingRepairDatabase))] + [Migration("20230406094555_InitCreate")] + partial class InitCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0-preview.2.23128.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.Property("WorkId") + .HasColumnType("int"); + + b.Property("WorkName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("WorkId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("WorkName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Works"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("WorkId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("WorkId"); + + b.ToTable("WorkComponents"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => + { + b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") + .WithMany("Orders") + .HasForeignKey("WorkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Work"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => + { + b.HasOne("PlumbingRepairDatabaseImplements.Models.Component", "Component") + .WithMany("WorkComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") + .WithMany("Components") + .HasForeignKey("WorkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Work"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => + { + b.Navigation("WorkComponents"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs new file mode 100644 index 0000000..4aa37ec --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs @@ -0,0 +1,126 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace PlumbingRepairDatabaseImplements.Migrations +{ + /// + public partial class InitCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Components", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ComponentName = table.Column(type: "nvarchar(max)", nullable: false), + Cost = table.Column(type: "float", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Components", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Works", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + WorkName = table.Column(type: "nvarchar(max)", nullable: false), + Price = table.Column(type: "float", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Works", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Orders", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + WorkId = table.Column(type: "int", nullable: false), + WorkName = table.Column(type: "nvarchar(max)", nullable: false), + Count = table.Column(type: "int", nullable: false), + Sum = table.Column(type: "float", nullable: false), + Status = table.Column(type: "int", nullable: false), + DateCreate = table.Column(type: "datetime2", nullable: false), + DateImplement = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Orders", x => x.Id); + table.ForeignKey( + name: "FK_Orders_Works_WorkId", + column: x => x.WorkId, + principalTable: "Works", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "WorkComponents", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + WorkId = table.Column(type: "int", nullable: false), + ComponentId = table.Column(type: "int", nullable: false), + Count = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_WorkComponents", x => x.Id); + table.ForeignKey( + name: "FK_WorkComponents_Components_ComponentId", + column: x => x.ComponentId, + principalTable: "Components", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_WorkComponents_Works_WorkId", + column: x => x.WorkId, + principalTable: "Works", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Orders_WorkId", + table: "Orders", + column: "WorkId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkComponents_ComponentId", + table: "WorkComponents", + column: "ComponentId"); + + migrationBuilder.CreateIndex( + name: "IX_WorkComponents_WorkId", + table: "WorkComponents", + column: "WorkId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Orders"); + + migrationBuilder.DropTable( + name: "WorkComponents"); + + migrationBuilder.DropTable( + name: "Components"); + + migrationBuilder.DropTable( + name: "Works"); + } + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs new file mode 100644 index 0000000..3179448 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs @@ -0,0 +1,172 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using PlumbingRepairDatabaseImplements; + +#nullable disable + +namespace PlumbingRepairDatabaseImplements.Migrations +{ + [DbContext(typeof(PlumbingRepairDatabase))] + partial class PlumbingRepairDatabaseModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0-preview.2.23128.3") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Cost") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Sum") + .HasColumnType("float"); + + b.Property("WorkId") + .HasColumnType("int"); + + b.Property("WorkName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("WorkId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("WorkName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Works"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("WorkId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("WorkId"); + + b.ToTable("WorkComponents"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => + { + b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") + .WithMany("Orders") + .HasForeignKey("WorkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Work"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => + { + b.HasOne("PlumbingRepairDatabaseImplements.Models.Component", "Component") + .WithMany("WorkComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") + .WithMany("Components") + .HasForeignKey("WorkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Work"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => + { + b.Navigation("WorkComponents"); + }); + + modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs new file mode 100644 index 0000000..36aa382 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs @@ -0,0 +1,60 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PlumbingRepairDatabaseImplements.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 WorkComponents { 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 + }; + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs new file mode 100644 index 0000000..c91d491 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs @@ -0,0 +1,77 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Enums; +using PlumbingRepairDataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PlumbingRepairDatabaseImplements.Models +{ + public class Order : IOrderModel + { + public int Id { get; private set; } + + public int WorkId { get; private set; } + + public string WorkName { get; private set; } = string.Empty; + + [Required] + public int Count { get; private set; } + + [Required] + public double Sum { get; private set; } + + [Required] + public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; + + [Required] + public DateTime DateCreate { get; private set; } = DateTime.Now; + + public DateTime? DateImplement { get; private set; } + + public virtual Work Work { get; set; } + + public static Order? Create(OrderBindingModel? model) + { + if (model == null) + { + return null; + } + + return new Order() + { + Id = model.Id, + WorkId = model.WorkId, + WorkName = model.WorkName, + Count = model.Count, + Sum = model.Sum, + Status = model.Status, + DateCreate = model.DateCreate, + DateImplement = model.DateImplement + }; + } + + public void Update(OrderBindingModel? model) + { + if (model == null) + { + return; + } + + Status = model.Status; + DateImplement = model.DateImplement; + } + + public OrderViewModel GetViewModel => new() + { + Id = Id, + WorkId = WorkId, + WorkName = WorkName, + Count = Count, + Sum = Sum, + Status = Status, + DateCreate = DateCreate, + DateImplement = DateImplement + }; + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs new file mode 100644 index 0000000..8a8302b --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs @@ -0,0 +1,90 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PlumbingRepairDatabaseImplements.Models +{ + public class Work : IWorkModel + { + public int Id { get; set; } + [Required] + public string WorkName { get; set; } = string.Empty; + [Required] + public double Price { get; set; } + private Dictionary? _workComponents = null; + [NotMapped] + public Dictionary WorkComponents + { + get + { + if (_workComponents == null) + { + _workComponents = Components + .ToDictionary(recWC => recWC.ComponentId, recWC => + (recWC.Component as IComponentModel, recWC.Count)); + } + return _workComponents; + } + } + [ForeignKey("WorkId")] + public virtual List Components { get; set; } = new(); + [ForeignKey("WorkId")] + public virtual List Orders { get; set; } = new(); + public static Work Create(PlumbingRepairDatabase context, WorkBindingModel model) + { + return new Work() + { + Id = model.Id, + WorkName = model.WorkName, + Price = model.Price, + Components = model.WorkComponents.Select(x => new WorkComponent + { + Component = context.Components.First(y => y.Id == x.Key), + Count = x.Value.Item2 + }).ToList() + }; + } + public void Update(WorkBindingModel model) + { + WorkName = model.WorkName; + Price = model.Price; + } + public WorkViewModel GetViewModel => new() + { + Id = Id, + WorkName = WorkName, + Price = Price, + WorkComponents = WorkComponents + }; + public void UpdateComponents(PlumbingRepairDatabase context, WorkBindingModel model) + { + var workComponents = context.WorkComponents.Where(rec => rec.WorkId == model.Id).ToList(); + if (workComponents != null && workComponents.Count > 0) + { // удалили те, которых нет в модели + context.WorkComponents.RemoveRange(workComponents.Where(rec => !model.WorkComponents.ContainsKey(rec.ComponentId))); + context.SaveChanges(); + // обновили количество у существующих записей + foreach (var updateComponent in workComponents) + { + updateComponent.Count = model.WorkComponents[updateComponent.ComponentId].Item2; + model.WorkComponents.Remove(updateComponent.ComponentId); + } + context.SaveChanges(); + } + var work = context.Works.First(x => x.Id == Id); + foreach (var pc in model.WorkComponents) + { + context.WorkComponents.Add(new WorkComponent + { + Work = work, + Component = context.Components.First(x => x.Id == pc.Key), + Count = pc.Value.Item2 + }); + context.SaveChanges(); + } + _workComponents = null; + } + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs new file mode 100644 index 0000000..eb61ebf --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs @@ -0,0 +1,21 @@ +using PlumbingRepairContracts.BindingModels; +using PlumbingRepairContracts.ViewModels; +using PlumbingRepairDataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace PlumbingRepairDatabaseImplements.Models +{ + public class WorkComponent + { + public int Id { get; set; } + [Required] + public int WorkId { get; set; } + [Required] + public int ComponentId { get; set; } + [Required] + public int Count { get; set; } + public virtual Component Component { get; set; } = new(); + public virtual Work Work { get; set; } = new(); + } +} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs new file mode 100644 index 0000000..07329eb --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs @@ -0,0 +1,22 @@ +using PlumbingRepairDatabaseImplements.Models; +using Microsoft.EntityFrameworkCore; + +namespace PlumbingRepairDatabaseImplements +{ + public class PlumbingRepairDatabase : DbContext + { + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (optionsBuilder.IsConfigured == false) + { + optionsBuilder.UseSqlServer(@"Data Source=PREMIX\SQLEXPRESS;Initial Catalog=PlumbingRepairDatabaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + } + base.OnConfiguring(optionsBuilder); + } + public virtual DbSet Components { set; get; } + public virtual DbSet Works { set; get; } + public virtual DbSet WorkComponents { set; get; } + public virtual DbSet Orders { set; get; } + + } +} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj new file mode 100644 index 0000000..b026146 --- /dev/null +++ b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj @@ -0,0 +1,23 @@ + + + + net6.0 + enable + enable + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + diff --git a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj index ebe3048..482614a 100644 --- a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj +++ b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj @@ -9,15 +9,18 @@ - + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + - - \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairView/Program.cs b/PlumbingRepair/PlumbingRepairView/Program.cs index b4f54db..f72f77d 100644 --- a/PlumbingRepair/PlumbingRepairView/Program.cs +++ b/PlumbingRepair/PlumbingRepairView/Program.cs @@ -1,6 +1,6 @@ using PlumbingRepairContracts.BusinesLogicsContracts; using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairFileImplement.Implements; +using PlumbingRepairDatabaseImplements.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; -- 2.25.1 From d0d15c6fe69188792815f8f9d39cc7cc6afabe06 Mon Sep 17 00:00:00 2001 From: georgiy semikolenov Date: Thu, 6 Apr 2023 14:04:55 +0400 Subject: [PATCH 3/3] Revert "done" This reverts commit 58dedaf1b16caf06fb2b78c718f00dfdf2bc311e. --- PlumbingRepair/PlumbingRepair.sln | 8 +- .../Implements/ComponentStorage.cs | 92 --------- .../Implements/OrderStorage.cs | 93 ---------- .../Implements/WorkStorage.cs | 120 ------------ .../20230406094555_InitCreate.Designer.cs | 175 ------------------ .../Migrations/20230406094555_InitCreate.cs | 126 ------------- .../PlumbingRepairDatabaseModelSnapshot.cs | 172 ----------------- .../Models/Component.cs | 60 ------ .../Models/Order.cs | 77 -------- .../Models/Work.cs | 90 --------- .../Models/WorkComponent.cs | 21 --- .../PlumbingRepairDatabase.cs | 22 --- .../PlumbingRepairDatabaseImplements.csproj | 23 --- .../PlumbingRepairView.csproj | 9 +- PlumbingRepair/PlumbingRepairView/Program.cs | 2 +- 15 files changed, 5 insertions(+), 1085 deletions(-) delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs delete mode 100644 PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj diff --git a/PlumbingRepair/PlumbingRepair.sln b/PlumbingRepair/PlumbingRepair.sln index aed8dde..3c80525 100644 --- a/PlumbingRepair/PlumbingRepair.sln +++ b/PlumbingRepair/PlumbingRepair.sln @@ -13,9 +13,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairListImplement EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairView", "PlumbingRepairView\PlumbingRepairView.csproj", "{A67F7409-283B-47B5-A6ED-E9550F9C7185}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairDatabaseImplements", "PlumbingRepairDatabaseImplements\PlumbingRepairDatabaseImplements.csproj", "{6FE59A4C-DC53-4FD5-B011-597BE45360C2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlumbingRepairFileImplement", "PlumbingRepairFileImplemet\PlumbingRepairFileImplement.csproj", "{F114881C-8CBB-4747-BF61-993E764752A3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -47,10 +45,6 @@ Global {F114881C-8CBB-4747-BF61-993E764752A3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F114881C-8CBB-4747-BF61-993E764752A3}.Release|Any CPU.Build.0 = Release|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6FE59A4C-DC53-4FD5-B011-597BE45360C2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs deleted file mode 100644 index 942cf3c..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/ComponentStorage.cs +++ /dev/null @@ -1,92 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.SearchModels; -using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDatabaseImplements.Models; - -namespace PlumbingRepairDatabaseImplements.Implements -{ - public class ComponentStorage : IComponentStorage - { - public List GetFullList() - { - using var context = new PlumbingRepairDatabase(); - - return context.Components.Select(x => x.GetViewModel).ToList(); - } - - public List GetFilteredList(ComponentSearchModel model) - { - if (string.IsNullOrEmpty(model.ComponentName)) - { - return new(); - } - - using var context = new PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - context.Components.Add(newComponent); - context.SaveChanges(); - - return newComponent.GetViewModel; - } - - public ComponentViewModel? Update(ComponentBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - 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/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs deleted file mode 100644 index 303a870..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/OrderStorage.cs +++ /dev/null @@ -1,93 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.SearchModels; -using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDatabaseImplements.Models; - -namespace PlumbingRepairDatabaseImplements.Implements -{ - public class OrderStorage : IOrderStorage - { - public List GetFullList() - { - using var context = new PlumbingRepairDatabase(); - - return context.Orders.Select(x => x.GetViewModel).ToList(); - } - - public List GetFilteredList(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return new(); - } - - using var context = new PlumbingRepairDatabase(); - - return context.Orders.Where(x => x.Id == model.Id).Select(x => x.GetViewModel).ToList(); - } - - public OrderViewModel? GetElement(OrderSearchModel model) - { - if (!model.Id.HasValue) - { - return null; - } - - using var context = new PlumbingRepairDatabase(); - - return context.Orders.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - - public OrderViewModel? Insert(OrderBindingModel model) - { - var newOrder = Order.Create(model); - - if (newOrder == null) - { - return null; - } - - using var context = new PlumbingRepairDatabase(); - - context.Orders.Add(newOrder); - context.SaveChanges(); - - return newOrder.GetViewModel; - } - - public OrderViewModel? Update(OrderBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - 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 PlumbingRepairDatabase(); - - var element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); - - if (element != null) - { - context.Orders.Remove(element); - context.SaveChanges(); - - return element.GetViewModel; - } - - return null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs deleted file mode 100644 index f48fe99..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Implements/WorkStorage.cs +++ /dev/null @@ -1,120 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.SearchModels; -using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDatabaseImplements.Models; -using Microsoft.EntityFrameworkCore; - -namespace PlumbingRepairDatabaseImplements.Implements -{ - public class WorkStorage : IWorkStorage - { - public List GetFullList() - { - using var context = new PlumbingRepairDatabase(); - - return context.Works - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public List GetFilteredList(WorkSearchModel model) - { - if (string.IsNullOrEmpty(model.WorkName)) - { - return new(); - } - - using var context = new PlumbingRepairDatabase(); - - return context.Works - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .Where(x => x.WorkName.Contains(model.WorkName)) - .ToList() - .Select(x => x.GetViewModel) - .ToList(); - } - - public WorkViewModel? GetElement(WorkSearchModel model) - { - if (string.IsNullOrEmpty(model.WorkName) && !model.Id.HasValue) - { - return null; - } - - using var context = new PlumbingRepairDatabase(); - - return context.Works - .Include(x => x.Components) - .ThenInclude(x => x.Component) - .FirstOrDefault(x => (!string.IsNullOrEmpty(model.WorkName) && x.WorkName == model.WorkName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; - } - - public WorkViewModel? Insert(WorkBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - var newWork = Work.Create(context, model); - - if (newWork == null) - { - return null; - } - - context.Works.Add(newWork); - context.SaveChanges(); - - return newWork.GetViewModel; - } - - public WorkViewModel? Update(WorkBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - using var transaction = context.Database.BeginTransaction(); - - try - { - var package = context.Works.FirstOrDefault(rec => rec.Id == model.Id); - - if (package == null) - { - return null; - } - - package.Update(model); - context.SaveChanges(); - package.UpdateComponents(context, model); - transaction.Commit(); - - return package.GetViewModel; - } - catch - { - transaction.Rollback(); - - throw; - } - } - - public WorkViewModel? Delete(WorkBindingModel model) - { - using var context = new PlumbingRepairDatabase(); - - var element = context.Works.Include(x => x.Components).FirstOrDefault(rec => rec.Id == model.Id); - - if (element != null) - { - context.Works.Remove(element); - context.SaveChanges(); - return element.GetViewModel; - } - - return null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs deleted file mode 100644 index 7e99443..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.Designer.cs +++ /dev/null @@ -1,175 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using PlumbingRepairDatabaseImplements; - -#nullable disable - -namespace PlumbingRepairDatabaseImplements.Migrations -{ - [DbContext(typeof(PlumbingRepairDatabase))] - [Migration("20230406094555_InitCreate")] - partial class InitCreate - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0-preview.2.23128.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("WorkId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Price") - .HasColumnType("float"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Works"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("WorkId"); - - b.ToTable("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Orders") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Component", "Component") - .WithMany("WorkComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Components") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => - { - b.Navigation("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs deleted file mode 100644 index 4aa37ec..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/20230406094555_InitCreate.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace PlumbingRepairDatabaseImplements.Migrations -{ - /// - public partial class InitCreate : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Components", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ComponentName = table.Column(type: "nvarchar(max)", nullable: false), - Cost = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Components", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Works", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - WorkName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Works", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Orders", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - WorkId = table.Column(type: "int", nullable: false), - WorkName = table.Column(type: "nvarchar(max)", nullable: false), - Count = table.Column(type: "int", nullable: false), - Sum = table.Column(type: "float", nullable: false), - Status = table.Column(type: "int", nullable: false), - DateCreate = table.Column(type: "datetime2", nullable: false), - DateImplement = table.Column(type: "datetime2", nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Orders", x => x.Id); - table.ForeignKey( - name: "FK_Orders_Works_WorkId", - column: x => x.WorkId, - principalTable: "Works", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "WorkComponents", - columns: table => new - { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - WorkId = table.Column(type: "int", nullable: false), - ComponentId = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_WorkComponents", x => x.Id); - table.ForeignKey( - name: "FK_WorkComponents_Components_ComponentId", - column: x => x.ComponentId, - principalTable: "Components", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_WorkComponents_Works_WorkId", - column: x => x.WorkId, - principalTable: "Works", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Orders_WorkId", - table: "Orders", - column: "WorkId"); - - migrationBuilder.CreateIndex( - name: "IX_WorkComponents_ComponentId", - table: "WorkComponents", - column: "ComponentId"); - - migrationBuilder.CreateIndex( - name: "IX_WorkComponents_WorkId", - table: "WorkComponents", - column: "WorkId"); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Orders"); - - migrationBuilder.DropTable( - name: "WorkComponents"); - - migrationBuilder.DropTable( - name: "Components"); - - migrationBuilder.DropTable( - name: "Works"); - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs deleted file mode 100644 index 3179448..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Migrations/PlumbingRepairDatabaseModelSnapshot.cs +++ /dev/null @@ -1,172 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using PlumbingRepairDatabaseImplements; - -#nullable disable - -namespace PlumbingRepairDatabaseImplements.Migrations -{ - [DbContext(typeof(PlumbingRepairDatabase))] - partial class PlumbingRepairDatabaseModelSnapshot : ModelSnapshot - { - protected override void BuildModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "8.0.0-preview.2.23128.3") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.Property("Cost") - .HasColumnType("float"); - - b.HasKey("Id"); - - b.ToTable("Components"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("DateCreate") - .HasColumnType("datetime2"); - - b.Property("DateImplement") - .HasColumnType("datetime2"); - - b.Property("Status") - .HasColumnType("int"); - - b.Property("Sum") - .HasColumnType("float"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("WorkId"); - - b.ToTable("Orders"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("Price") - .HasColumnType("float"); - - b.Property("WorkName") - .IsRequired() - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.ToTable("Works"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("int"); - - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); - - b.Property("ComponentId") - .HasColumnType("int"); - - b.Property("Count") - .HasColumnType("int"); - - b.Property("WorkId") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.HasIndex("ComponentId"); - - b.HasIndex("WorkId"); - - b.ToTable("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Order", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Orders") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.WorkComponent", b => - { - b.HasOne("PlumbingRepairDatabaseImplements.Models.Component", "Component") - .WithMany("WorkComponents") - .HasForeignKey("ComponentId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("PlumbingRepairDatabaseImplements.Models.Work", "Work") - .WithMany("Components") - .HasForeignKey("WorkId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Component"); - - b.Navigation("Work"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Component", b => - { - b.Navigation("WorkComponents"); - }); - - modelBuilder.Entity("PlumbingRepairDatabaseImplements.Models.Work", b => - { - b.Navigation("Components"); - - b.Navigation("Orders"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs deleted file mode 100644 index 36aa382..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Component.cs +++ /dev/null @@ -1,60 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.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 WorkComponents { 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 - }; - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs deleted file mode 100644 index c91d491..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Order.cs +++ /dev/null @@ -1,77 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Enums; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.Models -{ - public class Order : IOrderModel - { - public int Id { get; private set; } - - public int WorkId { get; private set; } - - public string WorkName { get; private set; } = string.Empty; - - [Required] - public int Count { get; private set; } - - [Required] - public double Sum { get; private set; } - - [Required] - public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; - - [Required] - public DateTime DateCreate { get; private set; } = DateTime.Now; - - public DateTime? DateImplement { get; private set; } - - public virtual Work Work { get; set; } - - public static Order? Create(OrderBindingModel? model) - { - if (model == null) - { - return null; - } - - return new Order() - { - Id = model.Id, - WorkId = model.WorkId, - WorkName = model.WorkName, - Count = model.Count, - Sum = model.Sum, - Status = model.Status, - DateCreate = model.DateCreate, - DateImplement = model.DateImplement - }; - } - - public void Update(OrderBindingModel? model) - { - if (model == null) - { - return; - } - - Status = model.Status; - DateImplement = model.DateImplement; - } - - public OrderViewModel GetViewModel => new() - { - Id = Id, - WorkId = WorkId, - WorkName = WorkName, - Count = Count, - Sum = Sum, - Status = Status, - DateCreate = DateCreate, - DateImplement = DateImplement - }; - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs deleted file mode 100644 index 8a8302b..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/Work.cs +++ /dev/null @@ -1,90 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.Models -{ - public class Work : IWorkModel - { - public int Id { get; set; } - [Required] - public string WorkName { get; set; } = string.Empty; - [Required] - public double Price { get; set; } - private Dictionary? _workComponents = null; - [NotMapped] - public Dictionary WorkComponents - { - get - { - if (_workComponents == null) - { - _workComponents = Components - .ToDictionary(recWC => recWC.ComponentId, recWC => - (recWC.Component as IComponentModel, recWC.Count)); - } - return _workComponents; - } - } - [ForeignKey("WorkId")] - public virtual List Components { get; set; } = new(); - [ForeignKey("WorkId")] - public virtual List Orders { get; set; } = new(); - public static Work Create(PlumbingRepairDatabase context, WorkBindingModel model) - { - return new Work() - { - Id = model.Id, - WorkName = model.WorkName, - Price = model.Price, - Components = model.WorkComponents.Select(x => new WorkComponent - { - Component = context.Components.First(y => y.Id == x.Key), - Count = x.Value.Item2 - }).ToList() - }; - } - public void Update(WorkBindingModel model) - { - WorkName = model.WorkName; - Price = model.Price; - } - public WorkViewModel GetViewModel => new() - { - Id = Id, - WorkName = WorkName, - Price = Price, - WorkComponents = WorkComponents - }; - public void UpdateComponents(PlumbingRepairDatabase context, WorkBindingModel model) - { - var workComponents = context.WorkComponents.Where(rec => rec.WorkId == model.Id).ToList(); - if (workComponents != null && workComponents.Count > 0) - { // удалили те, которых нет в модели - context.WorkComponents.RemoveRange(workComponents.Where(rec => !model.WorkComponents.ContainsKey(rec.ComponentId))); - context.SaveChanges(); - // обновили количество у существующих записей - foreach (var updateComponent in workComponents) - { - updateComponent.Count = model.WorkComponents[updateComponent.ComponentId].Item2; - model.WorkComponents.Remove(updateComponent.ComponentId); - } - context.SaveChanges(); - } - var work = context.Works.First(x => x.Id == Id); - foreach (var pc in model.WorkComponents) - { - context.WorkComponents.Add(new WorkComponent - { - Work = work, - Component = context.Components.First(x => x.Id == pc.Key), - Count = pc.Value.Item2 - }); - context.SaveChanges(); - } - _workComponents = null; - } - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs deleted file mode 100644 index eb61ebf..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/Models/WorkComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -using PlumbingRepairContracts.BindingModels; -using PlumbingRepairContracts.ViewModels; -using PlumbingRepairDataModels.Models; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace PlumbingRepairDatabaseImplements.Models -{ - public class WorkComponent - { - public int Id { get; set; } - [Required] - public int WorkId { get; set; } - [Required] - public int ComponentId { get; set; } - [Required] - public int Count { get; set; } - public virtual Component Component { get; set; } = new(); - public virtual Work Work { get; set; } = new(); - } -} diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs deleted file mode 100644 index 07329eb..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabase.cs +++ /dev/null @@ -1,22 +0,0 @@ -using PlumbingRepairDatabaseImplements.Models; -using Microsoft.EntityFrameworkCore; - -namespace PlumbingRepairDatabaseImplements -{ - public class PlumbingRepairDatabase : DbContext - { - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - if (optionsBuilder.IsConfigured == false) - { - optionsBuilder.UseSqlServer(@"Data Source=PREMIX\SQLEXPRESS;Initial Catalog=PlumbingRepairDatabaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); - } - base.OnConfiguring(optionsBuilder); - } - public virtual DbSet Components { set; get; } - public virtual DbSet Works { set; get; } - public virtual DbSet WorkComponents { set; get; } - public virtual DbSet Orders { set; get; } - - } -} \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj b/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj deleted file mode 100644 index b026146..0000000 --- a/PlumbingRepair/PlumbingRepairDatabaseImplements/PlumbingRepairDatabaseImplements.csproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - net6.0 - enable - enable - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - diff --git a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj index 482614a..ebe3048 100644 --- a/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj +++ b/PlumbingRepair/PlumbingRepairView/PlumbingRepairView.csproj @@ -9,18 +9,15 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + - + + \ No newline at end of file diff --git a/PlumbingRepair/PlumbingRepairView/Program.cs b/PlumbingRepair/PlumbingRepairView/Program.cs index f72f77d..b4f54db 100644 --- a/PlumbingRepair/PlumbingRepairView/Program.cs +++ b/PlumbingRepair/PlumbingRepairView/Program.cs @@ -1,6 +1,6 @@ using PlumbingRepairContracts.BusinesLogicsContracts; using PlumbingRepairContracts.StoragesContracts; -using PlumbingRepairDatabaseImplements.Implements; +using PlumbingRepairFileImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; -- 2.25.1