AutoDispatching/AutoDispathingWork/Services/SettingServices.cs
2024-08-10 23:43:46 +08:00

54 lines
1.4 KiB
C#

using AutoDispathingWork.Utils;
using LiteDB;
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 ClientOptions GetClientOptions()
{
using var scope = StaticServiceProvider.Current.CreateScope();
var _db = scope.ServiceProvider.GetService<ApplicationDbContext>();
var clientOptions = _db.ClientOptions;
var dbOptions = clientOptions.FirstOrDefault();
if (dbOptions != null)
{
return dbOptions;
}
return _optionsMonitor.CurrentValue;
}
public ClientOptions SettingClientOptions(ClientOptions options)
{
using 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();
return options;
}
}