using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; 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); } public Task> GetSplitPredefinitionListAsync() => LoadListAsync(SPLIT_PREDEFINITION); public async Task SaveSplitPredefinitionAsync(SplitPredefinition splitPredefinition) { var definitions = await GetSplitPredefinitionListAsync(); var idx = definitions.FindIndex(d => d.Id == splitPredefinition.Id); if (idx >= 0) { definitions[idx] = splitPredefinition; } else { splitPredefinition.Id = Guid.NewGuid().ToString(); definitions.Add(splitPredefinition); } await SaveAsync(definitions, SPLIT_PREDEFINITION); } } }