feat(sender): route editor save and send through unified envelope upsert API

- expose POST /api/Envelope for sender-authenticated create/update/send operations

- replace client draft-specific call with EnvelopeService.UpsertAsync(CreateEnvelopeCommand)

- update sender editor save/send flow to persist draft first and send by envelope id

- allow editor hydration without document by making sender document fetch nullable
This commit is contained in:
2026-09-26 13:11:44 +02:00
parent 4d2538cc2c
commit 4dba965c75
4 changed files with 46 additions and 77 deletions

View File

@@ -96,8 +96,8 @@ public class EnvelopeService(IHttpClientFactory clientFactory)
response.StatusCode);
}
public async Task<SaveEnvelopeDraftResultDto?> SaveDraftAsync(
SaveEnvelopeDraftCommand request,
public async Task<EnvelopeDto?> UpsertAsync(
CreateEnvelopeCommand request,
CancellationToken cancel = default)
{
var httpClient = clientFactory.CreateClient("EnvelopeGenerator.Server");
@@ -107,6 +107,7 @@ public class EnvelopeService(IHttpClientFactory clientFactory)
Title = request.Title,
Message = request.Message,
TFAEnabled = request.TFAEnabled,
Send = request.Send,
Document = request.Document is null
? null
: new { DataAsBase64 = request.Document.DataAsBase64 },
@@ -119,10 +120,10 @@ public class EnvelopeService(IHttpClientFactory clientFactory)
}).ToList()
};
var response = await httpClient.PostAsJsonAsync("/api/Envelope/draft", payload, _jsonOptions, cancel);
var response = await httpClient.PostAsJsonAsync("/api/Envelope", payload, _jsonOptions, cancel);
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<SaveEnvelopeDraftResultDto>(_jsonOptions, cancel);
return await response.Content.ReadFromJsonAsync<EnvelopeDto>(_jsonOptions, cancel);
string? message = null;
try
@@ -138,7 +139,7 @@ public class EnvelopeService(IHttpClientFactory clientFactory)
var statusCode = (int)response.StatusCode;
var reasonPhrase = response.ReasonPhrase ?? "Unknown error";
throw new HttpRequestException(
$"Failed to save envelope draft. Status: {statusCode} ({reasonPhrase}){(string.IsNullOrWhiteSpace(message) ? string.Empty : $" - {message}")}",
$"Failed to save envelope. Status: {statusCode} ({reasonPhrase}){(string.IsNullOrWhiteSpace(message) ? string.Empty : $" - {message}")}",
null,
response.StatusCode);
}