From e5dd7184edec5f544c0e204e88a707dcb84b23de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=91=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=81=D0=BA=D0=B0=D1=8F?= Date: Tue, 19 Nov 2024 02:15:38 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=80=D0=BE=D0=B4=D0=B5=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D1=8B,=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D1=8C=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=B4=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=82=D1=8C=20=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D1=8B=20=D0=B8=20=D0=BF=D1=80=D0=B8=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF=D0=B8=D1=82=D1=8C=20=D0=BA=20=D0=B4=D0=BE=D0=BA=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D0=BC...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/OrderStatusStorage.cs | 90 +++++++++++++++++++ .../Implements/OrderStorage.cs | 86 ++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStatusStorage.cs create mode 100644 UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStorage.cs diff --git a/UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStatusStorage.cs b/UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStatusStorage.cs new file mode 100644 index 0000000..74915d9 --- /dev/null +++ b/UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStatusStorage.cs @@ -0,0 +1,90 @@ +using ShopContracts.BindingModels; +using ShopContracts.SearchModels; +using ShopContracts.StorageContracts; +using ShopContracts.ViewModels; +using ShopDataBaseImplements.Models; + +namespace ShopDataBaseImplements.Implements +{ + public class OrderStatusStorage : IOrderStatusStorage + { + public OrderStatusViewModel? Delete(OrderStatusBindingModel model) + { + using var context = new DataBase(); + var element = context.OrderStatuses.FirstOrDefault(x => x.Id == model.Id); + if (element == null) + { + return null; + } + context.OrderStatuses.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + + public OrderStatusViewModel? GetElement(OrderStatusSearchModel model) + { + using var context = new DataBase(); + if(model.Id == null) + { + return null; + } + return context.OrderStatuses.FirstOrDefault(x => x.Id != model.Id)?.GetViewModel; + } + + public List GetFilteredList(OrderStatusSearchModel model) + { + var list = GetFullList(); + if(list == null) + { + return null; + } + if (model.Id.HasValue) + { + list = list.Where(x => x.Id == model.Id).ToList(); + } + return list; + } + + public List GetFullList() + { + using var context = new DataBase(); + return context.OrderStatuses.Select(x => x.GetViewModel).ToList(); + } + + public OrderStatusViewModel? Insert(OrderStatusBindingModel model) + { + using var context = new DataBase(); + var element = OrderStatus.Create(model); + if(element == null) + { + return null; + } + context.OrderStatuses.Add(element); + context.SaveChanges(); + return element.GetViewModel; + } + + public OrderStatusViewModel? Update(OrderStatusBindingModel model) + { + using var context = new DataBase(); + using var transaction = context.Database.BeginTransaction(); + try + { + var element = context.OrderStatuses.FirstOrDefault(x => x.Id == model.Id); + if (element == null) + { + return null; + } + element.Update(model); + context.SaveChanges(); + transaction.Commit(); + return element.GetViewModel; + } + catch (Exception) + { + transaction.Rollback(); + throw; + } + } + } +} diff --git a/UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStorage.cs b/UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStorage.cs new file mode 100644 index 0000000..a68b7d1 --- /dev/null +++ b/UserComponentsOption19/ShopDataBaseImplements/Implements/OrderStorage.cs @@ -0,0 +1,86 @@ +using ShopContracts.BindingModels; +using ShopContracts.SearchModels; +using ShopContracts.StorageContracts; +using ShopContracts.ViewModels; +using ShopDataBaseImplements.Models; + +namespace ShopDataBaseImplements.Implements +{ + public class OrderStorage : IOrderStorage + { + public OrderViewModel? Delete(OrderBindingModel model) + { + using var context = new DataBase(); + var element = context.Orders.FirstOrDefault(x => x.Id == model.Id); + if(element == null) + { + return null; + } + context.Orders.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + + public OrderViewModel? GetElement(OrderSearchModel model) + { + using var context = new DataBase(); + if(!model.Id.HasValue) + { + return null; + } + return context.Orders.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; + } + + public List GetFilteredList(OrderSearchModel model) + { + var list = GetFullList(); + if (model.Id.HasValue) + { + list = list.Where(x => x.Id == model.Id).ToList(); + } + return list; + } + + public List GetFullList() + { + using var context = new DataBase(); + return context.Orders.Select(x => x.GetViewModel).ToList(); + } + + public OrderViewModel? Insert(OrderBindingModel model) + { + using var context = new DataBase(); + var element = Order.Create(model); + if(element == null) + { + return null; + } + context.Orders.Add(element); + context.SaveChanges(); + return element.GetViewModel; + } + + public OrderViewModel? Update(OrderBindingModel model) + { + using var context = new DataBase(); + using var transaction = context.Database.BeginTransaction(); + try + { + var element = context.Orders.FirstOrDefault(x => x.Id == model.Id); + if(element == null) + { + return null; + } + element.Update(model); + context.SaveChanges(); + transaction.Commit(); + return element.GetViewModel; + } + catch (Exception) + { + transaction.Rollback(); + throw; + } + } + } +}