Saving AdminSettings to a Json File.

This commit is contained in:
2025-12-07 12:17:18 +01:00
parent 0b541373c2
commit decb170e7b
6 changed files with 65 additions and 109 deletions

View File

@@ -1,6 +1,9 @@
using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using System.Text.Json;
using SZUAbsolventenverein.Module.AdminModules.Models;
using Oqtane.Modules;
@@ -31,25 +34,58 @@ namespace SZUAbsolventenverein.Module.AdminModules.Repository
/// </summary>
public class AdminSettingsRepository : IAdminSettingsRepository, ITransientService
{
private readonly IDbContextFactory<AdminModulesContext> _factory;
public AdminSettingsRepository(IDbContextFactory<AdminModulesContext> factory)
public AdminSettingsRepository()
{
_factory = factory;
}
public AdminSetting GetAdminSetting()
{
using var db = _factory.CreateDbContext();
return db.AdminSettings.First();
return AdminSettingsExtensions.LoadSettings();
}
public AdminSetting SetAdminSettings(AdminSetting adminSetting)
{
using var db = _factory.CreateDbContext();
db.Entry(adminSetting).State = EntityState.Modified;
db.SaveChanges();
return adminSetting.SaveChanges();
}
}
/// <summary>
/// Extension methods for saving and loading admin settings to/from a JSON file.
/// </summary>
public static class AdminSettingsExtensions
{
/// <summary>
/// Path to the JSON file where admin settings are stored.
/// </summary>
private static string path = "AdminSettings.json";
/// <summary>
/// Saves the adminSettingsObject to a JSON file.
/// </summary>
/// <param name="adminSetting">Settings to save</param>
/// <returns>The same AdminSettings object for chaining of Operations</returns>
public static AdminSetting SaveChanges(this AdminSetting adminSetting)
{
string res = JsonSerializer.Serialize(adminSetting);
File.WriteAllText(path, res);
return adminSetting;
}
/// <summary>
/// Loads the admin settings from the JSON file. If the file does not exist, returns a new AdminSetting object with default (0) values.
/// </summary>
/// <returns></returns>
public static AdminSetting LoadSettings()
{
if (File.Exists(path))
{
string json = File.ReadAllText(path);
return JsonSerializer.Deserialize<AdminSetting>(json);
}
return new AdminSetting();
}
}
}