@page "/admin/data-connections" @using ScadaLink.Security @using ScadaLink.Commons.Entities.Sites @using ScadaLink.Commons.Interfaces.Repositories @attribute [Authorize(Policy = AuthorizationPolicies.RequireAdmin)] @inject ISiteRepository SiteRepository @inject NavigationManager NavigationManager

Data Connections

@if (_loading) { } else if (_errorMessage != null) {
@_errorMessage
} else { @if (_connections.Count == 0) { } @foreach (var conn in _connections) { }
ID Name Protocol Site Primary Config Backup Config Actions
No data connections configured.
@conn.Id @conn.Name @conn.Protocol @(_siteLookup.GetValueOrDefault(conn.SiteId)?.Name ?? $"Site {conn.SiteId}") @(conn.PrimaryConfiguration ?? "—") @(conn.BackupConfiguration ?? "—")
}
@code { private List _connections = new(); private Dictionary _siteLookup = new(); private bool _loading = true; private string? _errorMessage; private ToastNotification _toast = default!; private ConfirmDialog _confirmDialog = default!; protected override async Task OnInitializedAsync() { await LoadDataAsync(); } private async Task LoadDataAsync() { _loading = true; _errorMessage = null; try { var sites = await SiteRepository.GetAllSitesAsync(); _siteLookup = sites.ToDictionary(s => s.Id); _connections = (await SiteRepository.GetAllDataConnectionsAsync()).ToList(); } catch (Exception ex) { _errorMessage = $"Failed to load data: {ex.Message}"; } _loading = false; } private async Task DeleteConnection(DataConnection conn) { var confirmed = await _confirmDialog.ShowAsync( $"Delete data connection '{conn.Name}'?", "Delete Connection"); if (!confirmed) return; try { await SiteRepository.DeleteDataConnectionAsync(conn.Id); await SiteRepository.SaveChangesAsync(); _toast.ShowSuccess($"Connection '{conn.Name}' deleted."); await LoadDataAsync(); } catch (Exception ex) { _toast.ShowError($"Delete failed: {ex.Message}"); } } }