This commit is contained in:
Николай 2023-04-29 16:58:53 +04:00
commit 35c6c08bc4
5 changed files with 87 additions and 20 deletions

View File

@ -22,7 +22,7 @@ namespace FoodOrdersDatabaseImplement.Models
public virtual Client? Client { get; set; } public virtual Client? Client { get; set; }
public bool HasRead { get; private set; } public bool HasRead { get; private set; }
public string? Reply { get; private set; } public string? Reply { get; private set; }
public static MessageInfo? Create(MessageInfoBindingModel model) public static MessageInfo? Create(MessageInfoBindingModel model)
{ {
if (model == null) if (model == null)
{ {
@ -35,10 +35,13 @@ namespace FoodOrdersDatabaseImplement.Models
HasRead = model.HasRead, HasRead = model.HasRead,
Subject = model.Subject, Subject = model.Subject,
ClientId = model.ClientId, ClientId = model.ClientId,
MessageId = model.MessageId, MessageId = model.MessageId,
SenderName = model.SenderName, ClientId = model.ClientId,
DateDelivery = model.DateDelivery, SenderName = model.SenderName,
}; Body = model.Body,
Subject = model.Subject,
DateDelivery = model.DateDelivery,
};
} }
public void Update(MessageInfoBindingModel model) public void Update(MessageInfoBindingModel model)
{ {
@ -50,16 +53,19 @@ namespace FoodOrdersDatabaseImplement.Models
HasRead = model.HasRead; HasRead = model.HasRead;
} }
public MessageInfoViewModel GetViewModel => new() public MessageInfoViewModel GetViewModel => new()
{ {
Body = Body, Body = Body,
Reply = Reply, Reply = Reply,
HasRead = HasRead, HasRead = HasRead,
Subject = Subject, Subject = Subject,
ClientId = ClientId, ClientId = ClientId,
MessageId = MessageId, MessageId = MessageId,
SenderName = SenderName, ClientId = ClientId,
DateDelivery = DateDelivery, SenderName = SenderName,
}; Body = Body,
} Subject = Subject,
DateDelivery = DateDelivery,
};
}
} }

View File

