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; + } + } + } +}