using BankContracts.BindingModels; using BankContracts.SearchModels; using BankContracts.StoragesContracts; using BankContracts.ViewModels; using BankDataBaseImplement.Models; using Microsoft.EntityFrameworkCore; namespace BankDataBaseImplement.Implemets { public class ClercStorage : IClercStorage { public ClercViewModel? Delete(ClercBindingModel model) { using var context = new BankDataBase(); var element = context.Clercs.FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Clercs.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.Clercs .Include(x => x.Additions) .Include(x => x.Members) .Include(x => x.Conferences) .FirstOrDefault(x => x.Id == model.Id)? .GetViewModel; if (!string.IsNullOrEmpty(model.ClercLogin) && !string.IsNullOrEmpty(model.ClercPassword)) return context.Clercs .Include(x => x.Additions) .Include(x => x.Members) .Include(x => x.Conferences) .FirstOrDefault(x => x.ClercLogin.Equals(model.ClercLogin) && x.ClercPassword.Equals(model.ClercPassword))? .GetViewModel; if (!string.IsNullOrEmpty(model.ClercLogin)) return context.Clercs .Include(x => x.Additions) .Include(x => x.Members) .Include(x => x.Conferences) .FirstOrDefault(x => x.ClercLogin.Equals(model.ClercLogin))? .GetViewModel; return null; } public List<ClercViewModel> GetFilteredList(ClercSearchModel model) { if (string.IsNullOrEmpty(model.ClercFIO)) { return new(); } using var context = new BankDataBase(); return context.Clercs .Include(x => x.Additions) .Include(x => x.Members) .Include(x => x.Conferences) .Where(x => x.ClercLogin.Contains(model.ClercLogin) && x.ClercPassword == model.ClercPassword) .Select(x => x.GetViewModel) .ToList(); } public List<ClercViewModel> GetFullList() { using var context = new BankDataBase(); return context.Clercs .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.Clercs.Add(newOrganiser); context.SaveChanges(); return newOrganiser.GetViewModel; } public ClercViewModel? Update(ClercBindingModel model) { using var context = new BankDataBase(); var organiser = context.Clercs .FirstOrDefault(x => x.Id == model.Id); if (organiser == null) { return null; } organiser.Update(model); context.SaveChanges(); return organiser.GetViewModel; } } }