feat(backend): report detail endpoint
This commit is contained in:
parent
8edbc8bf1d
commit
045964ffb7
2 changed files with 35 additions and 0 deletions
|
@ -220,7 +220,36 @@ public class ReportsController(
|
||||||
return Ok(reports.Select(moderationRenderer.RenderReport));
|
return Ok(reports.Select(moderationRenderer.RenderReport));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("reports/{id}")]
|
||||||
|
[Authorize("user.moderation")]
|
||||||
|
[Limit(RequireModerator = true)]
|
||||||
|
public async Task<IActionResult> GetReportAsync(Snowflake id, CancellationToken ct = default)
|
||||||
|
{
|
||||||
|
Report? report = await db
|
||||||
|
.Reports.Include(r => r.Reporter)
|
||||||
|
.Include(r => r.TargetUser)
|
||||||
|
.Include(r => r.TargetMember)
|
||||||
|
.FirstOrDefaultAsync(r => r.Id == id, ct);
|
||||||
|
if (report == null)
|
||||||
|
throw new ApiError.NotFound("No report with that ID found.");
|
||||||
|
|
||||||
|
return Ok(
|
||||||
|
new ReportDetailResponse(
|
||||||
|
Report: moderationRenderer.RenderReport(report),
|
||||||
|
User: await userRenderer.RenderUserAsync(
|
||||||
|
report.TargetUser,
|
||||||
|
renderMembers: false,
|
||||||
|
ct: ct
|
||||||
|
),
|
||||||
|
Member: report.TargetMember != null
|
||||||
|
? memberRenderer.RenderMember(report.TargetMember)
|
||||||
|
: null
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("reports/{id}/ignore")]
|
[HttpPost("reports/{id}/ignore")]
|
||||||
|
[Authorize("user.moderation")]
|
||||||
[Limit(RequireModerator = true)]
|
[Limit(RequireModerator = true)]
|
||||||
public async Task<IActionResult> IgnoreReportAsync(
|
public async Task<IActionResult> IgnoreReportAsync(
|
||||||
Snowflake id,
|
Snowflake id,
|
||||||
|
|
|
@ -35,6 +35,12 @@ public record ReportResponse(
|
||||||
JObject? Snapshot
|
JObject? Snapshot
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public record ReportDetailResponse(
|
||||||
|
ReportResponse Report,
|
||||||
|
UserResponse User,
|
||||||
|
[property: JsonProperty(NullValueHandling = NullValueHandling.Ignore)] MemberResponse? Member
|
||||||
|
);
|
||||||
|
|
||||||
public record AuditLogResponse(
|
public record AuditLogResponse(
|
||||||
Snowflake Id,
|
Snowflake Id,
|
||||||
AuditLogEntity Moderator,
|
AuditLogEntity Moderator,
|
||||||
|
|
Loading…
Reference in a new issue