using BankContracts.BindingModels; using BankContracts.SearchModels; using BankContracts.StoragesContracts; using BankContracts.ViewModels; using BankDataBaseImplement.Models; using Microsoft.EntityFrameworkCore; namespace BankDataBaseImplement.Implemets { public class AdditionsStorage : IAdditionsPlanStorage { public AdditionsViewModel? Delete(AdditionsBindingModel model) { using var context = new BankDataBase(); var element = context.Additions .FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Additions.Remove(element); context.SaveChanges(); return element.GetViewModel; } return null; } public AdditionsViewModel? GetElement(AdditionsSearchModel model) { if (!model.Id.HasValue) { return null; } using var context = new BankDataBase(); return context.Additions .Include(x => x.Members) .ThenInclude(x => x.Member) .ThenInclude(x => x.ConferenceMember) .ThenInclude(x => x.Conference) .Include(x => x.Rooms) .Include(x => x.Clerc) .FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))? .GetViewModel; } public List GetFilteredList(AdditionsSearchModel model) { if (string.IsNullOrEmpty(model.AdditionsName)) { return new(); } using var context = new BankDataBase(); return context.Additions .Include(x => x.Members) .ThenInclude(x => x.Member) .ThenInclude(x => x.ConferenceMember) .ThenInclude(x => x.Conference) .Include(x => x.Rooms) .Include(x => x.Clerc) .Where(x => x.AdditionsName.Contains(model.AdditionsName)) .Select(x => x.GetViewModel) .ToList(); } public List GetFullList() { using var context = new BankDataBase(); return context.Additions .Include(x => x.Members) .ThenInclude(x => x.Member) .ThenInclude(x => x.ConferenceMember) .ThenInclude(x => x.Conference) .Include(x => x.Rooms) .Include(x => x.Clerc) .Select(x => x.GetViewModel) .ToList(); } public AdditionsViewModel? Insert(AdditionsBindingModel model) { using var context = new BankDataBase(); var newMealPlan = Additions.Create(context,model); if (newMealPlan == null) { return null; } context.Additions.Add(newMealPlan); context.SaveChanges(); return newMealPlan.GetViewModel; } public AdditionsViewModel? Update(AdditionsBindingModel model) { using var context = new BankDataBase(); var mealPlan = context.Additions.FirstOrDefault(x => x.Id == model.Id); if (mealPlan == null) { return null; } mealPlan.Update(model); context.SaveChanges(); return mealPlan.GetViewModel; } } }