diff --git a/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/OrderStorage.cs b/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/OrderStorage.cs index 35b10c8..fc2a45e 100644 --- a/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/OrderStorage.cs +++ b/HardwareShop/HardwareShopDatabaseImplement/Implements/Storekeeper/OrderStorage.cs @@ -1,12 +1,94 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using HardwareShopContracts.BindingModels; +using HardwareShopContracts.SearchModels; +using HardwareShopContracts.StoragesContracts; +using HardwareShopContracts.ViewModels; +using HardwareShopDatabaseImplement.Models.Storekeeper; +using Microsoft.EntityFrameworkCore; namespace HardwareShopDatabaseImplement.Implements.Storekeeper { - public class OrderStorage + public class OrderStorage : IOrderStorage { + public OrderViewModel? Delete(OrderBindingModel model) + { + using var context = new HardwareShopDatabase(); + var element = context.Orders + .Include(x => x.Good).Include(x => x.User) + .FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + context.Orders.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + return null; + } + + public OrderViewModel? GetElement(OrderSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new HardwareShopDatabase(); + return context.Orders + .Include(x => x.Good).Include(x => x.User) + .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) + ?.GetViewModel; + } + + public List GetFilteredList(OrderSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + using var context = new HardwareShopDatabase(); + return context.Orders + .Include(x => x.Good).Include(x => x.User) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + + public List GetFullList() + { + using var context = new HardwareShopDatabase(); + return context.Orders + .Include(x => x.Good).Include(x => x.User) + .Select(x => x.GetViewModel) + .ToList(); + } + + public OrderViewModel? Insert(OrderBindingModel model) + { + var newOrder = Order.Create(model); + if (newOrder == null) + { + return null; + } + using var context = new HardwareShopDatabase(); + context.Orders.Add(newOrder); + context.SaveChanges(); + return context.Orders + .Include(x => x.Good).Include(x => x.User) + .FirstOrDefault(x => x.Id == newOrder.Id) + ?.GetViewModel; + } + + public OrderViewModel? Update(OrderBindingModel model) + { + using var context = new HardwareShopDatabase(); + var order = context.Orders + .Include(x => x.Good).Include(x => x.User) + .FirstOrDefault(x => x.Id == model.Id); + if (order == null) + { + return null; + } + order.Update(model); + context.SaveChanges(); + return order.GetViewModel; + } } }