using ForumContracts.BindingModels; using ForumContracts.SearchModels; using ForumContracts.StoragesContracts; using ForumContracts.ViewModels; using ForumDatabase.Models; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ForumDatabase.Implements { public class MessageStorage : IMessageStorage { public MessageViewModel? Delete(MessageBindingModel model) { using var context = new ForumDatabase(); var element = context.Messages.FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Messages.Remove(element); context.SaveChanges(); return element.GetViewModel; } return null; } public MessageViewModel? GetElement(MessageSearchModel model) { if (!model.Id.HasValue) { return null; } using var context = new ForumDatabase(); return context.Messages .Include(x => x.User) .Include(x => x.Topic) .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id).GetViewModel; } public List GetFilteredList(MessageSearchModel model) { using var context = new ForumDatabase(); return context.Messages .Include(x => x.User) .Include(x => x.Topic) .Select(x => x.GetViewModel) .ToList(); } public List GetFullList() { using var context = new ForumDatabase(); return context.Messages .Include(x => x.User) .Include(x => x.Topic) .Select(x => x.GetViewModel) .ToList(); } public MessageViewModel? Insert(MessageBindingModel model) { var newMessage = Message.Create(model); if (newMessage == null) { return null; } using var context = new ForumDatabase(); context.Messages.Add(newMessage); context.SaveChanges(); return newMessage.GetViewModel; } public MessageViewModel? Update(MessageBindingModel model) { using var context = new ForumDatabase(); var component = context.Messages.FirstOrDefault(x => x.Id == model.Id); if (component == null) { return null; } component.Update(model); context.SaveChanges(); return component.GetViewModel; } } }