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…
	
	Add table
		Add a link
		
	
		Reference in a new issue