using AbstractShopContracts.StoragesContracts; using AutomobilePlantContracts.BindingModels; using AutomobilePlantContracts.SearchModel; using AutomobilePlantContracts.ViewModel; using AutomobilePlantDataModels.Models; using AutomomilePlantFileImplement.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AutomomilePlantFileImplement.Implements { public class MessageStorage : IMessageInfoStorage { private readonly DataFileSingleton source; public MessageStorage() { source = DataFileSingleton.GetInstance(); } public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) { if (string.IsNullOrEmpty(model.MessageId) ) { return null; } return source.Messages .FirstOrDefault(x => (!string.IsNullOrEmpty(model.MessageId) && x.MessageId.Equals(model.MessageId))) ?.GetViewModel; } public List GetFilteredList(MessageInfoSearchModel model) { if (!model.ClientId.HasValue) { return new(); } return source.Messages .Where(x => x.ClientId== model.ClientId) .Select(x => x.GetViewModel) .ToList(); } public List GetFullList() { return source.Messages .Select(x => x.GetViewModel) .ToList(); } public MessageInfoViewModel? Insert(MessageInfoBindingModel model) { if (source.Messages.Count > 0) { var id = source.Messages.Count + 1; model.MessageId = id.ToString(); } else model.MessageId = "1"; var newMes = MessageInfo.Create(model); if (newMes == null) { return null; } source.Messages.Add(newMes); source.SaveMessages(); return newMes.GetViewModel; } } }