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 BookingRuleRepository : BaseRepository, IBookingRuleRepository { private readonly string BOOKING_RULES = "BookingRules.xml"; public BookingRuleRepository(ISettingsService settingsService, RepositoryCache cache, ILogger logger) : base(settingsService, cache, logger) { EnsureFileExists(BOOKING_RULES); } public Task> GetBookingRuleListAsync() => LoadListAsync(BOOKING_RULES); public async Task SaveBookingRuleAsync(BookingRule bookingRule) { var bookingRules = await GetBookingRuleListAsync(); var idx = bookingRules.FindIndex(r => r.Id == bookingRule.Id); if (idx >= 0) { bookingRules[idx] = bookingRule; } else { bookingRule.Id = Guid.NewGuid().ToString(); bookingRules.Add(bookingRule); } await SaveAsync(bookingRules, BOOKING_RULES); } public async Task GetBookingRuleAsync(string id) { var bookingRules = await GetBookingRuleListAsync(); return bookingRules.FirstOrDefault(t => t.Id == id); } public async Task DeleteBookingRuleAsync(string id) { var bookingRules = await GetBookingRuleListAsync(); bookingRules.RemoveAll(t => t.Id == id); await SaveAsync(bookingRules, BOOKING_RULES); } } }