126 lines
3.2 KiB
C#
Raw Normal View History

2023-03-19 12:11:25 +04:00
using AbstractShopContracts.BindingModels;
using AbstractShopContracts.SearchModels;
using AbstractShopContracts.StoragesContracts;
using AbstractShopContracts.ViewModels;
using AbstractShopListImplement.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AbstractShopListImplement.Implements
{
public class FoodStorage : IFoodStorage
{
private readonly DataListSingleton _source;
public FoodStorage()
{
_source = DataListSingleton.GetInstance();
}
public List<FoodViewModel> GetFullList()
{
var result = new List<FoodViewModel>();
foreach (var work in _source.Foods)
{
result.Add(work.GetViewModel);
}
return result;
}
public List<FoodViewModel> GetFilteredList(FoodSearchModel model)
{
var result = new List<FoodViewModel>();
if (string.IsNullOrEmpty(model.FoodName))
{
return result;
}
foreach (var work in _source.Foods)
{
if (work.FoodName.Contains(model.FoodName))
{
result.Add(work.GetViewModel);
}
}
return result;
}
public FoodViewModel? GetElement(FoodSearchModel model)
{
if (string.IsNullOrEmpty(model.FoodName) && !model.Id.HasValue)
{
return null;
}
foreach (var work in _source.Foods)
{
if ((!string.IsNullOrEmpty(model.FoodName) && work.FoodName == model.FoodName) || (model.Id.HasValue && work.Id == model.Id))
{
return work.GetViewModel;
}
}
return null;
}
public FoodViewModel? Insert(FoodBindingModel model)
{
model.Id = 1;
foreach (var work in _source.Foods)
{
if (model.Id <= work.Id)
{
model.Id = work.Id + 1;
}
}
var newWork = Food.Create(model);
if (newWork == null)
{
return null;
}
_source.Foods.Add(newWork);
return newWork.GetViewModel;
}
public FoodViewModel? Update(FoodBindingModel model)
{
foreach (var work in _source.Foods)
{
if (work.Id == model.Id)
{
work.Update(model);
return work.GetViewModel;
}
}
return null;
}
public FoodViewModel? Delete(FoodBindingModel model)
{
for (int i = 0; i < _source.Foods.Count; ++i)
{
if (_source.Foods[i].Id == model.Id)
{
var element = _source.Foods[i];
_source.Foods.RemoveAt(i);
return element.GetViewModel;
}
}
return null;
}
}
}