diff --git a/EnvelopeGenerator.Application/Contracts/IEnvelopeHistoryService.cs b/EnvelopeGenerator.Application/Contracts/IEnvelopeHistoryService.cs index 933037cd..8883160e 100644 --- a/EnvelopeGenerator.Application/Contracts/IEnvelopeHistoryService.cs +++ b/EnvelopeGenerator.Application/Contracts/IEnvelopeHistoryService.cs @@ -11,5 +11,7 @@ namespace EnvelopeGenerator.Application.Contracts Task CountAsync(int? envelopeId = null, string? userReference = null, int? status = null); Task AccessCodeAlreadyRequested(int envelopeId, string userReference); + + Task IsSigned(int envelopeId, string userReference); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Services/EnvelopeHistoryService.cs b/EnvelopeGenerator.Application/Services/EnvelopeHistoryService.cs index 3e01947f..fb8d3c77 100644 --- a/EnvelopeGenerator.Application/Services/EnvelopeHistoryService.cs +++ b/EnvelopeGenerator.Application/Services/EnvelopeHistoryService.cs @@ -18,7 +18,20 @@ namespace EnvelopeGenerator.Application.Services } public async Task CountAsync(int? envelopeId = null, string? userReference = null, int? status = null) => await _repository.CountAsync(envelopeId: envelopeId, userReference: userReference, status: status); - - public async Task AccessCodeAlreadyRequested(int envelopeId, string userReference) => await _repository.CountAsync(envelopeId: envelopeId, userReference:userReference, status: (int) EnvelopeStatus.AccessCodeRequested) > 0; + + public async Task HasStatus(EnvelopeStatus status, int envelopeId, string userReference) => await _repository.CountAsync( + envelopeId: envelopeId, + userReference: userReference, + status: (int) status) > 0; + + public async Task AccessCodeAlreadyRequested(int envelopeId, string userReference) => await _repository.CountAsync( + envelopeId: envelopeId, + userReference:userReference, + status: (int) EnvelopeStatus.AccessCodeRequested) > 0; + + public async Task IsSigned(int envelopeId, string userReference) => await _repository.CountAsync( + envelopeId: envelopeId, + userReference: userReference, + status: (int) EnvelopeStatus.DocumentSigned) > 0; } } \ No newline at end of file diff --git a/EnvelopeGenerator.Test/EnvelopeGenerator.Test.vbproj b/EnvelopeGenerator.Test/EnvelopeGenerator.Test.vbproj index eb2aec88..fef61ccd 100644 --- a/EnvelopeGenerator.Test/EnvelopeGenerator.Test.vbproj +++ b/EnvelopeGenerator.Test/EnvelopeGenerator.Test.vbproj @@ -120,9 +120,7 @@ frmFinalizePDF.vb - - Form - + frmReportViewer.vb diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index 472a7c0d..7434c6e8 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -119,19 +119,18 @@ namespace EnvelopeGenerator.Web.Controllers EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); if (isVerified) { - //todo: write using crud-service (mostlikely history-service) to make it async - if (envelopeOldService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id)) - { - return View("EnvelopeSigned"); - } - database.Services.actionService.EnterCorrectAccessCode(response.Envelope, response.Receiver); //for history ViewData["EnvelopeKey"] = envelopeReceiverId; - ViewData["EnvelopeResponse"] = response; return await _envRcvService.ReadByUuidSignatureAsync(uuid: uuid, signature: signature).ThenAsync( SuccessAsync: async er => { + if(await _historyService.IsSigned(envelopeId: er.Envelope!.Id, userReference: er.Receiver!.EmailAddress)) + return View("EnvelopeSigned"); + + database.Services.actionService.EnterCorrectAccessCode(response.Envelope, response.Receiver); //for history + ViewData["EnvelopeKey"] = envelopeReceiverId; + if (response.Envelope.Documents.Count() > 0) { var document = await envelopeOldService.GetDocument(response.Envelope.Documents[0].Id, envelopeReceiverId);