feat(email): include drafts in user exports
Export readable private draft content only through existing owner-filtered encrypted and daily export boundaries, with cross-tenant regression coverage.
This commit is contained in:
@@ -89,6 +89,21 @@ namespace JobTrackerApi.Controllers
|
||||
attempt.StartedAtUtc,
|
||||
attempt.CompletedAtUtc))
|
||||
.ToListAsync(cancellationToken);
|
||||
var emailDrafts = await _db.EmailDrafts.AsNoTracking()
|
||||
.Where(draft => jobIds.Contains(draft.JobApplicationId))
|
||||
.OrderBy(draft => draft.UpdatedAtUtc)
|
||||
.Select(draft => new EmailDraftExport(
|
||||
draft.Id,
|
||||
draft.JobApplicationId,
|
||||
draft.Provider,
|
||||
draft.To,
|
||||
draft.Subject,
|
||||
draft.BodyText,
|
||||
draft.ThreadId,
|
||||
draft.Revision,
|
||||
draft.CreatedAtUtc,
|
||||
draft.UpdatedAtUtc))
|
||||
.ToListAsync(cancellationToken);
|
||||
var rules = await _db.RuleSettings.AsNoTracking().FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
return new
|
||||
@@ -99,6 +114,7 @@ namespace JobTrackerApi.Controllers
|
||||
Attachments = attachments,
|
||||
Events = events,
|
||||
EmailSendAttempts = emailSendAttempts,
|
||||
EmailDrafts = emailDrafts,
|
||||
Rules = rules
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user