mirror of
https://github.com/MAKS-IT-COM/maksit-certs-ui.git
synced 2026-02-14 01:27:19 +01:00
65 lines
2.0 KiB
C#
65 lines
2.0 KiB
C#
using Microsoft.Extensions.Options;
|
|
using MaksIT.Webapi.Domain;
|
|
using MaksIT.Webapi.Services;
|
|
|
|
|
|
namespace MaksIT.Webapi.BackgroundServices {
|
|
|
|
public class Initialization : BackgroundService {
|
|
private readonly IServiceProvider _serviceProvider;
|
|
private readonly Configuration _appSettings;
|
|
private readonly ISettingsService _settingsService;
|
|
|
|
public Initialization(
|
|
IOptions<Configuration> appSettings,
|
|
IServiceProvider serviceProvider,
|
|
ISettingsService settingsService
|
|
) {
|
|
_appSettings = appSettings.Value;
|
|
_serviceProvider = serviceProvider;
|
|
_settingsService = settingsService;
|
|
}
|
|
|
|
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
|
|
// using var scope = _serviceProvider.CreateScope();
|
|
// TODO: Add your user initialization logic here.
|
|
// Example:
|
|
// var userService = scope.ServiceProvider.GetRequiredService<IUserService>();
|
|
// await userService.InitializeUsersAsync();
|
|
|
|
var dataDir = Path.Combine(Path.DirectorySeparatorChar.ToString(), "data");
|
|
var settingsPath = Path.Combine(dataDir, "settings.json");
|
|
|
|
// Ensure the data directory exists
|
|
if (!Directory.Exists(dataDir)) {
|
|
Directory.CreateDirectory(dataDir);
|
|
}
|
|
|
|
var loadSettingsResult = await _settingsService.LoadAsync();
|
|
if (!loadSettingsResult.IsSuccess || loadSettingsResult.Value == null) {
|
|
throw new Exception("Failed to load settings.");
|
|
}
|
|
|
|
var settings = loadSettingsResult.Value;
|
|
|
|
if (!settings.Init) {
|
|
var initializeResult = settings.Initialize(_appSettings.Auth.Pepper);
|
|
if (!initializeResult.IsSuccess || initializeResult.Value == null)
|
|
throw new Exception(string.Join(", ", initializeResult.Messages));
|
|
|
|
settings = initializeResult.Value;
|
|
|
|
var saveResult = await _settingsService.SaveAsync(settings);
|
|
if (!saveResult.IsSuccess) {
|
|
throw new Exception("Failed to save initialized settings.");
|
|
}
|
|
}
|
|
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
}
|
|
}
|