diff --git a/JewelryStoreDataModels/Models/IOrderModel.cs b/JewelryStoreDataModels/Models/IOrderModel.cs index b7b8c70..7de0c62 100644 --- a/JewelryStoreDataModels/Models/IOrderModel.cs +++ b/JewelryStoreDataModels/Models/IOrderModel.cs @@ -11,6 +11,9 @@ namespace JewelryStoreDataModels.Models public interface IOrderModel : IId { int JewelId { get; } + string JewelName { get; } + + int Count { get; } double Sum { get; } OrderStatus Status { get; } diff --git a/JewelryStoreListImplement/Implements/OrderStorage.cs b/JewelryStoreListImplement/Implements/OrderStorage.cs index ade07d9..ae9c7db 100644 --- a/JewelryStoreListImplement/Implements/OrderStorage.cs +++ b/JewelryStoreListImplement/Implements/OrderStorage.cs @@ -2,6 +2,7 @@ using JewelryStoreContracts.SearchModels; using JewelryStoreContracts.StoragesContracts; using JewelryStoreContracts.ViewModels; +using JewelryStoreListImplement.Models; using System; using System.Collections.Generic; using System.Linq; @@ -12,34 +13,98 @@ namespace JewelryStoreListImplement.Implements { public class OrderStorage : IOrderStorage // TODO реализовать интерфейс { + private readonly DataListSingleton _source; + public OrderStorage() + { + _source = DataListSingleton.GetInstance(); + } public OrderViewModel? Delete(OrderBindingModel model) { - throw new NotImplementedException(); + for (int i = 0; i < _source.Orders.Count; ++i) + { + if (_source.Orders[i].Id == model.Id) + { + var element = _source.Orders[i]; + _source.Orders.RemoveAt(i); + return element.GetViewModel; + } + } + return null; } public OrderViewModel? GetElement(OrderSearchModel model) { - throw new NotImplementedException(); + if (!model.Id.HasValue) + { + return null; + } + foreach (var order in _source.Orders) + { + if (model.Id.HasValue && order.Id == model.Id) + { + return order.GetViewModel; + } + } + return null; } public List GetFilteredList(OrderSearchModel model) { - throw new NotImplementedException(); + var result = new List(); + if (model == null) + { + return result; + } + foreach (var order in _source.Orders) + { + if (order.Id == model.Id) + { + result.Add(order.GetViewModel); + } + } + return result; } public List GetFullList() { - throw new NotImplementedException(); + var result = new List(); + foreach (var order in _source.Orders) + { + result.Add(order.GetViewModel); + } + return result; } public OrderViewModel? Insert(OrderBindingModel model) { - throw new NotImplementedException(); + model.Id = 1; + foreach (var order in _source.Orders) + { + if (model.Id <= order.Id) + { + model.Id = order.Id + 1; + } + } + var newOrder = Order.Create(model); + if (newOrder == null) + { + return null; + } + _source.Orders.Add(newOrder); + return newOrder.GetViewModel; } public OrderViewModel? Update(OrderBindingModel model) { - throw new NotImplementedException(); + foreach (var order in _source.Orders) + { + if (order.Id == model.Id) + { + order.Update(model); + return order.GetViewModel; + } + } + return null; } } } diff --git a/JewelryStoreListImplement/Models/Order.cs b/JewelryStoreListImplement/Models/Order.cs index dc1ef36..12349c8 100644 --- a/JewelryStoreListImplement/Models/Order.cs +++ b/JewelryStoreListImplement/Models/Order.cs @@ -1,4 +1,6 @@ -using JewelryStoreDataModels.Enums; +using JewelryStoreContracts.BindingModels; +using JewelryStoreContracts.ViewModels; +using JewelryStoreDataModels.Enums; using JewelryStoreDataModels.Models; using System; using System.Collections.Generic; @@ -10,18 +12,62 @@ namespace JewelryStoreListImplement.Models { public class Order : IOrderModel // TODO Класс для модели сущности «Заказ» разработать самостоятельно { - public int JewelId => throw new NotImplementedException(); + public int JewelId { get; private set; } + public string JewelName { get; private set; } - public int Count => throw new NotImplementedException(); + public int Count { get; private set; } - public double Sum => throw new NotImplementedException(); + public double Sum { get; private set; } - public OrderStatus Status => throw new NotImplementedException(); + public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен; - public DateTime DateCreate => throw new NotImplementedException(); + public DateTime DateCreate { get; private set; } = DateTime.Now; - public DateTime? DateImplement => throw new NotImplementedException(); + public DateTime? DateImplement { get; private set; } - public int Id => throw new NotImplementedException(); + public int Id { get; private set; } + public static Order? Create(OrderBindingModel? model) + { + if (model == null) + { + return null; + } + return new Order() + { + Id = model.Id, + JewelId = model.JewelId, + JewelName = model.JewelName, + Count = model.Count, + Sum = model.Sum, + Status = model.Status, + DateCreate = model.DateCreate, + DateImplement = model.DateImplement + }; + } + public void Update(OrderBindingModel? model) + { + if (model == null) + { + return; + } + JewelId = model.JewelId; + JewelName = model.JewelName; + Count = model.Count; + Sum = model.Sum; + Status = model.Status; + DateCreate = model.DateCreate; + DateImplement = model.DateImplement; + } + public OrderViewModel GetViewModel => new() + { + Id = Id, + JewelId = JewelId, + JewelName = JewelName, + Count = Count, + Sum = Sum, + Status = Status, + DateCreate = DateCreate, + DateImplement = DateImplement + }; } }