@page "/settings" @using Microsoft.EntityFrameworkCore @using TrafagSalesExporter.Data @using TrafagSalesExporter.Services @inject IDbContextFactory DbFactory @inject ISharePointUploadService SpService @inject TimerBackgroundService TimerService @inject ISnackbar Snackbar Settings Settings @* SharePoint Config *@ SharePoint Konfiguration Speichern @if (_testingSp) { @("Teste...") } else { @("SharePoint Verbindung testen") } @* Export Settings *@ Export Einstellungen Speichern @* Filename Preview *@ Dateiname Vorschau Sales_{"{TSC}"}_{DateTime.Now:yyyy-MM-dd}.xlsx Beispiel: Sales_TRFR_@(DateTime.Now.ToString("yyyy-MM-dd")).xlsx @code { private SharePointConfig _spConfig = new(); private ExportSettings _exportSettings = new(); private bool _testingSp; protected override async Task OnInitializedAsync() { using var db = await DbFactory.CreateDbContextAsync(); _spConfig = await db.SharePointConfigs.FirstOrDefaultAsync() ?? new SharePointConfig(); _exportSettings = await db.ExportSettings.FirstOrDefaultAsync() ?? new ExportSettings(); } private async Task SaveSharePoint() { using var db = await DbFactory.CreateDbContextAsync(); var existing = await db.SharePointConfigs.FirstOrDefaultAsync(); if (existing is null) { db.SharePointConfigs.Add(_spConfig); } else { existing.SiteUrl = _spConfig.SiteUrl; existing.ExportFolder = _spConfig.ExportFolder; existing.TenantId = _spConfig.TenantId; existing.ClientId = _spConfig.ClientId; existing.ClientSecret = _spConfig.ClientSecret; } await db.SaveChangesAsync(); Snackbar.Add("SharePoint Konfiguration gespeichert", Severity.Success); } private async Task TestSharePoint() { _testingSp = true; try { await SpService.TestConnectionAsync( _spConfig.TenantId, _spConfig.ClientId, _spConfig.ClientSecret, _spConfig.SiteUrl); Snackbar.Add("SharePoint Verbindung erfolgreich!", Severity.Success); } catch (Exception ex) { Snackbar.Add($"Verbindung fehlgeschlagen: {ex.Message}", Severity.Error); } finally { _testingSp = false; } } private async Task SaveExportSettings() { using var db = await DbFactory.CreateDbContextAsync(); var existing = await db.ExportSettings.FirstOrDefaultAsync(); if (existing is null) { db.ExportSettings.Add(_exportSettings); } else { existing.DateFilter = _exportSettings.DateFilter; existing.TimerHour = _exportSettings.TimerHour; existing.TimerMinute = _exportSettings.TimerMinute; existing.TimerEnabled = _exportSettings.TimerEnabled; } await db.SaveChangesAsync(); TimerService.Recalculate(); Snackbar.Add("Export Einstellungen gespeichert", Severity.Success); } }