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 SubclassRepository : BaseRepository, ISubclassRepository { private readonly Dictionary classes = new Dictionary(); private readonly string SUBCLASSES = "SubClasses.xml"; public SubclassRepository(ISettingsService settingsService, RepositoryCache cache, ILogger logger) : base(settingsService, cache, logger) { EnsureFileExists(SUBCLASSES); classes.Add(ClassIds.Activa, "Aktiven"); classes.Add(ClassIds.Passiva, "Passiven"); classes.Add(ClassIds.Income, "Einnahmen"); classes.Add(ClassIds.Expenses, "Ausgaben"); } /// /// Load subclasses /// public List GetSubClassList() => LoadList(SUBCLASSES); /// /// Save a subclass (insert/update) /// public void SaveSubClass(SubClass subClass) { var subclasses = GetSubClassList(); var idx = subclasses.FindIndex(s => s.Id == subClass.Id); if (idx >= 0) { subclasses[idx] = subClass; } else { subClass.Id = Guid.NewGuid().ToString(); subclasses.Add(subClass); } Save(subclasses, SUBCLASSES); } /// /// Get subclass /// public SubClass GetSubClass(string id) { var subclasses = GetSubClassList(); return subclasses.FirstOrDefault(t => t.Id == id); } public void DeleteSubClass(string id) { var subclasses = GetSubClassList(); subclasses.RemoveAll(t => t.Id == id); Save(subclasses, SUBCLASSES); } public Dictionary GetClasses() { return classes; } public string GetClass(int classId) { return classes[classId]; } } }