ListImplement and FileImplement
This commit is contained in:
parent
5b1e3e6d58
commit
ae8a20a5bb
@ -12,8 +12,9 @@ namespace AutoWorkshopFileImplement
|
||||
private readonly string RepairFileName = "Repair.xml";
|
||||
private readonly string ClientFileName = "Client.xml";
|
||||
private readonly string ImplementerFileName = "Implementer.xml";
|
||||
private readonly string MessageInfoFileName = "MessageInfo.xml";
|
||||
|
||||
public List<Component> Components { get; private set; }
|
||||
public List<Component> Components { get; private set; }
|
||||
|
||||
public List<Order> Orders { get; private set; }
|
||||
|
||||
@ -23,14 +24,17 @@ namespace AutoWorkshopFileImplement
|
||||
|
||||
public List<Implementer> Implementers { get; private set; }
|
||||
|
||||
private DataFileSingleton()
|
||||
public List<MessageInfo> Messages { get; private set; }
|
||||
|
||||
private DataFileSingleton()
|
||||
{
|
||||
Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!;
|
||||
Repairs = LoadData(RepairFileName, "Repair", x => Repair.Create(x)!)!;
|
||||
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)!)!;
|
||||
}
|
||||
|
||||
public static DataFileSingleton GetInstance()
|
||||
{
|
||||
@ -47,8 +51,9 @@ namespace AutoWorkshopFileImplement
|
||||
public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement);
|
||||
public void SaveClients() => SaveData(Clients, ClientFileName, "Clients", x => x.GetXElement);
|
||||
public void SaveImplementers() => SaveData(Implementers, ImplementerFileName, "Implementers", x => x.GetXElement);
|
||||
public void SaveMessages() => SaveData(Orders, ImplementerFileName, "Messages", x => x.GetXElement);
|
||||
|
||||
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)
|
||||
{
|
||||
if (File.Exists(FileName))
|
||||
{
|
||||
|
56
AutoWorkshopFileImplement/Implements/MessageInfoStorage.cs
Normal file
56
AutoWorkshopFileImplement/Implements/MessageInfoStorage.cs
Normal file
@ -0,0 +1,56 @@
|
||||
using AutoWorkshopContracts.BindingModels;
|
||||
using AutoWorkshopContracts.SearchModels;
|
||||
using AutoWorkshopContracts.StoragesContracts;
|
||||
using AutoWorkshopContracts.ViewModels;
|
||||
using AutoWorkshopFileImplement.Models;
|
||||
|
||||
namespace AutoWorkshopFileImplement.Implements
|
||||
{
|
||||
public class MessageInfoStorage : IMessageInfoStorage
|
||||
{
|
||||
private readonly DataFileSingleton _source;
|
||||
|
||||
public MessageInfoStorage()
|
||||
{
|
||||
_source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFullList()
|
||||
{
|
||||
return _source.Messages
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel Model)
|
||||
{
|
||||
return _source.Messages
|
||||
.Where(x => x.ClientId.HasValue && x.ClientId == Model.ClientId)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? GetElement(MessageInfoSearchModel Model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Model.MessageId))
|
||||
return null;
|
||||
|
||||
return _source.Messages
|
||||
.FirstOrDefault(x => x.MessageId == Model.MessageId)?
|
||||
.GetViewModel;
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? Insert(MessageInfoBindingModel Model)
|
||||
{
|
||||
var NewMessageInfo = MessageInfo.Create(Model);
|
||||
|
||||
if (NewMessageInfo == null)
|
||||
return null;
|
||||
|
||||
_source.Messages.Add(NewMessageInfo);
|
||||
_source.SaveMessages();
|
||||
|
||||
return NewMessageInfo.GetViewModel;
|
||||
}
|
||||
}
|
||||
}
|
74
AutoWorkshopFileImplement/Models/MessageInfo.cs
Normal file
74
AutoWorkshopFileImplement/Models/MessageInfo.cs
Normal file
@ -0,0 +1,74 @@
|
||||
using AutoWorkshopContracts.BindingModels;
|
||||
using AutoWorkshopContracts.ViewModels;
|
||||
using AutoWorkshopDataModels.Models;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace AutoWorkshopFileImplement.Models
|
||||
{
|
||||
public class MessageInfo : IMessageInfoModel
|
||||
{
|
||||
public string MessageId { get; set; } = string.Empty;
|
||||
|
||||
public int? ClientId { get; set; }
|
||||
|
||||
public string SenderName { get; set; } = string.Empty;
|
||||
|
||||
public DateTime DateDelivery { get; set; }
|
||||
|
||||
public string Subject { get; set; } = string.Empty;
|
||||
|
||||
public string Body { get; set; } = string.Empty;
|
||||
|
||||
public static MessageInfo? Create(MessageInfoBindingModel? Model)
|
||||
{
|
||||
if (Model == null)
|
||||
return null;
|
||||
|
||||
return new()
|
||||
{
|
||||
MessageId = Model.MessageId,
|
||||
ClientId = Model.ClientId,
|
||||
SenderName = Model.SenderName,
|
||||
DateDelivery = Model.DateDelivery,
|
||||
Subject = Model.Subject,
|
||||
Body = Model.Body
|
||||
};
|
||||
}
|
||||
|
||||
public MessageInfoViewModel GetViewModel => new()
|
||||
{
|
||||
MessageId = MessageId,
|
||||
ClientId = ClientId,
|
||||
SenderName = SenderName,
|
||||
DateDelivery = DateDelivery,
|
||||
Subject = Subject,
|
||||
Body = Body
|
||||
};
|
||||
|
||||
public static MessageInfo? Create(XElement Element)
|
||||
{
|
||||
if (Element == null)
|
||||
return null;
|
||||
|
||||
return new()
|
||||
{
|
||||
MessageId = Element.Attribute("MessageId")!.Value,
|
||||
ClientId = Convert.ToInt32(Element.Attribute("ClientId")!.Value),
|
||||
SenderName = Element.Attribute("SenderName")!.Value,
|
||||
DateDelivery = Convert.ToDateTime(Element.Attribute("DateDelivery")!.Value),
|
||||
Subject = Element.Attribute("Subject")!.Value,
|
||||
Body = Element.Attribute("Body")!.Value,
|
||||
};
|
||||
}
|
||||
|
||||
public XElement GetXElement => new(
|
||||
"MessageInfo",
|
||||
new XAttribute("MessageId", MessageId),
|
||||
new XAttribute("ClientId", ClientId),
|
||||
new XAttribute("SenderName", SenderName),
|
||||
new XAttribute("DateDelivery", DateDelivery),
|
||||
new XAttribute("Subject", Subject),
|
||||
new XAttribute("Body", Body)
|
||||
);
|
||||
}
|
||||
}
|
@ -16,6 +16,8 @@ namespace AutoWorkshopListImplement
|
||||
|
||||
public List<Implementer> Implementers { get; set; }
|
||||
|
||||
public List<MessageInfo> Messages { get; set; }
|
||||
|
||||
private DataListSingleton()
|
||||
{
|
||||
Components = new List<Component>();
|
||||
@ -23,6 +25,7 @@ namespace AutoWorkshopListImplement
|
||||
Repairs = new List<Repair>();
|
||||
Clients = new List<Client>();
|
||||
Implementers = new List<Implementer>();
|
||||
Messages = new List<MessageInfo>();
|
||||
}
|
||||
|
||||
public static DataListSingleton GetInstance()
|
||||
|
54
AutoWorkshopImplement/Implements/MessageInfoStorage.cs
Normal file
54
AutoWorkshopImplement/Implements/MessageInfoStorage.cs
Normal file
@ -0,0 +1,54 @@
|
||||
using AutoWorkshopContracts.BindingModels;
|
||||
using AutoWorkshopContracts.SearchModels;
|
||||
using AutoWorkshopContracts.StoragesContracts;
|
||||
using AutoWorkshopContracts.ViewModels;
|
||||
using AutoWorkshopListImplement.Models;
|
||||
|
||||
namespace AutoWorkshopListImplement.Implements
|
||||
{
|
||||
public class MessageInfoStorage : IMessageInfoStorage
|
||||
{
|
||||
private readonly DataListSingleton _source;
|
||||
|
||||
public MessageInfoStorage()
|
||||
{
|
||||
_source = DataListSingleton.GetInstance();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFullList()
|
||||
{
|
||||
return _source.Messages
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel Model)
|
||||
{
|
||||
return _source.Messages
|
||||
.Where(x => x.ClientId.HasValue && x.ClientId == Model.ClientId)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? GetElement(MessageInfoSearchModel Model)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Model.MessageId))
|
||||
return null;
|
||||
|
||||
return _source.Messages
|
||||
.FirstOrDefault(x => x.MessageId == Model.MessageId)?
|
||||
.GetViewModel;
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? Insert(MessageInfoBindingModel Model)
|
||||
{
|
||||
var NewMessageInfo = MessageInfo.Create(Model);
|
||||
|
||||
if (NewMessageInfo == null)
|
||||
return null;
|
||||
|
||||
_source.Messages.Add(NewMessageInfo);
|
||||
return NewMessageInfo.GetViewModel;
|
||||
}
|
||||
}
|
||||
}
|
47
AutoWorkshopImplement/Models/MessageInfo.cs
Normal file
47
AutoWorkshopImplement/Models/MessageInfo.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using AutoWorkshopContracts.BindingModels;
|
||||
using AutoWorkshopContracts.ViewModels;
|
||||
using AutoWorkshopDataModels.Models;
|
||||
|
||||
namespace AutoWorkshopListImplement.Models
|
||||
{
|
||||
public class MessageInfo : IMessageInfoModel
|
||||
{
|
||||
public string MessageId { get; set; } = string.Empty;
|
||||
|
||||
public int? ClientId { get; set; }
|
||||
|
||||
public string SenderName { get; set; } = string.Empty;
|
||||
|
||||
public DateTime DateDelivery { get; set; }
|
||||
|
||||
public string Subject { get; set; } = string.Empty;
|
||||
|
||||
public string Body { get; set; } = string.Empty;
|
||||
|
||||
public static MessageInfo? Create(MessageInfoBindingModel? Model)
|
||||
{
|
||||
if (Model == null)
|
||||
return null;
|
||||
|
||||
return new()
|
||||
{
|
||||
MessageId = Model.MessageId,
|
||||
ClientId = Model.ClientId,
|
||||
SenderName = Model.SenderName,
|
||||
DateDelivery = Model.DateDelivery,
|
||||
Subject = Model.Subject,
|
||||
Body = Model.Body
|
||||
};
|
||||
}
|
||||
|
||||
public MessageInfoViewModel GetViewModel => new()
|
||||
{
|
||||
MessageId = MessageId,
|
||||
ClientId = ClientId,
|
||||
SenderName = SenderName,
|
||||
DateDelivery = DateDelivery,
|
||||
Subject = Subject,
|
||||
Body = Body
|
||||
};
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user