using Microsoft.EntityFrameworkCore; using eprintServer.Data; using eprintServer.Entities; using eprintServer.Enums; namespace eprintServer.Services; public class ReportSettingsService { private readonly DataContext _context; public ReportSettingsService(DataContext context) { _context = context; } public async Task GetOrInitializeSettingsAsync() { var settings = await _context.ReportSettings.FirstOrDefaultAsync(); if (settings == null) { // Get default admin emails var adminEmails = await _context.Users .Where(u => u.Role == RoleEnum.ROLE_ADMIN && !u.Deleted && u.Active) .Select(u => u.Email) .ToListAsync(); settings = new ReportSettings { AdminEmailList = adminEmails, DailyReports = true, WeeklyReports = true, MonthlyReports = true, YearlyReports = true }; _context.ReportSettings.Add(settings); await _context.SaveChangesAsync(); } return settings; } public async Task UpdateSettingsAsync(ReportSettings updateReq) { var existing = await GetOrInitializeSettingsAsync(); existing.DailyReports = updateReq.DailyReports; existing.WeeklyReports = updateReq.WeeklyReports; existing.MonthlyReports = updateReq.MonthlyReports; existing.YearlyReports = updateReq.YearlyReports; // Look at the list inside the updateReq object if (updateReq.AdminEmailList != null) { // Clear and replace with the new values from the JSON body existing.AdminEmailList = new List(updateReq.AdminEmailList); } await _context.SaveChangesAsync(); return existing; } }