From d2d638fb6982bd6aee6435bf4179fecc324a0a52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=9C=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=D1=84=D0=B5=D0=B5=D0=B2?= Date: Sat, 18 May 2024 20:31:20 +0400 Subject: [PATCH] list --- .../ImplementationExtension.cs | 27 +++++ .../Implements/BackUpInfo.cs | 22 ++++ .../Implements/ClientStorage.cs | 111 +++++++++++++----- .../Implements/ImplementerStorage.cs | 3 +- 4 files changed, 134 insertions(+), 29 deletions(-) create mode 100644 JewelryStore/JewelryStoreListImplement/ImplementationExtension.cs create mode 100644 JewelryStore/JewelryStoreListImplement/Implements/BackUpInfo.cs diff --git a/JewelryStore/JewelryStoreListImplement/ImplementationExtension.cs b/JewelryStore/JewelryStoreListImplement/ImplementationExtension.cs new file mode 100644 index 0000000..bf90008 --- /dev/null +++ b/JewelryStore/JewelryStoreListImplement/ImplementationExtension.cs @@ -0,0 +1,27 @@ +using JewelryStoreContracts.DI; +using JewelryStoreContracts.StoragesContracts; +using JewelryStoreListImplement.Implements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewelryStoreListImplement +{ + public class ImplementationExtension : IImplementationExtension + { + public int Priority => 0; + + public void RegisterServices() + { + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + DependencyManager.Instance.RegisterType(); + } + } +} diff --git a/JewelryStore/JewelryStoreListImplement/Implements/BackUpInfo.cs b/JewelryStore/JewelryStoreListImplement/Implements/BackUpInfo.cs new file mode 100644 index 0000000..06b5db7 --- /dev/null +++ b/JewelryStore/JewelryStoreListImplement/Implements/BackUpInfo.cs @@ -0,0 +1,22 @@ +using JewelryStoreContracts.StoragesContracts; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JewelryStoreListImplement.Implements +{ + public class BackUpInfo : IBackUpInfo + { + public List? GetList() where T : class, new() + { + throw new NotImplementedException(); + } + + public Type? GetTypeByModelInterface(string modelInterfaceName) + { + throw new NotImplementedException(); + } + } +} diff --git a/JewelryStore/JewelryStoreListImplement/Implements/ClientStorage.cs b/JewelryStore/JewelryStoreListImplement/Implements/ClientStorage.cs index ea60813..95bf3fa 100644 --- a/JewelryStore/JewelryStoreListImplement/Implements/ClientStorage.cs +++ b/JewelryStore/JewelryStoreListImplement/Implements/ClientStorage.cs @@ -1,5 +1,8 @@ using JewelryStoreContracts.BindingModels; +using JewelryStoreContracts.SearchModels; +using JewelryStoreContracts.StoragesContracts; using JewelryStoreContracts.ViewModels; +using JewelryStoreListImplement.Models; using JewerlyStoreDataModels.Models; using System; using System.Collections.Generic; @@ -9,42 +12,94 @@ using System.Threading.Tasks; namespace JewelryStoreListImplement.Implements { - public class Client : IClientModel + public class ClientStorage : IClientStorage //ватафак тут было { - public int Id { get; set; } - public string ClientFIO { get; set; } = string.Empty; - public string Email { get; set; } = string.Empty; - public string Password { get; set; } = string.Empty; - - public static Client? Create(ClientBindingModel? model) + private readonly DataListSingleton _source; + public ClientStorage() { - if (model == null) + _source = DataListSingleton.GetInstance(); + } + public List GetFullList() + { + var result = new List(); + foreach (var client in _source.Clients) + { + result.Add(client.GetViewModel); + } + return result; + } + public List GetFilteredList(ClientSearchModel + model) + { + var result = new List(); + if (string.IsNullOrEmpty(model.ClientFIO) && string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password)) + { + return result; + } + foreach (var client in _source.Clients) + { + if (client.ClientFIO.Contains(model.ClientFIO)) + { + result.Add(client.GetViewModel); + } + } + return result; + } + public ClientViewModel? GetElement(ClientSearchModel model) + { + foreach (var client in _source.Clients) + { + if ((string.IsNullOrEmpty(model.ClientFIO) || client.ClientFIO == model.ClientFIO) && + (!model.Id.HasValue || client.Id == model.Id) && (string.IsNullOrEmpty(model.Email) || client.Email == model.Email) && + (string.IsNullOrEmpty(model.Password) || client.Password == model.Password)) + { + return client.GetViewModel; + } + } + return null; + } + public ClientViewModel? Insert(ClientBindingModel model) + { + model.Id = 1; + foreach (var client in _source.Clients) + { + if (model.Id <= client.Id) + { + model.Id = client.Id + 1; + } + } + var newClient = Client.Create(model); + if (newClient == null) { return null; } - return new Client() + _source.Clients.Add(newClient); + return newClient.GetViewModel; + } + public ClientViewModel? Update(ClientBindingModel model) + { + foreach (var client in _source.Clients) { - Id = model.Id, - ClientFIO = model.ClientFIO, - Email = model.Email, - Password = model.Password - }; + if (client.Id == model.Id) + { + client.Update(model); + return client.GetViewModel; + } + } + return null; } - - public void Update(ClientBindingModel? model) + public ClientViewModel? Delete(ClientBindingModel model) { - if (model == null) { return; } - ClientFIO = model.ClientFIO; - Email = model.Email; - Password = model.Password; + for (int i = 0; i < _source.Clients.Count; ++i) + { + if (_source.Clients[i].Id == model.Id) + { + var element = _source.Clients[i]; + _source.Clients.RemoveAt(i); + return element.GetViewModel; + } + } + return null; } - - public ClientViewModel GetViewModel => new() - { - Id = Id, - ClientFIO = ClientFIO, - Email = Email, - Password = Password - }; } } diff --git a/JewelryStore/JewelryStoreListImplement/Implements/ImplementerStorage.cs b/JewelryStore/JewelryStoreListImplement/Implements/ImplementerStorage.cs index 74feb7c..411d7e2 100644 --- a/JewelryStore/JewelryStoreListImplement/Implements/ImplementerStorage.cs +++ b/JewelryStore/JewelryStoreListImplement/Implements/ImplementerStorage.cs @@ -1,5 +1,6 @@ using JewelryStoreContracts.BindingModels; using JewelryStoreContracts.SearchModels; +using JewelryStoreContracts.StoragesContracts; using JewelryStoreContracts.ViewModels; using JewelryStoreListImplement.Models; using System; @@ -10,7 +11,7 @@ using System.Threading.Tasks; namespace JewelryStoreListImplement.Implements { - public class ImplementerStorage + public class ImplementerStorage : IImplementerStorage // и тут потеря потерь { private readonly DataListSingleton _source; public ImplementerStorage()