using DressAtelierContracts.BindingModels; using DressAtelierContracts.SearchModels; using DressAtelierContracts.StorageContracts; using DressAtelierContracts.ViewModels; using DressAtelierListImplement.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DressAtelierListImplement.Implements { public class AtelierStorage : IAtelierStorage { private readonly DataListSingleton _source; public AtelierStorage() { _source = DataListSingleton.GetInstance(); } public List GetFullList() { var result = new List(); foreach (var atelier in _source.Ateliers) { result.Add(atelier.GetViewModel); } return result; } public List GetFilteredList(AtelierSearchModel model) { var result = new List(); if(string.IsNullOrEmpty(model.Name)) { return result; } var specificAteliers = _source.Ateliers.Where(atelier => atelier.Name.Equals(model.Name)); if(specificAteliers.Any()) { result.Add(specificAteliers.ToArray()[0].GetViewModel); } return result; } public AtelierViewModel? GetElement(AtelierSearchModel model) { if(string.IsNullOrEmpty(model.Name) && !model.ID.HasValue) { return null; } if (_source.Ateliers.Where(atelier => (!string.IsNullOrEmpty(model.Name) && atelier.Name.Equals(model.Name)) || (model.ID.HasValue && atelier.ID == model.ID)).Any()) { return _source.Ateliers.Where(atelier => (!string.IsNullOrEmpty(model.Name) && atelier.Name.Equals(model.Name)) || (model.ID.HasValue && atelier.ID == model.ID)).ToArray()[0].GetViewModel; } return null; } public AtelierViewModel? Insert(AtelierBindingModel model) { model.ID = _source.Ateliers.Count + 1; var newAtelier = Atelier.Create(model); if(newAtelier == null) { return null; } _source.Ateliers.Add(newAtelier); return newAtelier.GetViewModel; } public AtelierViewModel? Update(AtelierBindingModel model) { if (_source.Ateliers.Where(atelier => atelier.ID == model.ID).Any()) { _source.Ateliers.Where(atelier => atelier.ID == model.ID).ToArray()[0].Update(model); return _source.Ateliers.Where(atelier => atelier.ID == model.ID).ToArray()[0].GetViewModel; } return null; } public AtelierViewModel? Delete(AtelierBindingModel model) { for (int i = 0; i < _source.Ateliers.Count; ++i) { if (_source.Ateliers[i].ID == model.ID) { var atelier = _source.Ateliers[i]; _source.Ateliers.RemoveAt(i); return atelier.GetViewModel; } } return null; } } }