using BarContracts.BindingModels; using BarContracts.SearchModels; using BarContracts.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using BarContracts.StoragesContracts; using BarFileImplement.Models; namespace BarFileImplement.Implements { public class CocktailStorage : ICocktailStorage { private readonly DataFileSingleton source; public CocktailStorage() { source = DataFileSingleton.GetInstance(); } public List GetFullList() { return source.Cocktails.Select(x => x.GetViewModel).ToList(); } public List GetFilteredList(CocktailSearchModel model) { return source.Cocktails.Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); } public CocktailViewModel? GetElement(CocktailSearchModel model) { if (!model.Id.HasValue) { return null; } return source.Cocktails.FirstOrDefault(x => (!string.IsNullOrEmpty(model.CocktailName) && x.CocktailName == model.CocktailName) || (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; } public CocktailViewModel? Insert(CocktailBindingModel model) { model.Id = source.Cocktails.Count > 0 ? source.Cocktails.Max(x => x.Id) + 1 : 1; var newCocktail = Cocktail.Create(model); if (newCocktail == null) { return null; } source.Cocktails.Add(newCocktail); source.SaveCocktails(); return newCocktail.GetViewModel; } public CocktailViewModel? Update(CocktailBindingModel model) { var component = source.Cocktails.FirstOrDefault(x => x.Id == model.Id); if (component == null) { return null; } component.Update(model); source.SaveCocktails(); return component.GetViewModel; } public CocktailViewModel? Delete(CocktailBindingModel model) { var component = source.Cocktails.FirstOrDefault(x => x.Id == model.Id); if (component == null) { return null; } source.Cocktails.Remove(component); source.SaveCocktails(); return component.GetViewModel; } } }