From 81b95867cc2e07bc7038c856c2c6f8e9b2f722d8 Mon Sep 17 00:00:00 2001 From: the Date: Thu, 20 Apr 2023 21:09:16 +0400 Subject: [PATCH] List implement --- .../Implements/ImplementerStorage.cs | 1 + ComputerShopFileImplement/Models/Client.cs | 80 +++++++++++++ .../Implements/ImplementerStorage.cs | 111 ++++++++++++++++++ .../Implements/OrderStorage.cs | 28 +++++ ComputerShopListImplement/Models/Client.cs | 57 +++++++++ .../Models/DataListSingleton.cs | 4 + .../Models/Implementer.cs | 60 ++++++++++ ComputerShopListImplement/Models/Order.cs | 5 + 8 files changed, 346 insertions(+) create mode 100644 ComputerShopFileImplement/Models/Client.cs create mode 100644 ComputerShopListImplement/Implements/ImplementerStorage.cs create mode 100644 ComputerShopListImplement/Models/Client.cs create mode 100644 ComputerShopListImplement/Models/Implementer.cs diff --git a/ComputerShopFileImplement/Implements/ImplementerStorage.cs b/ComputerShopFileImplement/Implements/ImplementerStorage.cs index 06df787..e5e116e 100644 --- a/ComputerShopFileImplement/Implements/ImplementerStorage.cs +++ b/ComputerShopFileImplement/Implements/ImplementerStorage.cs @@ -2,6 +2,7 @@ using ComputerShopContracts.SearchModels; using ComputerShopContracts.StoragesContracts; using ComputerShopContracts.ViewModels; +using ComputerShopFileImplement.Models; using System; using System.Collections.Generic; using System.Linq; diff --git a/ComputerShopFileImplement/Models/Client.cs b/ComputerShopFileImplement/Models/Client.cs new file mode 100644 index 0000000..9d6158c --- /dev/null +++ b/ComputerShopFileImplement/Models/Client.cs @@ -0,0 +1,80 @@ +using ComputerShopContracts.BindingModels; +using ComputerShopContracts.ViewModels; +using ComputerShopDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace ComputerShopFileImplement.Models +{ + public class Client : IClientModel + { + public int Id { get; private set; } + + public string ClientFIO { get; private set; } = string.Empty; + + public string Email { get; private set; } = string.Empty; + + public string Password { get; private set; } = string.Empty; + + public static Client? Create(ClientBindingModel model) + { + if (model == null) + { + return null; + } + return new() + { + Id = model.Id, + ClientFIO = model.ClientFIO, + Email = model.Email, + Password = model.Password + }; + } + public static Client? Create(XElement element) + { + if (element == null) + { + return null; + } + return new() + { + Id = Convert.ToInt32(element.Attribute("Id")!.Value), + ClientFIO = element.Element("FIO")!.Value, + Email = element.Element("Email")!.Value, + Password = element.Element("Password")!.Value, + }; + } + + + public void Update(ClientBindingModel model) + { + if (model == null) + { + return; + } + ClientFIO = model.ClientFIO; + Email = model.Email; + Password = model.Password; + } + + public ClientViewModel GetViewModel => new() + { + Id = Id, + ClientFIO = ClientFIO, + Email = Email, + Password = Password, + }; + + public XElement GetXElement => new("Client", + new XAttribute("Id", Id), + new XElement("FIO", ClientFIO), + new XElement("Email", Email), + new XElement("Password", Password) + ); + + } +} diff --git a/ComputerShopListImplement/Implements/ImplementerStorage.cs b/ComputerShopListImplement/Implements/ImplementerStorage.cs new file mode 100644 index 0000000..8f4175b --- /dev/null +++ b/ComputerShopListImplement/Implements/ImplementerStorage.cs @@ -0,0 +1,111 @@ +using ComputerShopContracts.BindingModels; +using ComputerShopContracts.SearchModels; +using ComputerShopContracts.StoragesContracts; +using ComputerShopContracts.ViewModels; +using ComputerShopListImplement.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComputerShopListImplement.Implements +{ + public class ImplementerStorage : IImplementerStorage + { + private readonly DataListSingleton _source; + public ImplementerStorage() + { + _source = DataListSingleton.GetInstance(); + } + public ImplementerViewModel? GetElement(ImplementerSearchModel model) + { + foreach (var x in _source.Implementers) + { + if (model.Id.HasValue && x.Id == model.Id) + return x.GetViewModel; + if (model.ImplementerFIO != null && model.Password != null && + x.ImplementerFIO.Equals(model.ImplementerFIO) && x.Password.Equals(model.Password)) + return x.GetViewModel; + if (model.ImplementerFIO != null && x.ImplementerFIO.Equals(model.ImplementerFIO)) + return x.GetViewModel; + } + return null; + } + + public List GetFilteredList(ImplementerSearchModel model) + { + if (model == null) + { + return new(); + } + List list = new(); + if (model.ImplementerFIO != null) + { + foreach (var implementer in _source.Implementers) + { + if (implementer.ImplementerFIO.Contains(model.ImplementerFIO)) + { + list.Add(implementer.GetViewModel); + } + } + } + return list; + } + + public List GetFullList() + { + var result = new List(); + foreach (var implementer in _source.Implementers) + { + result.Add(implementer.GetViewModel); + } + return result; + } + + public ImplementerViewModel? Insert(ImplementerBindingModel model) + { + model.Id = 1; + foreach (var implementer in _source.Implementers) + { + if (model.Id <= implementer.Id) + { + model.Id = implementer.Id + 1; + } + } + var res = Implementer.Create(model); + if (res != null) + { + _source.Implementers.Add(res); + } + return res?.GetViewModel; + } + + public ImplementerViewModel? Update(ImplementerBindingModel model) + { + foreach (var implementer in _source.Implementers) + { + if (implementer.Id == model.Id) + { + implementer.Update(model); + return implementer.GetViewModel; + } + } + return null; + } + + public ImplementerViewModel? Delete(ImplementerBindingModel model) + { + for (int i = 0; i < _source.Implementers.Count; ++i) + { + if (_source.Implementers[i].Id == model.Id) + { + var element = _source.Implementers[i]; + _source.Implementers.RemoveAt(i); + return element.GetViewModel; + } + } + return null; + } + } +} diff --git a/ComputerShopListImplement/Implements/OrderStorage.cs b/ComputerShopListImplement/Implements/OrderStorage.cs index c61cd24..50f599f 100644 --- a/ComputerShopListImplement/Implements/OrderStorage.cs +++ b/ComputerShopListImplement/Implements/OrderStorage.cs @@ -32,6 +32,14 @@ namespace ComputerShopListImplement.Implements { return order.GetViewModel; } + else if (model.ImplementerId.HasValue && model.Status != null && order.ImplementerId == model.ImplementerId && model.Status.Equals(order.Status)) + { + return order.GetViewModel; + } + else if (model.ImplementerId.HasValue && model.ImplementerId == order.ImplementerId) + { + return order.GetViewModel; + } } return null; } @@ -50,6 +58,26 @@ namespace ComputerShopListImplement.Implements result.Add(order.GetViewModel); } } + if (model.ImplementerId.HasValue) + { + foreach (var order in _source.Orders) + { + if (order.ImplementerId == model.ImplementerId) + { + result.Add(order.GetViewModel); + } + } + } + if (model.Status != null) + { + foreach (var order in _source.Orders) + { + if (model.Status.Equals(order.Status)) + { + result.Add(order.GetViewModel); + } + } + } return result; } diff --git a/ComputerShopListImplement/Models/Client.cs b/ComputerShopListImplement/Models/Client.cs new file mode 100644 index 0000000..d8a6ca7 --- /dev/null +++ b/ComputerShopListImplement/Models/Client.cs @@ -0,0 +1,57 @@ +using ComputerShopContracts.BindingModels; +using ComputerShopContracts.ViewModels; +using ComputerShopDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComputerShopListImplement.Models +{ + public class Client : IClientModel + { + public int Id { get; private set; } + + public string ClientFIO { get; private set; } = string.Empty; + + public string Email { get; private set; } = string.Empty; + + public string Password { get; private set; } = string.Empty; + + public static Client? Create(ClientBindingModel model) + { + if (model == null) + { + return null; + } + return new() + { + Id = model.Id, + ClientFIO = model.ClientFIO, + Email = model.Email, + Password = model.Password + }; + } + + public void Update(ClientBindingModel model) + { + if (model == null) + { + return; + } + ClientFIO = model.ClientFIO; + Email = model.Email; + Password = model.Password; + } + + public ClientViewModel GetViewModel => new() + { + Id = Id, + ClientFIO = ClientFIO, + Email = Email, + Password = Password, + }; + + } +} diff --git a/ComputerShopListImplement/Models/DataListSingleton.cs b/ComputerShopListImplement/Models/DataListSingleton.cs index e71b814..28f714e 100644 --- a/ComputerShopListImplement/Models/DataListSingleton.cs +++ b/ComputerShopListImplement/Models/DataListSingleton.cs @@ -12,11 +12,15 @@ namespace ComputerShopListImplement.Models public List Components { get; set; } public List Orders { get; set; } public List Computers { get; set; } + public List Implementers { get; set; } + public List Clients { get; set; } private DataListSingleton() { Components = new List(); Orders = new List(); Computers = new List(); + Clients = new List(); + Implementers = new List(); } public static DataListSingleton GetInstance() { diff --git a/ComputerShopListImplement/Models/Implementer.cs b/ComputerShopListImplement/Models/Implementer.cs new file mode 100644 index 0000000..35045e8 --- /dev/null +++ b/ComputerShopListImplement/Models/Implementer.cs @@ -0,0 +1,60 @@ +using ComputerShopContracts.BindingModels; +using ComputerShopContracts.ViewModels; +using ComputerShopDataModels.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ComputerShopListImplement.Models +{ + public class Implementer : IImplementerModel + { + public int Id { get; private set; } + + public string ImplementerFIO { get; private set; } = string.Empty; + + public string Password { get; private set; } = string.Empty; + + public int WorkExperience { get; private set; } + + public int Qualification { get; private set; } + + public static Implementer? Create(ImplementerBindingModel model) + { + if (model == null) + { + return null; + } + return new() + { + Id = model.Id, + Password = model.Password, + Qualification = model.Qualification, + ImplementerFIO = model.ImplementerFIO, + WorkExperience = model.WorkExperience, + }; + } + + public void Update(ImplementerBindingModel model) + { + if (model == null) + { + return; + } + Password = model.Password; + Qualification = model.Qualification; + ImplementerFIO = model.ImplementerFIO; + WorkExperience = model.WorkExperience; + } + + public ImplementerViewModel GetViewModel => new() + { + Id = Id, + Password = Password, + Qualification = Qualification, + ImplementerFIO = ImplementerFIO, + }; + } +} diff --git a/ComputerShopListImplement/Models/Order.cs b/ComputerShopListImplement/Models/Order.cs index ecc0952..fa716ff 100644 --- a/ComputerShopListImplement/Models/Order.cs +++ b/ComputerShopListImplement/Models/Order.cs @@ -40,6 +40,8 @@ namespace ComputerShopListImplement.Models { ComputerId = model.ComputerId, ComputerName = model.ComputerName, + ImplementerId = model.ImplementerId, + ClientId = model.ClientId, Count = model.Count, Sum = model.Sum, Status = model.Status, @@ -63,6 +65,7 @@ namespace ComputerShopListImplement.Models DateCreate = model.DateCreate; DateImplement = model.DateImplement; Id = model.Id; + ImplementerId = model.ImplementerId; } public OrderViewModel GetViewModel => new() @@ -75,6 +78,8 @@ namespace ComputerShopListImplement.Models DateImplement = DateImplement, Id = Id, Status = Status, + ImplementerId = ImplementerId, + ImplementerFIO = DataListSingleton.GetInstance().Implementers.FirstOrDefault(x => x.Id == ImplementerId)?.ImplementerFIO ?? string.Empty, }; } }