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 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); } /// /// Load booking texts /// public List GetBookingTextList() => LoadList(BOOKING_TEXTS); /// /// Save a booking text (insert/update) /// public void SaveBookingText(BookingText bookingText) { var bookingTexts = GetBookingTextList(); var existingText = bookingTexts.FirstOrDefault(a => a.Id == bookingText.Id); if (existingText == null) { existingText = new BookingText(); bookingTexts.Add(existingText); bookingText.Id = Guid.NewGuid().ToString(); } bookingText.Copy(existingText); Save(bookingTexts, BOOKING_TEXTS); } /// /// Get booking text /// public BookingText GetBookingText(string id) { var bookingTexts = GetBookingTextList(); return bookingTexts.FirstOrDefault(t => t.Id == id); } /// /// Delete booking text /// public void DeleteBookingText(string id) { var bookingTexts = GetBookingTextList(); bookingTexts.RemoveAll(t => t.Id == id); Save(bookingTexts, BOOKING_TEXTS); } } }