using FastEndpoints; using Microsoft.EntityFrameworkCore; using Socialize.Api.Data; using Socialize.Api.Infrastructure.Security; using Socialize.Api.Modules.Feedback.Contracts; using Socialize.Api.Modules.Feedback.Data; namespace Socialize.Api.Modules.Feedback.Handlers; public class GetMyFeedbackHandler(AppDbContext dbContext) : EndpointWithoutRequest { public override void Configure() { Get("/api/my-feedback/{id}"); Options(o => o.WithTags("Feedback")); } public override async Task HandleAsync(CancellationToken ct) { Guid id = Route("id"); Guid reporterUserId = User.GetUserId(); FeedbackReport? report = await dbContext.FeedbackReports .Include(candidate => candidate.Tags) .Include(candidate => candidate.Screenshot) .Include(candidate => candidate.Comments) .Include(candidate => candidate.ActivityEntries) .SingleOrDefaultAsync(candidate => candidate.Id == id && candidate.ReporterUserId == reporterUserId, ct); if (report is null) { await SendNotFoundAsync(ct); return; } await SendOkAsync(report.ToDto(), ct); } }