using LawFirmContracts.BindingModels; using LawFirmContracts.SearchModels; using LawFirmContracts.StorageContracts; using LawFirmContracts.ViewModels; using LawFirmDatabase.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LawFirmDatabase.Implements { public class WorkerStorage : IWorkerStorage { public List GetFullList() { using var context = new LawFirmDBContext(); return context.Workers .Select(x => x.GetViewModel) .ToList(); } public List GetFilteredList(WorkerSearchModel model) { using var context = new LawFirmDBContext(); return context.Workers .Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); } public WorkerViewModel? GetElement(WorkerSearchModel model) { if (model == null) { return null; } using var context = new LawFirmDBContext(); if (model.Id.HasValue) { return context.Workers.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; } //другие варианты поиска не реализуются (заглушка для роли Worker) return null; } public WorkerViewModel? Insert(WorkerBindingModel model) { using var context = new LawFirmDBContext(); var newWorker = Worker.Create(model); if (newWorker != null) { context.Workers.Add(newWorker); context.SaveChanges(); return newWorker.GetViewModel; } return null; } public WorkerViewModel? Update(WorkerBindingModel model) { using var context = new LawFirmDBContext(); var worker = context.Workers .FirstOrDefault(x => x.Id == model.Id); if (worker == null) { return null; } worker.Update(model); context.SaveChanges(); return worker.GetViewModel; } public WorkerViewModel? Delete(WorkerBindingModel model) { using var context = new LawFirmDBContext(); var worker = context.Workers .FirstOrDefault(x => x.Id == model.Id); if (worker == null) { return null; } context.Workers.Remove(worker); context.SaveChanges(); return worker.GetViewModel; } } }