Saving AdminSettings to a Json File.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user