AutoDispatching/AutoDispathingWork/Services/SettingServices.cs
2025-11-05 20:52:03 +08:00

60 lines
1.6 KiB
C#

using AutoDispathingWork.Utils;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using WorkerService1.Dto.Configuration;
namespace WorkerService1.Services;
public class SettingServices
{
private readonly IOptionsMonitor<ClientOptions> _optionsMonitor;
public SettingServices(IOptionsMonitor<ClientOptions> optionsMonitor)
{
_optionsMonitor = optionsMonitor;
}
public void Reset()
{
SettingClientOptions(_optionsMonitor.CurrentValue);
}
public async Task<ClientOptions> GetClientOptions()
{
var scope = StaticServiceProvider.Current.CreateScope();
var _db = scope.ServiceProvider.GetService<ApplicationDbContext>();
var clientOptions = _db.ClientOptions;
var dbOptions = await clientOptions.FirstOrDefaultAsync();
if (dbOptions != null)
{
await _db.DisposeAsync();
scope.Dispose();
return dbOptions;
}
await _db.DisposeAsync();
scope.Dispose();
return _optionsMonitor.CurrentValue;
}
public ClientOptions SettingClientOptions(ClientOptions options)
{
var scope = StaticServiceProvider.Current.CreateScope();
var _db = scope.ServiceProvider.GetService<ApplicationDbContext>();
var clientOptions = _db.ClientOptions;
var dbOptions = clientOptions.FirstOrDefault();
if (dbOptions != null)
{
clientOptions.Remove(dbOptions);
_db.SaveChanges();
}
clientOptions.Add(options);
_db.SaveChanges();
_db.Dispose();
scope.Dispose();
return options;
}
}