61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using AutoDispathingWork.Utils;
|
|
using LiteDB;
|
|
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;
|
|
}
|
|
} |