@page "/settings" @using Microsoft.EntityFrameworkCore @inject IDbContextFactory DbFactory @inject CryptoService CryptoService @inject SharePointUploadService SharePointUploadService Settings Settings SharePoint Speichern SharePoint Verbindung testen Export & Timer Dateiname-Vorschau: @PreviewFileName @message @code { private SharePointConfig sharePointConfig = new(); private ExportSettings settings = new(); private string sharePointClientSecret = string.Empty; private string message = "Bereit."; private string PreviewFileName => $"Sales_{{TSC}}_{DateTime.UtcNow:yyyy-MM-dd}.xlsx"; protected override async Task OnInitializedAsync() { await using var db = await DbFactory.CreateDbContextAsync(); sharePointConfig = await db.SharePointConfigs.OrderBy(x => x.Id).FirstAsync(); settings = await db.ExportSettings.OrderBy(x => x.Id).FirstAsync(); sharePointClientSecret = CryptoService.Decrypt(sharePointConfig.EncryptedClientSecret); } private async Task SaveAsync() { await using var db = await DbFactory.CreateDbContextAsync(); var sp = await db.SharePointConfigs.SingleAsync(x => x.Id == sharePointConfig.Id); var es = await db.ExportSettings.SingleAsync(x => x.Id == settings.Id); sp.SiteUrl = sharePointConfig.SiteUrl; sp.ExportFolder = sharePointConfig.ExportFolder; sp.TenantId = sharePointConfig.TenantId; sp.ClientId = sharePointConfig.ClientId; sp.EncryptedClientSecret = CryptoService.Encrypt(sharePointClientSecret); es.DateFilter = settings.DateFilter; es.TimerHour = settings.TimerHour; es.TimerMinute = settings.TimerMinute; es.TimerEnabled = settings.TimerEnabled; await db.SaveChangesAsync(); message = "Settings gespeichert."; } private async Task TestSharePointAsync() { try { var ok = await SharePointUploadService.TestConnectionAsync( sharePointConfig.SiteUrl, sharePointConfig.TenantId, sharePointConfig.ClientId, sharePointClientSecret); message = ok ? "SharePoint Verbindung OK." : "SharePoint Verbindung fehlgeschlagen."; } catch (Exception ex) { message = $"SharePoint Test fehlgeschlagen: {ex.Message}"; } } }