@using SZUAbsolventenverein.Module.PremiumArea.Services @using SZUAbsolventenverein.Module.PremiumArea.Models @namespace SZUAbsolventenverein.Module.PremiumArea @inherits ModuleBase @inject IEngineerApplicationService ApplicationService @inject NavigationManager NavManager @inject Oqtane.Services.IUserService UserService @if (Oqtane.Security.UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin) || Oqtane.Security.UserSecurity.IsAuthorized(PageState.User, "Premium Member")) {

Ingenieur-Anträge

@if (_applications == null) {

Prüfe Premium-Zugang...

} else if (_applications.Count == 0) {
Keine Anträge gefunden.
} else {
@foreach (var app in _applications) {
@(string.IsNullOrEmpty(app.Title) ? "Ingenieur-Antrag" : app.Title)
@if (Oqtane.Security.UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) { @if (_confirmDeleteId == app.ApplicationId) {
} else { } }
von @GetUserName(app.UserId)
@if (!string.IsNullOrEmpty(app.ShortDescription)) {

@app.ShortDescription

}

Datum: @(app.ApprovedOn?.ToShortDateString() ?? app.CreatedOn.ToShortDateString())

Herunterladen
}
} } else {
Sie müssen Premium Kunde sein um diese Funktion zu nutzen.
} @if (_selectedApp != null) { } @if (_reportApp != null) { } @code { public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; private List _applications; private EngineerApplication _selectedApp; private EngineerApplication _reportApp; private string _reportReason; private Dictionary _userNames = new(); private int _confirmDeleteId = -1; protected override async Task OnInitializedAsync() { try { var published = await ApplicationService.GetApplicationsAsync(ModuleState.ModuleId, "Published"); var approved = await ApplicationService.GetApplicationsAsync(ModuleState.ModuleId, "Approved"); _applications = new List(); if (published != null) _applications.AddRange(published); if (approved != null) _applications.AddRange(approved); _applications = _applications.GroupBy(a => a.ApplicationId).Select(g => g.First()).ToList(); // Benutzernamen laden foreach (var userId in _applications.Select(a => a.UserId).Distinct()) { try { var user = await UserService.GetUserAsync(userId, ModuleState.SiteId); _userNames[userId] = user?.DisplayName ?? $"Benutzer {userId}"; } catch { _userNames[userId] = $"Benutzer {userId}"; } } } catch (Exception ex) { Console.WriteLine(ex.Message); _applications = null; } } private void ShowDetail(EngineerApplication app) { _selectedApp = app; } private void InitReport(EngineerApplication app) { _reportApp = app; _reportReason = ""; } private async Task SubmitReport() { if (_reportApp == null || string.IsNullOrWhiteSpace(_reportReason)) return; try { await ApplicationService.ReportApplicationAsync(_reportApp.ApplicationId, ModuleState.ModuleId, _reportReason); _reportApp = null; AddModuleMessage("Antrag erfolgreich gemeldet.", MessageType.Success); } catch (Exception ex) { AddModuleMessage("Fehler beim Melden: " + ex.Message, MessageType.Error); } } private async Task DeleteApp(EngineerApplication app) { try { await ApplicationService.DeleteApplicationAsync(app.ApplicationId, ModuleState.ModuleId); _applications.Remove(app); _confirmDeleteId = -1; AddModuleMessage("Antrag erfolgreich gelöscht.", MessageType.Success); } catch (Exception ex) { AddModuleMessage("Fehler beim Löschen: " + ex.Message, MessageType.Error); _confirmDeleteId = -1; } } private string GetUserName(int userId) { return _userNames.TryGetValue(userId, out var name) ? name : $"Benutzer {userId}"; } }