This commit is contained in:
Вячеслав Иванов 2024-04-03 10:29:45 +04:00
parent 26dda0e2b2
commit 9ddff379f8

View File

@ -6,73 +6,73 @@ using PizzeriaDatabaseImplement.Models;
namespace PizzeriaDatabaseImplement.Implements namespace PizzeriaDatabaseImplement.Implements
{ {
public class ClientStorage : IClientStorage public class ClientStorage : IClientStorage
{ {
public List<ClientViewModel> GetFullList() public List<ClientViewModel> GetFullList()
{ {
using var context = new PizzeriaDatabase(); using var context = new PizzeriaDatabase();
return context.Clients.Select(x => x.GetViewModel).ToList(); return context.Clients.Select(x => x.GetViewModel).ToList();
} }
public List<ClientViewModel> GetFilteredList(ClientSearchModel model) public List<ClientViewModel> GetFilteredList(ClientSearchModel model)
{ {
if (string.IsNullOrEmpty(model.ClientFIO)) if (string.IsNullOrEmpty(model.ClientFIO))
{ {
return new(); return new();
} }
using var context = new PizzeriaDatabase(); using var context = new PizzeriaDatabase();
return context.Clients.Where(x => x.ClientFIO.Contains(model.ClientFIO)).Select(x => x.GetViewModel).ToList(); return context.Clients.Where(x => x.ClientFIO.Contains(model.ClientFIO)).Select(x => x.GetViewModel).ToList();
} }
public ClientViewModel? GetElement(ClientSearchModel model) public ClientViewModel? GetElement(ClientSearchModel model)
{ {
if (string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password) && !model.Id.HasValue) if (string.IsNullOrEmpty(model.Email) && string.IsNullOrEmpty(model.Password) && !model.Id.HasValue)
{ {
return null; return null;
} }
using var context = new PizzeriaDatabase(); using var context = new PizzeriaDatabase();
return context.Clients.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id) || return context.Clients.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id) ||
(!string.IsNullOrEmpty(model.ClientFIO) && x.ClientFIO == model.ClientFIO) || (!string.IsNullOrEmpty(model.ClientFIO) && x.ClientFIO == model.ClientFIO) ||
(!string.IsNullOrEmpty(model.Email) && x.Email == model.Email && (string.IsNullOrEmpty(model.Password) || x.Password == model.Password)))?.GetViewModel; (!string.IsNullOrEmpty(model.Email) && x.Email == model.Email && (string.IsNullOrEmpty(model.Password) || x.Password == model.Password)))?.GetViewModel;
} }
public ClientViewModel? Insert(ClientBindingModel model) public ClientViewModel? Insert(ClientBindingModel model)
{ {
var newComponent = Client.Create(model); var newComponent = Client.Create(model);
if (newComponent == null) if (newComponent == null)
{ {
return null; return null;
} }
using var context = new PizzeriaDatabase(); using var context = new PizzeriaDatabase();
context.Clients.Add(newComponent); context.Clients.Add(newComponent);
context.SaveChanges(); context.SaveChanges();
return newComponent.GetViewModel; return newComponent.GetViewModel;
} }
public ClientViewModel? Update(ClientBindingModel model) public ClientViewModel? Update(ClientBindingModel model)
{ {
using var context = new PizzeriaDatabase(); using var context = new PizzeriaDatabase();
var component = context.Clients.FirstOrDefault(x => x.Id == model.Id); var component = context.Clients.FirstOrDefault(x => x.Id == model.Id);
if (component == null) if (component == null)
{ {
return null; return null;
} }
component.Update(model); component.Update(model);
context.SaveChanges(); context.SaveChanges();
return component.GetViewModel; return component.GetViewModel;
} }
public ClientViewModel? Delete(ClientBindingModel model) public ClientViewModel? Delete(ClientBindingModel model)
{ {
using var context = new PizzeriaDatabase(); using var context = new PizzeriaDatabase();
var element = context.Clients.FirstOrDefault(rec => rec.Id == model.Id); var element = context.Clients.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null) if (element != null)
{ {
context.Clients.Remove(element); context.Clients.Remove(element);
context.SaveChanges(); context.SaveChanges();
return element.GetViewModel; return element.GetViewModel;
} }
return null; return null;
} }
} }
} }