using FurnitureAssemblyContracts.BindingModels; using FurnitureAssemblyContracts.SearchModels; using FurnitureAssemblyContracts.StoragesContracts; using FurnitureAssemblyContracts.ViewModels; using FurnitureAssemblyFileImplement.Models; namespace FurnitureAssemblyFileImplement.Implements { public class MessageInfoStorage : IMessageInfoStorage { private readonly DataFileSingleton _source; public MessageInfoStorage() { _source = DataFileSingleton.GetInstance(); } public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) { if (model.MessageId == null) { return null; } return _source.Messages.FirstOrDefault(x => x.MessageId.Equals(model.MessageId))?.GetViewModel; } public List GetFilteredList(MessageInfoSearchModel model) { if (!model.ClientId.HasValue) { return new(); } return _source.Messages.Where(x => x.ClientId.Equals(model.ClientId)).Select(x => x.GetViewModel).ToList(); } public List GetFullList() { return _source.Messages .Select(x => x.GetViewModel) .ToList(); } public MessageInfoViewModel? Insert(MessageInfoBindingModel model) { var newClient = MessageInfo.Create(model); if (newClient == null) { return null; } _source.Messages.Add(newClient); _source.SaveMessages(); return newClient.GetViewModel; } } }