using System; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Logging; using Schaad.Accounting.Interfaces; using Schaad.Accounting.Models; namespace Schaad.Accounting.Repositories { public class SplitPredefinitionRepository : BaseRepository, ISplitPredefinitionRepository { private readonly string SPLIT_PREDEFINITION = "SplitPredefinitions.xml"; public SplitPredefinitionRepository(ISettingsService settingsService, RepositoryCache cache, ILogger logger) : base(settingsService, cache, logger) { EnsureFileExists(SPLIT_PREDEFINITION); } /// /// Load split predefinitions /// public List GetSplitPredefinitionList() => LoadList(SPLIT_PREDEFINITION); /// /// Save a split predefinition (insert/update) /// public void SaveSplitPredefinition(SplitPredefinition splitPredefinition) { var definitions = GetSplitPredefinitionList(); var existingDefinition = definitions.FirstOrDefault(a => a.Id == splitPredefinition.Id); if (existingDefinition == null) { existingDefinition = new SplitPredefinition(); definitions.Add(existingDefinition); splitPredefinition.Id = Guid.NewGuid().ToString(); } splitPredefinition.Copy(existingDefinition); Save(definitions, SPLIT_PREDEFINITION); } } }