}
@code {
public Type ReportType => typeof(ReportComponent);
[Parameter]
public IReportable ReportableEntity { get; set; }
private bool _showReportModal = false;
private string _reportReason = "";
private Task ShowReportModal()
{
_reportReason = "";
_showReportModal = true;
return Task.CompletedTask;
}
private void CloseReportModal()
{
_showReportModal = false;
}
public Dictionary ConstructParameterList(IReportable reportableEntity, object RenderModeBoundary) {
Dictionary _parameters = new Dictionary();
_parameters["ReportableEntity"] = reportableEntity;
_parameters["RenderModeBoundary"] = RenderModeBoundary;
return _parameters;
}
private async Task ReportEntry()
{
// Basic null checks to avoid runtime NREs
if (ReportingHandler == null)
{
Console.WriteLine("ReportingHandler is not available (null). Ensure it is registered and injected.");
CloseReportModal();
return;
}
if (ReportableEntity == null)
{
Console.WriteLine("ReportableEntity is null. Cannot report.");
CloseReportModal();
return;
}
try
{
// If the handler exposes an async API use it instead. We run the synchronous call off the UI thread to avoid blocking.
await Task.Run(() => ReportingHandler.Report(ReportableEntity, _reportReason));
Console.WriteLine($"Eintrag gemeldet mit Grund: {_reportReason}");
AddModuleMessage($"Eintrag mit Grund {_reportReason} gemeldet.", MessageType.Success);
}
catch (Exception ex)
{
Console.WriteLine($"Reporting failed: {ex.Message}");
AddModuleMessage($"Eintrag konnte nicht gemeldet werden, bitte melden sie sich direkt beim Absolventenverein: ({ex.StackTrace}).", MessageType.Error);
}
finally
{
CloseReportModal();
StateHasChanged();
}
}
}