@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 @inject IStringLocalizer Localizer @if (_HallOfFames == null) {

Loading...

} else {
@if (PageState.User != null) { if (_myEntry != null) { } else { } }
@if (@_HallOfFames.Count != 0) {
@foreach (var item in FilteredHallOfFames) {
@if (!string.IsNullOrEmpty(item.Image)) { @item.Name }
@item.Name (@item.Year)
@if (item.IsReported && UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin + ";" + RoleNames.Host)) {
Dieser Eintrag wurde gemeldet!
}
@foreach (var line in (item.Description?.Replace("\t", " ").Split('\n') ?? Array.Empty())) {
@line
}
@if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin + ";" + RoleNames.Host)) { }
}
} else {
Es sind noch keine Hall-of-Fame-Einträge veröffentlicht.
} } @code { public override List Resources => new List() { new Stylesheet("_content/SZUAbsolventenverein.Module.HallOfFame/Module.css"), new Script("_content/SZUAbsolventenverein.Module.HallOfFame/Module.js") }; List _HallOfFames; HallOfFame _myEntry; string _searchText = ""; string _sortOption = "CreatedOn"; bool _sortAscending = false; IEnumerable FilteredHallOfFames { get { var items = _HallOfFames.AsEnumerable(); if (!string.IsNullOrEmpty(_searchText)) { items = items.Where(i => (i.Name?.Contains(_searchText, StringComparison.OrdinalIgnoreCase) ?? false) || (i.Description?.Contains(_searchText, StringComparison.OrdinalIgnoreCase) ?? false) ); } items = _sortOption switch { "Name" => _sortAscending ? items.OrderBy(i => i.Name) : items.OrderByDescending(i => i.Name), "Year" => _sortAscending ? items.OrderBy(i => i.Year) : items.OrderByDescending(i => i.Year), "CreatedOn" or _ => _sortAscending ? items.OrderBy(i => i.CreatedOn) : items.OrderByDescending(i => i.CreatedOn) }; return items; } } private string TruncateDescription(string description) { if (string.IsNullOrEmpty(description)) return ""; const int maxLength = 150; if (description.Length <= maxLength) return description; return description.Substring(0, maxLength).TrimEnd() + "..."; } private void ToggleSortDirection() { _sortAscending = !_sortAscending; } protected override async Task OnInitializedAsync() { await LoadData(); } private async Task LoadData() { try { var allEntries = await HallOfFameService.GetHallOfFamesAsync(ModuleState.ModuleId); _HallOfFames = allEntries.Where(i => i.Status == "Published").ToList(); if (PageState.User != null) { _myEntry = await HallOfFameService.GetHallOfFameByUserIdAsync(PageState.User.UserId, ModuleState.ModuleId); } } catch (Exception ex) { await logger.LogError(ex, "Error Loading HallOfFame {Error}", ex.Message); AddModuleMessage(Localizer["Message.LoadError"], MessageType.Error); } } private async Task Delete(int hallOfFameId) { try { await HallOfFameService.DeleteHallOfFameAsync(hallOfFameId, ModuleState.ModuleId); AddModuleMessage("Eintrag wurde gelöscht.", MessageType.Success); await LoadData(); } catch (Exception ex) { await logger.LogError(ex, "Error Deleting HallOfFame {Error}", ex.Message); AddModuleMessage("Fehler beim Löschen des Eintrags.", MessageType.Error); } } }