diff --git a/JewelryStoreListImplement/Implements/JewelStorage.cs b/JewelryStoreListImplement/Implements/JewelStorage.cs index 3d6c331..e09b4ab 100644 --- a/JewelryStoreListImplement/Implements/JewelStorage.cs +++ b/JewelryStoreListImplement/Implements/JewelStorage.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,100 @@ namespace JewelryStoreListImplement.Implements { public class JewelStorage : IJewelStorage // TODO реализовать интерфейс { + private readonly DataListSingleton _source; + public JewelStorage() + { + _source = DataListSingleton.GetInstance(); + } public JewelViewModel? Delete(JewelBindingModel model) { - throw new NotImplementedException(); + for (int i = 0; i < _source.Jewels.Count; ++i) + { + if (_source.Jewels[i].Id == model.Id) + { + var element = _source.Jewels[i]; + _source.Jewels.RemoveAt(i); + return element.GetViewModel; + } + } + return null; } public JewelViewModel? GetElement(JewelSearchModel model) { - throw new NotImplementedException(); + if (string.IsNullOrEmpty(model.JewelName) && !model.Id.HasValue) + { + return null; + } + foreach (var jewel in _source.Jewels) + { + if ((!string.IsNullOrEmpty(model.JewelName) && + jewel.JewelName == model.JewelName) || + (model.Id.HasValue && jewel.Id == model.Id)) + { + return jewel.GetViewModel; + } + } + return null; } public List GetFilteredList(JewelSearchModel model) { - throw new NotImplementedException(); + var result = new List(); + if (string.IsNullOrEmpty(model.JewelName)) + { + return result; + } + foreach (var jewel in _source.Jewels) + { + if (jewel.JewelName.Contains(model.JewelName)) + { + result.Add(jewel.GetViewModel); + } + } + return result; } public List GetFullList() { - throw new NotImplementedException(); + var result = new List(); + foreach (var jewel in _source.Jewels) + { + result.Add(jewel.GetViewModel); + } + return result; } public JewelViewModel? Insert(JewelBindingModel model) { - throw new NotImplementedException(); + model.Id = 1; + foreach (var jewel in _source.Jewels) + { + if (model.Id <= jewel.Id) + { + model.Id = jewel.Id + 1; + } + } + var newJewel = Jewel.Create(model); + if (newJewel == null) + { + return null; + } + _source.Jewels.Add(newJewel); + return newJewel.GetViewModel; } public JewelViewModel? Update(JewelBindingModel model) { - throw new NotImplementedException(); + foreach (var jewel in _source.Jewels) + { + if (jewel.Id == model.Id) + { + jewel.Update(model); + return jewel.GetViewModel; + } + } + return null; } } }