using AutoDispathingWork.Utils; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; using WorkerService1.Dto.Configuration; namespace WorkerService1.Services; public class SettingServices { private readonly IOptionsMonitor _optionsMonitor; public SettingServices(IOptionsMonitor optionsMonitor) { _optionsMonitor = optionsMonitor; } public void Reset() { SettingClientOptions(_optionsMonitor.CurrentValue); } public async Task GetClientOptions() { var scope = StaticServiceProvider.Current.CreateScope(); var _db = scope.ServiceProvider.GetService(); 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(); 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; } }