@ -10,6 +10,7 @@ namespace FoodOrdersFileImplement
private readonly string DishFileName = "Dish.xml"; private readonly string DishFileName = "Dish.xml";
private readonly string ClientFileName = "Clients.xml"; private readonly string ClientFileName = "Clients.xml";
private readonly string ImplementerFileName = "Implementer.xml"; private readonly string ImplementerFileName = "Implementer.xml";
private readonly string MessageInfoFileName = "MessageInfo.xml";
private readonly string ShopFileName = "Shop.xml"; private readonly string ShopFileName = "Shop.xml";
public List<Component> Components { get; private set; } public List<Component> Components { get; private set; }
public List<Order> Orders { get; private set; } public List<Order> Orders { get; private set; }
@ -17,6 +18,7 @@ namespace FoodOrdersFileImplement
public List<Shop> Shops { get; private set; } public List<Shop> Shops { get; private set; }
public List<Client> Clients { get; private set; } public List<Client> Clients { get; private set; }
public List<Implementer> Implementers { get; private set; } public List<Implementer> Implementers { get; private set; }
public List<MessageInfo> Messages { get; private set; }
public static DataFileSingleton GetInstance() public static DataFileSingleton GetInstance()
{ {
@ -32,6 +34,7 @@ namespace FoodOrdersFileImplement
public void SaveShops() => SaveData(Shops, ShopFileName, "Shops", x => x.GetXElement); public void SaveShops() => SaveData(Shops, ShopFileName, "Shops", x => x.GetXElement);
public void SaveClients() => SaveData(Clients, ClientFileName, "Clients", 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 SaveImplementer() => SaveData(Implementers, ImplementerFileName, "Implementer", x => x.GetXElement);
public void SaveMessages() => SaveData(Orders, ImplementerFileName, "Messages", x => x.GetXElement);
private DataFileSingleton() private DataFileSingleton()
{ {
Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!; Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!;
@ -40,6 +43,7 @@ namespace FoodOrdersFileImplement
Clients = LoadData(ClientFileName, "Client", x => Client.Create(x)!)!; Clients = LoadData(ClientFileName, "Client", x => Client.Create(x)!)!;
Shops = LoadData(ShopFileName, "Shop", x => Shop.Create(x)!)!; Shops = LoadData(ShopFileName, "Shop", x => Shop.Create(x)!)!;
Implementers = LoadData(ImplementerFileName, "Implementer", x => Implementer.Create(x)!)!; Implementers = LoadData(ImplementerFileName, "Implementer", x => Implementer.Create(x)!)!;
Messages = LoadData(MessageInfoFileName, "MessageInfo", x => MessageInfo.Create(x)!)!;
} }
private static List<T>? LoadData<T>(string filename, string xmlNodeName, Func<XElement, T> selectFunction) private static List<T>? LoadData<T>(string filename, string xmlNodeName, Func<XElement, T> selectFunction)
{ {

View File

@ -2,29 +2,52 @@
using FoodOrdersContracts.SearchModels; using FoodOrdersContracts.SearchModels;
using FoodOrdersContracts.StoragesContracts; using FoodOrdersContracts.StoragesContracts;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersFileImplement.Models;
namespace FoodOrdersFileImplement.Implements namespace FoodOrdersFileImplement.Implements
{ {
public class MessageInfoStorage : IMessageInfoStorage public class MessageInfoStorage : IMessageInfoStorage
{ {
private readonly DataFileSingleton _source;
public MessageInfoStorage()
{
_source = DataFileSingleton.GetInstance();
}
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) 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<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model) public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model)
{ {
throw new NotImplementedException(); return _source.Messages
.Where(x => x.ClientId == model.ClientId)
.Select(x => x.GetViewModel)
.ToList();
} }
public List<MessageInfoViewModel> GetFullList() public List<MessageInfoViewModel> GetFullList()
{ {
throw new NotImplementedException(); return _source.Messages
.Select(x => x.GetViewModel)
.ToList();
} }
public MessageInfoViewModel? Insert(MessageInfoBindingModel model) 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;
} }
public MessageInfoViewModel? Update(MessageInfoBindingModel model) public MessageInfoViewModel? Update(MessageInfoBindingModel model)

View File

@ -1,4 +1,5 @@
using FoodOrdersListImplement.Models; using FoodOrdersListImplement.Models;
using static System.Formats.Asn1.AsnWriter;
namespace FoodOrdersListImplement namespace FoodOrdersListImplement
{ {
@ -11,6 +12,7 @@ namespace FoodOrdersListImplement
public List<Shop> Shops { get; set; } public List<Shop> Shops { get; set; }
public List<Client> Clients { get; set; } public List<Client> Clients { get; set; }
public List<Implementer> Implementers { get; set; } public List<Implementer> Implementers { get; set; }
public List<MessageInfo> Messages { get; set; }
private DataListSingleton() private DataListSingleton()
{ {
Components = new List<Component>(); Components = new List<Component>();
@ -19,6 +21,7 @@ namespace FoodOrdersListImplement
Clients = new List<Client>(); Clients = new List<Client>();
Shops = new List<Shop>(); Shops = new List<Shop>();
Implementers = new List<Implementer>(); Implementers = new List<Implementer>();
Messages = new List<MessageInfo>();
} }
public static DataListSingleton GetInstance() public static DataListSingleton GetInstance()
{ {

View File

@ -2,29 +2,60 @@
using FoodOrdersContracts.SearchModels; using FoodOrdersContracts.SearchModels;
using FoodOrdersContracts.StoragesContracts; using FoodOrdersContracts.StoragesContracts;
using FoodOrdersContracts.ViewModels; using FoodOrdersContracts.ViewModels;
using FoodOrdersListImplement.Models;
namespace FoodOrdersListImplement.Implements namespace FoodOrdersListImplement.Implements
{ {
public class MessageInfoStorage : IMessageInfoStorage public class MessageInfoStorage : IMessageInfoStorage
{ {
private readonly DataListSingleton _source;
public MessageInfoStorage()
{
_source = DataListSingleton.GetInstance();
}
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) 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<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model) public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model)
{ {
throw new NotImplementedException(); List<MessageInfoViewModel> result = new();
foreach (var item in _source.Messages)
{
if (item.ClientId.HasValue && item.ClientId == model.ClientId)
{
result.Add(item.GetViewModel);
}
}
return result;
} }
public List<MessageInfoViewModel> GetFullList() public List<MessageInfoViewModel> GetFullList()
{ {
throw new NotImplementedException(); List<MessageInfoViewModel> result = new();
foreach (var item in _source.Messages)
{
result.Add(item.GetViewModel);
}
return result;
} }
public MessageInfoViewModel? Insert(MessageInfoBindingModel model) 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;
} }
public MessageInfoViewModel? Update(MessageInfoBindingModel model) public MessageInfoViewModel? Update(MessageInfoBindingModel model)