Илья Федотов 08017d171e Base.01
2024-05-13 16:49:39 +04:00

93 lines
2.3 KiB
C#

using DinerContracts.BindingModels;
using DinerContracts.SearchModels;
using DinerContracts.StoragesContracts;
using DinerContracts.ViewModels;
using DinerListImplement.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DinerListImplement.Implements {
public class ClientStorage : IClientStorage {
private readonly DataListSingleton _source;
public ClientStorage() {
_source = DataListSingleton.GetInstance();
}
public ClientViewModel? Insert(ClientBindingModel model) {
model.ID = 1;
foreach (var client in _source.Clients) {
if (model.ID <= client.ID) {
model.ID = client.ID + 1;
}
}
var newClient = Client.Create(model);
if (newClient == null) {
return null;
}
_source.Clients.Add(newClient);
return newClient.GetViewModel;
}
public ClientViewModel? Update(ClientBindingModel model) {
foreach (var client in _source.Clients) {
if (client.ID == model.ID) {
client.Update(model);
return client.GetViewModel;
}
}
return null;
}
public ClientViewModel? Delete(ClientBindingModel model) {
for (int i = 0; i < _source.Clients.Count; ++i) {
if (_source.Clients[i].ID == model.ID) {
var element = _source.Clients[i];
_source.Clients.RemoveAt(i);
return element.GetViewModel;
}
}
return null;
}
public ClientViewModel? GetElement(ClientSearchModel model) {
if (string.IsNullOrEmpty(model.ClientFIO) && !model.ID.HasValue) {
return null;
}
foreach (var client in _source.Clients) {
if ((!string.IsNullOrEmpty(model.ClientFIO) &&
client.ClientFIO == model.ClientFIO) ||
(model.ID.HasValue && client.ID == model.ID)) {
return client.GetViewModel;
}
}
return null;
}
public List<ClientViewModel> GetFilteredList(ClientSearchModel model) {
var result = new List<ClientViewModel>();
if (string.IsNullOrEmpty(model.ClientFIO)) {
return result;
}
foreach (var client in _source.Clients) {
if (client.ClientFIO.Contains(model.ClientFIO)) {
result.Add(client.GetViewModel);
}
}
return result;
}
public List<ClientViewModel> GetFullList() {
var result = new List<ClientViewModel>();
foreach (var client in _source.Clients) {
result.Add(client.GetViewModel);
}
return result;
}
}
}