@using SZUAbsolventenverein.Module.HallOfFame.Services @using SZUAbsolventenverein.Module.HallOfFame.Models @using Oqtane.Security @using Oqtane.Shared @namespace SZUAbsolventenverein.Module.HallOfFame @inherits ModuleBase @inject IHallOfFameService HallOfFameService @inject NavigationManager NavigationManager @if (_item == null) {

Loading...

} else {
@if (!string.IsNullOrEmpty(_item.Image)) {
@_item.Name } else {
}

@_item.Name

Absolvent des Jahrgangs @_item.Year


Werdegang & Erfolge
@if (_item.IsReported && UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin + ";" + RoleNames.Host)) {
Meldungen:
@if (_reports != null && _reports.Any()) {
    @foreach (var report in _reports) {
  • @report.CreatedBy (@report.CreatedOn.ToShortDateString()):
    @report.Reason
  • }
} else {

Keine detaillierten Meldungen gefunden.

}
}
@foreach (var line in (_item.Description?.Replace("\t", " ").Split('\n') ?? Array.Empty())) {
@line
}
@if (!string.IsNullOrEmpty(_item.Link)) { Webseite besuchen } Zurück
@if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin + ";" + RoleNames.Host)) { }
@if (_showReportModal) { } @if (_showPdfModal) { } } @code { public override string Actions => "Details"; private HallOfFame _item; private int _id; private List _reports; private bool _showReportModal = false; private string _reportReason = ""; private bool _showPdfModal = false; private string _pdfPreviewUrl = ""; protected override async Task OnInitializedAsync() { await LoadData(); } private async Task LoadData() { try { _id = Int32.Parse(PageState.QueryString["id"]); _item = await HallOfFameService.GetHallOfFameAsync(_id, ModuleState.ModuleId); if (_item != null && _item.IsReported && UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin + ";" + RoleNames.Host)) { _reports = await HallOfFameService.GetHallOfFameReportsAsync(_id, ModuleState.ModuleId); } } catch (Exception ex) { await logger.LogError(ex, "Error Loading HallOfFame {HallOfFameId} {Error}", _id, ex.Message); AddModuleMessage("Fehler beim Laden der Details.", MessageType.Error); } } private void ShowPdfPreview() { _pdfPreviewUrl = $"/api/HallOfFamePdf?moduleid={ModuleState.ModuleId}"; _showPdfModal = true; } private void ClosePdfPreview() { _showPdfModal = false; _pdfPreviewUrl = ""; } private async Task DownloadPdf() { var url = $"/api/HallOfFamePdf?moduleid={ModuleState.ModuleId}&download=true"; await JSRuntime.InvokeVoidAsync("eval", $"var a = document.createElement('a'); a.href = '{url}'; a.download = 'HallOfFame.pdf'; document.body.appendChild(a); a.click(); document.body.removeChild(a);"); } private void ShowReportModal() { _reportReason = ""; _showReportModal = true; } private void CloseReportModal() { _showReportModal = false; } private async Task ReportEntry() { if (!string.IsNullOrEmpty(_reportReason)) { try { await HallOfFameService.ReportAsync(_item.HallOfFameId, ModuleState.ModuleId, _reportReason); AddModuleMessage("Eintrag wurde erfolgreich gemeldet.", MessageType.Success); _showReportModal = false; await LoadData(); } catch (Exception ex) { await logger.LogError(ex, "Error Reporting HallOfFame {Error}", ex.Message); AddModuleMessage("Fehler beim Melden des Eintrags.", MessageType.Error); } } } private async Task DeleteEntry() { try { await HallOfFameService.DeleteHallOfFameAsync(_item.HallOfFameId, ModuleState.ModuleId); NavigationManager.NavigateTo(NavigateUrl()); } catch (Exception ex) { await logger.LogError(ex, "Error Deleting HallOfFame {Error}", ex.Message); AddModuleMessage("Fehler beim Löschen des Eintrags.", MessageType.Error); } } private async Task DeleteReport(int reportId) { try { await HallOfFameService.DeleteHallOfFameReportAsync(reportId, ModuleState.ModuleId); AddModuleMessage("Meldung gelöscht.", MessageType.Success); await LoadData(); } catch (Exception ex) { await logger.LogError(ex, "Error Deleting Report {Error}", ex.Message); AddModuleMessage("Fehler beim Löschen der Meldung.", MessageType.Error); } } }