98 lines
3.0 KiB
C#
98 lines
3.0 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 SnackStorage : ISnackStorage
|
|
{
|
|
private readonly DataListSingleton _source;
|
|
|
|
public SnackStorage() {
|
|
_source = DataListSingleton.GetInstance();
|
|
}
|
|
|
|
public SnackViewModel? Delete(SnackBindingModel model)
|
|
{
|
|
for (int i = 0; i < _source.Snacks.Count; ++i) {
|
|
if (_source.Snacks[i].ID == model.ID) {
|
|
var element = _source.Snacks[i];
|
|
_source.Snacks.RemoveAt(i);
|
|
return element.GetViewModel;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public SnackViewModel? GetElement(SnackSearchModel model)
|
|
{
|
|
if (string.IsNullOrEmpty(model.ProductName) && !model.ID.HasValue) {
|
|
return null;
|
|
}
|
|
foreach (var product in _source.Snacks) {
|
|
if ((!string.IsNullOrEmpty(model.ProductName) &&
|
|
product.ProductName == model.ProductName) ||
|
|
(model.ID.HasValue && product.ID == model.ID)) {
|
|
return product.GetViewModel;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public List<SnackViewModel> GetFilteredList(SnackSearchModel model)
|
|
{
|
|
var result = new List<SnackViewModel>();
|
|
if (string.IsNullOrEmpty(model.ProductName)) {
|
|
return result;
|
|
}
|
|
foreach (var product in _source.Snacks) {
|
|
if (product.ProductName.Contains(model.ProductName)) {
|
|
result.Add(product.GetViewModel);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public List<SnackViewModel> GetFullList()
|
|
{
|
|
var result = new List<SnackViewModel>();
|
|
foreach (var product in _source.Snacks) {
|
|
result.Add(product.GetViewModel);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public SnackViewModel? Insert(SnackBindingModel model)
|
|
{
|
|
model.ID = 1;
|
|
foreach (var product in _source.Snacks) {
|
|
if (model.ID <= product.ID) {
|
|
model.ID = product.ID + 1;
|
|
}
|
|
}
|
|
var newProduct = Snack.Create(model);
|
|
if (newProduct == null) return null;
|
|
_source.Snacks.Add(newProduct);
|
|
return newProduct.GetViewModel;
|
|
}
|
|
|
|
public SnackViewModel? Update(SnackBindingModel model)
|
|
{
|
|
foreach (var product in _source.Snacks) {
|
|
if (product.ID == model.ID) {
|
|
product.Update(model);
|
|
return product.GetViewModel;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|