Hardened API and catered for Partner role query filter bypass

This commit is contained in:
2026-10-04 08:18:43 +02:00
parent 8d069c2da0
commit 8100518549
62 changed files with 232 additions and 193 deletions
@@ -46,7 +46,7 @@ public sealed class CommunicationsService(IDbContextFactory<ApplicationDbContext
return Result.FailIf(await context.SaveChangesAsync(cancellationToken) <= 0 && notificationResult.IsFailed,
CreateError.Create("Failed to create invite, contact support").CausedBy(notificationResult.Errors))
.ToResult(invite.Map());
.ToResult(invite?.Map()!);
}));
public async Task<Result<Invite[]>> GetInvitesAsync(Pagination pagination, CancellationToken cancellationToken = default) =>
@@ -72,8 +72,8 @@ public sealed class CommunicationsService(IDbContextFactory<ApplicationDbContext
.OrderByDescending(o => o.Id)
.FirstOrDefaultAsync(i => i.Recipient == applicantUserId, cancellationToken);
return Result.FailIf(invite is null, NotFoundError.Create("No active invite found"))
.ToResult(invite!.Map());
return Result.FailIf(invite == null, NotFoundError.Create("No active invite found"))
.ToResult(invite?.Map()!);
}));
public async Task<Result<Invite[]>> GetApplicantInvitesAsync(Guid applicantUserId, CancellationToken cancellationToken = default) =>
@@ -86,7 +86,7 @@ public sealed class CommunicationsService(IDbContextFactory<ApplicationDbContext
.OrderByDescending(o => o.Id)
.ToListAsync(cancellationToken);
return Result.Ok(invites.Select(i => i.Map()).ToArray());
return Result.Ok(invites?.Select(i => i.Map()).ToArray() ?? []);
}));
public async Task<Result> CreateNotificationAsync(CreateNotificationRequest request, Guid userId, CancellationToken cancellationToken = default) =>
@@ -162,6 +162,6 @@ public sealed class CommunicationsService(IDbContextFactory<ApplicationDbContext
.FirstOrDefaultAsync(n => n.Id == decodeResult.Value, cancellationToken);
return Result.FailIf(notification is null, NotFoundError.Create("Notification not found"))
.ToResult(notification!.Map());
.ToResult(notification?.Map()!);
}));
}