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 BookingTextRepository : BaseRepository, IBookingTextRepository { private readonly string BOOKING_TEXTS = "BookingTexts.xml"; public BookingTextRepository(ISettingsService settingsService, RepositoryCache cache, ILogger logger) : base(settingsService, cache, logger) { EnsureFileExists(BOOKING_TEXTS); } public Task> GetBookingTextListAsync() => LoadListAsync(BOOKING_TEXTS); public async Task SaveBookingTextAsync(BookingText bookingText) { var bookingTexts = await GetBookingTextListAsync(); var idx = bookingTexts.FindIndex(t => t.Id == bookingText.Id); if (idx >= 0) { bookingTexts[idx] = bookingText; } else { bookingText.Id = Guid.NewGuid().ToString(); bookingTexts.Add(bookingText); } await SaveAsync(bookingTexts, BOOKING_TEXTS); } public async Task GetBookingTextAsync(string id) { var bookingTexts = await GetBookingTextListAsync(); return bookingTexts.FirstOrDefault(t => t.Id == id); } public async Task DeleteBookingTextAsync(string id) { var bookingTexts = await GetBookingTextListAsync(); bookingTexts.RemoveAll(t => t.Id == id); await SaveAsync(bookingTexts, BOOKING_TEXTS); } } }