85 lines
2.7 KiB
C#

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<WorkerViewModel> GetFullList()
{
using var context = new LawFirmDBContext();
return context.Workers
.Select(x => x.GetViewModel)
.ToList();
}
public List<WorkerViewModel> 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;
}
}
}