From c2bb2a86697f07df42920beb68e21fa4051aca94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9?= Date: Sat, 29 Apr 2023 16:57:41 +0400 Subject: [PATCH] fix --- .../{EmailMessage.cs => MessageInfo.cs} | 0 .../DataFileSingleton.cs | 4 ++ .../Implements/MessageInfoStorage.cs | 31 +++++++++++++-- .../DataListSingleton.cs | 3 ++ .../Implements/MessageInfoStorage.cs | 39 +++++++++++++++++-- 5 files changed, 69 insertions(+), 8 deletions(-) rename FoodOrders/FoodOrdersDatabaseImplement/Models/{EmailMessage.cs => MessageInfo.cs} (100%) diff --git a/FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs b/FoodOrders/FoodOrdersDatabaseImplement/Models/MessageInfo.cs similarity index 100% rename from FoodOrders/FoodOrdersDatabaseImplement/Models/EmailMessage.cs rename to FoodOrders/FoodOrdersDatabaseImplement/Models/MessageInfo.cs diff --git a/FoodOrders/FoodOrdersFileImplement/DataFileSingleton.cs b/FoodOrders/FoodOrdersFileImplement/DataFileSingleton.cs index 5c07d7e..0ee7cdf 100644 --- a/FoodOrders/FoodOrdersFileImplement/DataFileSingleton.cs +++ b/FoodOrders/FoodOrdersFileImplement/DataFileSingleton.cs @@ -10,11 +10,13 @@ namespace FoodOrdersFileImplement private readonly string DishFileName = "Dish.xml"; private readonly string ClientFileName = "Clients.xml"; private readonly string ImplementerFileName = "Implementer.xml"; + private readonly string MessageInfoFileName = "MessageInfo.xml"; public List Components { get; private set; } public List Orders { get; private set; } public List Dishes { get; private set; } public List Clients { get; private set; } public List Implementers { get; private set; } + public List Messages { get; private set; } public static DataFileSingleton GetInstance() { @@ -29,6 +31,7 @@ namespace FoodOrdersFileImplement public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement); public void SaveClients() => SaveData(Clients, ClientFileName, "Clients", x => x.GetXElement); public void SaveImplementer() => SaveData(Implementers, ImplementerFileName, "Implementer", x => x.GetXElement); + public void SaveMessages() => SaveData(Orders, ImplementerFileName, "Messages", x => x.GetXElement); private DataFileSingleton() { Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!; @@ -36,6 +39,7 @@ namespace FoodOrdersFileImplement Orders = LoadData(OrderFileName, "Order", x => Order.Create(x)!)!; Clients = LoadData(ClientFileName, "Client", x => Client.Create(x)!)!; Implementers = LoadData(ImplementerFileName, "Implementer", x => Implementer.Create(x)!)!; + Messages = LoadData(MessageInfoFileName, "MessageInfo", x => MessageInfo.Create(x)!)!; } private static List? LoadData(string filename, string xmlNodeName, Func selectFunction) { diff --git a/FoodOrders/FoodOrdersFileImplement/Implements/MessageInfoStorage.cs b/FoodOrders/FoodOrdersFileImplement/Implements/MessageInfoStorage.cs index 7581ccf..d238f47 100644 --- a/FoodOrders/FoodOrdersFileImplement/Implements/MessageInfoStorage.cs +++ b/FoodOrders/FoodOrdersFileImplement/Implements/MessageInfoStorage.cs @@ -2,29 +2,52 @@ using FoodOrdersContracts.SearchModels; using FoodOrdersContracts.StoragesContracts; using FoodOrdersContracts.ViewModels; +using FoodOrdersFileImplement.Models; namespace FoodOrdersFileImplement.Implements { public class MessageInfoStorage : IMessageInfoStorage { + private readonly DataFileSingleton _source; + public MessageInfoStorage() + { + _source = DataFileSingleton.GetInstance(); + } + public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) { - throw new NotImplementedException(); + if (model.MessageId != null) + { + return _source.Messages.FirstOrDefault(x => x.MessageId == model.MessageId)?.GetViewModel; + } + return null; } public List GetFilteredList(MessageInfoSearchModel model) { - throw new NotImplementedException(); + return _source.Messages + .Where(x => x.ClientId == model.ClientId) + .Select(x => x.GetViewModel) + .ToList(); } public List GetFullList() { - throw new NotImplementedException(); + return _source.Messages + .Select(x => x.GetViewModel) + .ToList(); } public MessageInfoViewModel? Insert(MessageInfoBindingModel model) { - throw new NotImplementedException(); + var newMessage = MessageInfo.Create(model); + if (newMessage == null) + { + return null; + } + _source.Messages.Add(newMessage); + _source.SaveMessages(); + return newMessage.GetViewModel; } } } \ No newline at end of file diff --git a/FoodOrders/FoodOrdersListImplement/DataListSingleton.cs b/FoodOrders/FoodOrdersListImplement/DataListSingleton.cs index b80bb93..11e1720 100644 --- a/FoodOrders/FoodOrdersListImplement/DataListSingleton.cs +++ b/FoodOrders/FoodOrdersListImplement/DataListSingleton.cs @@ -1,4 +1,5 @@ using FoodOrdersListImplement.Models; +using static System.Formats.Asn1.AsnWriter; namespace FoodOrdersListImplement { @@ -10,6 +11,7 @@ namespace FoodOrdersListImplement public List Dishes { get; set; } public List Clients { get; set; } public List Implementers { get; set; } + public List Messages { get; set; } private DataListSingleton() { Components = new List(); @@ -17,6 +19,7 @@ namespace FoodOrdersListImplement Dishes = new List(); Clients = new List(); Implementers = new List(); + Messages = new List(); } public static DataListSingleton GetInstance() { diff --git a/FoodOrders/FoodOrdersListImplement/Implements/MessageInfoStorage.cs b/FoodOrders/FoodOrdersListImplement/Implements/MessageInfoStorage.cs index e4ac575..dbcfba1 100644 --- a/FoodOrders/FoodOrdersListImplement/Implements/MessageInfoStorage.cs +++ b/FoodOrders/FoodOrdersListImplement/Implements/MessageInfoStorage.cs @@ -2,29 +2,60 @@ using FoodOrdersContracts.SearchModels; using FoodOrdersContracts.StoragesContracts; using FoodOrdersContracts.ViewModels; +using FoodOrdersListImplement.Models; namespace FoodOrdersListImplement.Implements { public class MessageInfoStorage : IMessageInfoStorage { + private readonly DataListSingleton _source; + public MessageInfoStorage() + { + _source = DataListSingleton.GetInstance(); + } + public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) { - throw new NotImplementedException(); + foreach (var message in _source.Messages) + { + if (model.MessageId != null && model.MessageId.Equals(message.MessageId)) + return message.GetViewModel; + } + return null; } public List GetFilteredList(MessageInfoSearchModel model) { - throw new NotImplementedException(); + List result = new(); + foreach (var item in _source.Messages) + { + if (item.ClientId.HasValue && item.ClientId == model.ClientId) + { + result.Add(item.GetViewModel); + } + } + return result; } public List GetFullList() { - throw new NotImplementedException(); + List result = new(); + foreach (var item in _source.Messages) + { + result.Add(item.GetViewModel); + } + return result; } public MessageInfoViewModel? Insert(MessageInfoBindingModel model) { - throw new NotImplementedException(); + var newMessage = MessageInfo.Create(model); + if (newMessage == null) + { + return null; + } + _source.Messages.Add(newMessage); + return newMessage.GetViewModel; } } } \ No newline at end of file