Files
Module.AdminModules/Server/Repository/AdminSettingsRepository.cs
Konstantin Hintermayer a64bdacbf5 Bulk: Commit: AdminSettings Module
Saving to DB is done, Reading from DB to UI is done. Loading at startup is still missing...
2025-12-04 07:36:01 +01:00

56 lines
2.0 KiB
C#

using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Collections.Generic;
using SZUAbsolventenverein.Module.AdminModules.Models;
using Oqtane.Modules;
namespace SZUAbsolventenverein.Module.AdminModules.Repository
{
/// <summary>
/// Repository to manage admin settings in the database.
/// </summary>
public interface IAdminSettingsRepository
{
/// <summary>
/// Retrieves the administrative settings entry from the Database.
/// </summary>
/// <returns>An <see cref="Models.AdminSetting"/> object containing the settings for the specified module. Returns <see
/// langword="null"/> if the module is not found.</returns>
Models.AdminSetting GetAdminSetting();
/// <summary>
/// Updates the administrative settings with the specified values.
/// </summary>
/// <param name="adminSetting">The new administrative settings to apply. Cannot be null.</param>
/// <returns>The updated <see cref="Models.AdminSetting"/> object reflecting the applied changes.</returns>
Models.AdminSetting SetAdminSettings(Models.AdminSetting adminSetting);
}
/// <summary>
/// Implementation of the <see cref="IAdminSettingsRepository"/> interface for managing admin settings in the database.
/// </summary>
public class AdminSettingsRepository : IAdminSettingsRepository, ITransientService
{
private readonly IDbContextFactory<AdminModulesContext> _factory;
public AdminSettingsRepository(IDbContextFactory<AdminModulesContext> factory)
{
_factory = factory;
}
public AdminSetting GetAdminSetting()
{
using var db = _factory.CreateDbContext();
return db.AdminSettings.First();
}
public AdminSetting SetAdminSettings(AdminSetting adminSetting)
{
using var db = _factory.CreateDbContext();
db.Entry(adminSetting).State = EntityState.Modified;
db.SaveChanges();
return adminSetting;
}
}
}