diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQuery.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQuery.cs index 9b8e4e4f..8d74455a 100644 --- a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQuery.cs +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQuery.cs @@ -1,6 +1,7 @@ using EnvelopeGenerator.Application.Dto.EnvelopeReceiver; using EnvelopeGenerator.Application.Envelopes.Queries; using EnvelopeGenerator.Application.Exceptions; +using EnvelopeGenerator.Application.Extensions; using EnvelopeGenerator.Application.Receivers.Queries; using EnvelopeGenerator.Extensions; using MediatR; @@ -83,3 +84,12 @@ public record ReadEnvelopeReceiverQuery : IRequest public ReadReceiverQuery? Receiver { get; set; } }; + +public static class Extensions +{ + public static Task ReadEnvelopeReceiverAsync(this IMediator mediator, string key) + { + var q = new ReadEnvelopeReceiverQuery() { Key = key }; + return mediator.Send(q).Then(envRcvs => envRcvs.FirstOrDefault()); + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Extensions/TaskExtensions.cs b/EnvelopeGenerator.Application/Extensions/TaskExtensions.cs index 87927ff4..afa1bc6c 100644 --- a/EnvelopeGenerator.Application/Extensions/TaskExtensions.cs +++ b/EnvelopeGenerator.Application/Extensions/TaskExtensions.cs @@ -36,4 +36,18 @@ public static class TaskExtensions var result = await task; return result?.Any() ?? false ? result : throw new NotFoundException(exceptionMessage); } + + /// + /// + /// + /// + /// + /// + /// + /// + public static async Task Then(this Task task, Func act) + { + var res = await task; + return act(res); + } } diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index 4a502143..1bedda6b 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -20,6 +20,9 @@ using EnvelopeGenerator.Application.Interfaces.Services; using static EnvelopeGenerator.Domain.Constants; using DigitalData.Core.Abstraction.Application.DTO; using EnvelopeGenerator.Domain.Entities; +using MediatR; +using EnvelopeGenerator.Application.EnvelopeReceivers.Queries; +using EnvelopeGenerator.Application.Extensions; namespace EnvelopeGenerator.Web.Controllers; @@ -40,8 +43,10 @@ public class HomeController : ViewControllerBase private readonly IReceiverService _rcvService; private readonly IEnvelopeSmsHandler _envSmsHandler; + private readonly IMediator _mediator; + [Obsolete("Use MediatR")] - public HomeController(EnvelopeOldService envelopeOldService, ILogger logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IAuthenticator authenticator, IReceiverService receiverService, IEnvelopeSmsHandler envelopeSmsService) : base(logger, sanitizer, cultures, localizer) + public HomeController(EnvelopeOldService envelopeOldService, ILogger logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IAuthenticator authenticator, IReceiverService receiverService, IEnvelopeSmsHandler envelopeSmsService, IMediator mediator) : base(logger, sanitizer, cultures, localizer) { this.envelopeOldService = envelopeOldService; _envRcvService = envelopeReceiverService; @@ -52,6 +57,7 @@ public class HomeController : ViewControllerBase _authenticator = authenticator; _rcvService = receiverService; _envSmsHandler = envelopeSmsService; + _mediator = mediator; } [HttpGet("/")] @@ -103,17 +109,10 @@ public class HomeController : ViewControllerBase ViewData["EnvelopeKey"] = envelopeReceiverId; - var er_res = await _envRcvService.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelopeReceiverId); + var er = await _mediator.ReadEnvelopeReceiverAsync(envelopeReceiverId); - if (er_res.IsFailed) - { - _logger.LogNotice(er_res.Notices); + if (er is null) return this.ViewEnvelopeNotFound(); - } - - var er = er_res.Data; - - EnvelopeReceiver response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); bool accessCodeAlreadyRequested = await _historyService.AccessCodeAlreadyRequested(envelopeId: er.Envelope!.Id, userReference: er.Receiver!.EmailAddress); if (!accessCodeAlreadyRequested) @@ -190,9 +189,6 @@ public class HomeController : ViewControllerBase _logger.LogInformation("Envelope UUID: [{uuid}]\nReceiver Signature: [{signature}]", uuid, signature); - //check access code - EnvelopeReceiver response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); - //check rejection var rejRcvrs = await _historyService.ReadRejectingReceivers(er.Envelope!.Id); if (rejRcvrs.Any()) @@ -352,9 +348,6 @@ public class HomeController : ViewControllerBase _logger.LogInformation("Envelope UUID: [{uuid}]\nReceiver Signature: [{signature}]", uuid, signature); - //check access code - EnvelopeReceiver response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); - var er_secret_res = await _envRcvService.ReadWithSecretByUuidSignatureAsync(uuid: uuid, signature: signature); if (er_secret_res.IsFailed) diff --git a/EnvelopeGenerator.Web/Controllers/Test/EnvelopeReceiverController.cs b/EnvelopeGenerator.Web/Controllers/Test/TestEnvelopeReceiverController.cs similarity index 91% rename from EnvelopeGenerator.Web/Controllers/Test/EnvelopeReceiverController.cs rename to EnvelopeGenerator.Web/Controllers/Test/TestEnvelopeReceiverController.cs index 3472da99..95cbecd3 100644 --- a/EnvelopeGenerator.Web/Controllers/Test/EnvelopeReceiverController.cs +++ b/EnvelopeGenerator.Web/Controllers/Test/TestEnvelopeReceiverController.cs @@ -9,16 +9,16 @@ using EnvelopeGenerator.Application.Extensions; namespace EnvelopeGenerator.Web.Controllers.Test; -[Route("test/[controller]")] +[Route("api/test/[controller]")] [ApiController] -public class EnvelopeReceiverController : ControllerBase +public class TestEnvelopeReceiverController : ControllerBase { private readonly IMediator _mediator; [Obsolete("Use MediatR")] private readonly IEnvelopeReceiverService _service; [Obsolete("Use MediatR")] - public EnvelopeReceiverController(ILogger logger, IEnvelopeReceiverService service, IMediator mediator, IEnvelopeReceiverService erService) + public TestEnvelopeReceiverController(ILogger logger, IEnvelopeReceiverService service, IMediator mediator, IEnvelopeReceiverService erService) { _mediator = mediator; _service = erService;