using BankContracts.BindingModels; using BankContracts.SearchModels; using BankContracts.StoragesContracts; using BankContracts.ViewModels; using BankDataBaseImplement.Models; using Microsoft.EntityFrameworkCore; namespace BankDataBaseImplement.Implemets { public class OrganiserStorage : IClercStorage { public ClercViewModel? Delete(ClercBindingModel model) { using var context = new BankDataBase(); var element = context.Organisers.FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Organisers.Remove(element); context.SaveChanges(); return element.GetViewModel; } return null; } public ClercViewModel? GetElement(ClercSearchModel model) { using var context = new BankDataBase(); if (model.Id.HasValue) return context.Organisers .Include(x => x.MealPlans) .Include(x => x.Members) .Include(x => x.Conferences) .FirstOrDefault(x => x.Id == model.Id)? .GetViewModel; if (!string.IsNullOrEmpty(model.OrganiserLogin) && !string.IsNullOrEmpty(model.OrganiserPassword)) return context.Organisers .Include(x => x.MealPlans) .Include(x => x.Members) .Include(x => x.Conferences) .FirstOrDefault(x => x.OrganiserLogin.Equals(model.OrganiserLogin) && x.OrganiserPassword.Equals(model.OrganiserPassword))? .GetViewModel; if (!string.IsNullOrEmpty(model.OrganiserLogin)) return context.Organisers .Include(x => x.MealPlans) .Include(x => x.Members) .Include(x => x.Conferences) .FirstOrDefault(x => x.OrganiserLogin.Equals(model.OrganiserLogin))? .GetViewModel; return null; } public List GetFilteredList(ClercSearchModel model) { if (string.IsNullOrEmpty(model.OrganiserFIO)) { return new(); } using var context = new BankDataBase(); return context.Organisers .Include(x => x.MealPlans) .Include(x => x.Members) .Include(x => x.Conferences) .Where(x => x.OrganiserLogin.Contains(model.OrganiserLogin) && x.OrganiserPassword == model.OrganiserPassword) .Select(x => x.GetViewModel) .ToList(); } public List GetFullList() { using var context = new BankDataBase(); return context.Organisers .Select(x => x.GetViewModel) .ToList(); } public ClercViewModel? Insert(ClercBindingModel model) { var newOrganiser = Clerc.Create(model); if (newOrganiser == null) { return null; } using var context = new BankDataBase(); context.Organisers.Add(newOrganiser); context.SaveChanges(); return newOrganiser.GetViewModel; } public ClercViewModel? Update(ClercBindingModel model) { using var context = new BankDataBase(); var organiser = context.Organisers .FirstOrDefault(x => x.Id == model.Id); if (organiser == null) { return null; } organiser.Update(model); context.SaveChanges(); return organiser.GetViewModel; } } }