using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Collections.Generic;
using SZUAbsolventenverein.Module.AdminModules.Models;
using Oqtane.Modules;
namespace SZUAbsolventenverein.Module.AdminModules.Repository
{
///
/// Repository to manage admin settings in the database.
///
public interface IAdminSettingsRepository
{
///
/// Retrieves the administrative settings entry from the Database.
///
/// An object containing the settings for the specified module. Returns if the module is not found.
Models.AdminSetting GetAdminSetting();
///
/// Updates the administrative settings with the specified values.
///
/// The new administrative settings to apply. Cannot be null.
/// The updated object reflecting the applied changes.
Models.AdminSetting SetAdminSettings(Models.AdminSetting adminSetting);
}
///
/// Implementation of the interface for managing admin settings in the database.
///
public class AdminSettingsRepository : IAdminSettingsRepository, ITransientService
{
private readonly IDbContextFactory _factory;
public AdminSettingsRepository(IDbContextFactory 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;
}
}
}