Add envelope finalization command and signed-envelope query
This commit is contained in:
@@ -29,6 +29,8 @@ public record SignPdfByEnvelopeCommand : EnvelopeQueryBase, IRequest<Stream>
|
||||
UserId = userId;
|
||||
return this;
|
||||
}
|
||||
|
||||
internal Envelope? Envelope { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -45,15 +47,20 @@ public class SignPdfByEnvelopeCommandHandler(IRepository<Envelope> Repo, ISender
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public async Task<Stream> Handle(SignPdfByEnvelopeCommand request, CancellationToken cancel)
|
||||
{
|
||||
var envelopeQuery = Repo.Query;
|
||||
if (request.Envelope is null)
|
||||
{
|
||||
var envelopeQuery = Repo.Query;
|
||||
|
||||
if (request.Id is int id)
|
||||
envelopeQuery = envelopeQuery.Where(e => e.Id == id);
|
||||
else if (request.Uuid is string uuid)
|
||||
envelopeQuery = envelopeQuery.Where(e => e.Uuid == uuid);
|
||||
if (request.Id is int id)
|
||||
envelopeQuery = envelopeQuery.Where(e => e.Id == id);
|
||||
else if (request.Uuid is string uuid)
|
||||
envelopeQuery = envelopeQuery.Where(e => e.Uuid == uuid);
|
||||
|
||||
var envelope = await envelopeQuery.Include(e => e.EnvelopeReceivers).Include(e => e.Documents).SingleOrDefaultAsync(cancel)
|
||||
?? throw new NotFoundException($"Envelope is not found ID: {request.Id} UUID: {request.Uuid}");
|
||||
request.Envelope = await envelopeQuery.Include(e => e.EnvelopeReceivers).Include(e => e.Documents).SingleOrDefaultAsync(cancel)
|
||||
?? throw new NotFoundException($"Envelope is not found ID: {request.Id} UUID: {request.Uuid}");
|
||||
}
|
||||
|
||||
var envelope = request.Envelope;
|
||||
|
||||
if (request.UserId is int userId && userId != envelope.UserId)
|
||||
throw new AuthorizationException($"Envelope is not authorized for user with Id: {request.UserId} Envelope ID: {request.Id} UUID: {request.Uuid}");
|
||||
|
||||
Reference in New Issue
Block a user