From cbb03d77bae08d282875e0e702910fc7ac66720e Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 4 Apr 2024 17:35:43 +0200 Subject: [PATCH] =?UTF-8?q?Animierte=20Navbar-Anzeige=20f=C3=BCr=20envelop?= =?UTF-8?q?eDto-Informationen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contracts/IEnvelopeService.cs | 2 + .../Services/EnvelopeService.cs | 15 +++++- .../Contracts/IEnvelopeRepository.cs | 2 + .../Repositories/EnvelopeRepository.cs | 16 +++++++ .../Controllers/EnvelopeController.cs | 24 ++++++++-- .../Controllers/HomeController.cs | 46 +++++++++--------- .../Controllers/TestEnvelopeController.cs | 15 +++++- .../Views/Home/ShowEnvelope.cshtml | 47 ++++++------------- EnvelopeGenerator.Web/wwwroot/js/app.js | 3 -- 9 files changed, 105 insertions(+), 65 deletions(-) diff --git a/EnvelopeGenerator.Application/Contracts/IEnvelopeService.cs b/EnvelopeGenerator.Application/Contracts/IEnvelopeService.cs index b4df69b4..eafddfff 100644 --- a/EnvelopeGenerator.Application/Contracts/IEnvelopeService.cs +++ b/EnvelopeGenerator.Application/Contracts/IEnvelopeService.cs @@ -8,5 +8,7 @@ namespace EnvelopeGenerator.Application.Contracts public interface IEnvelopeService : IBasicCRUDService { Task>> ReadAllWithAsync(bool documents = false, bool receivers = false, bool history = false); + + Task> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withReceivers = false, bool withHistory = false); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Services/EnvelopeService.cs b/EnvelopeGenerator.Application/Services/EnvelopeService.cs index 196ef9dc..16076506 100644 --- a/EnvelopeGenerator.Application/Services/EnvelopeService.cs +++ b/EnvelopeGenerator.Application/Services/EnvelopeService.cs @@ -18,8 +18,19 @@ namespace EnvelopeGenerator.Application.Services public async Task>> ReadAllWithAsync(bool documents = false, bool receivers = false, bool history = false) { - var entities = await _repository.ReadAllWithAsync(documents: documents, receivers: receivers, history: history); - var readDto = _mapper.MapOrThrow>(entities); + var envelopes = await _repository.ReadAllWithAsync(documents: documents, receivers: receivers, history: history); + var readDto = _mapper.MapOrThrow>(envelopes); + return Successful(readDto); + } + + public async Task> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withReceivers = false, bool withHistory = false) + { + var envelope = await _repository.ReadByUuidAsync(uuid: uuid, withDocuments: withDocuments, withReceivers: withReceivers, withHistory: withHistory); + + if (envelope is null) + return Failed(); + + var readDto = _mapper.MapOrThrow(envelope); return Successful(readDto); } } diff --git a/EnvelopeGenerator.Infrastructure/Contracts/IEnvelopeRepository.cs b/EnvelopeGenerator.Infrastructure/Contracts/IEnvelopeRepository.cs index 756b0ab9..4369e0d1 100644 --- a/EnvelopeGenerator.Infrastructure/Contracts/IEnvelopeRepository.cs +++ b/EnvelopeGenerator.Infrastructure/Contracts/IEnvelopeRepository.cs @@ -6,5 +6,7 @@ namespace EnvelopeGenerator.Infrastructure.Contracts public interface IEnvelopeRepository : ICRUDRepository { Task> ReadAllWithAsync(bool documents = false, bool receivers = false, bool history = false); + + Task ReadByUuidAsync(string uuid, bool withDocuments = false, bool withReceivers = false, bool withHistory = false); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs b/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs index b2c27697..ba77ee4f 100644 --- a/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs +++ b/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs @@ -27,5 +27,21 @@ namespace EnvelopeGenerator.Infrastructure.Repositories return await query.ToListAsync(); } + + public async Task ReadByUuidAsync(string uuid, bool withDocuments = false, bool withReceivers = false, bool withHistory = false) + { + var query = _dbSet.Where(e => e.Uuid == uuid); + + if (withDocuments) + query = query.Include(e => e.Documents); + + if (withReceivers) + query = query.Include(e => e.Receivers); + + if (withHistory) + query = query.Include(e => e.History); + + return await query.FirstOrDefaultAsync(); + } } } \ No newline at end of file diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 1830d6f0..1867fe60 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -1,4 +1,5 @@  +using EnvelopeGenerator.Application.Contracts; using EnvelopeGenerator.Common; using EnvelopeGenerator.Web.Services; using Microsoft.AspNetCore.Mvc; @@ -9,17 +10,31 @@ namespace EnvelopeGenerator.Web.Controllers { private readonly EnvelopeOldService envelopeService; private readonly ActionService? actionService; + private readonly IEnvelopeService _envelopeService; - public EnvelopeController(DatabaseService database, EnvelopeOldService envelope, ILogger logger) : base(database, logger) + public EnvelopeController(DatabaseService database, EnvelopeOldService envelope, ILogger logger, IEnvelopeService envService) : base(database, logger) { envelopeService = envelope; actionService = database?.Services?.actionService; + _envelopeService = envService; } - [HttpGet] - [Route("api/envelope/{envelopeKey}")] + [HttpGet("api/envelope/{envelopeKey}")] public async Task Get(string envelopeKey) { + //_logger.LogInformation($"Loading Envelope by Key [{envelopeKey}]"); + + //Tuple result = Helpers.DecodeEnvelopeReceiverId(envelopeKey); + //var envelopeUuid = result.Item1; + //var receiverSignature = result.Item2; + ////var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature); + + ////_logger.LogInformation("Resolved receiver signature to receiverId [{0}]", receiverId); + + //var envlopeServiceResult = await _envelopeService.ReadByUuidAsync(envelopeUuid, withDocuments:true, withReceivers:true, withHistory:true); + + //_logger.LogInformation("Loading envelope.."); + try { // Validate Envelope Key and load envelope @@ -40,8 +55,7 @@ namespace EnvelopeGenerator.Web.Controllers } } - [HttpPost] - [Route("api/envelope/{envelopeKey}")] + [HttpPost("api/envelope/{envelopeKey}")] public async Task Update(string envelopeKey, int index) { try diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index 00f3e2de..b15a7793 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -1,4 +1,6 @@ -using EnvelopeGenerator.Common; +using EnvelopeGenerator.Application.Contracts; +using EnvelopeGenerator.Application.Services; +using EnvelopeGenerator.Common; using EnvelopeGenerator.Web.Models; using EnvelopeGenerator.Web.Services; using Microsoft.AspNetCore.Mvc; @@ -9,24 +11,24 @@ namespace EnvelopeGenerator.Web.Controllers { public class HomeController : BaseController { - private readonly EnvelopeOldService _envelopeService; + private readonly EnvelopeOldService envelopeOldService; private readonly IConfiguration _config; + private readonly IEnvelopeService _envelopeService; - public HomeController(DatabaseService databaseService, EnvelopeOldService envelopeService, ILogger logger, IConfiguration configuration) : base(databaseService, logger) + public HomeController(DatabaseService databaseService, EnvelopeOldService envelopeOldService, ILogger logger, IConfiguration configuration, IEnvelopeService envelopeService) : base(databaseService, logger) { + this.envelopeOldService = envelopeOldService; _envelopeService = envelopeService; _config = configuration; } - [HttpGet] - [Route("/")] + [HttpGet("/")] public IActionResult Index() { return View(); } - [HttpPost] - [Route("/")] + [HttpPost("/")] public IActionResult DebugEnvelopes([FromForm] string password) { try @@ -51,7 +53,7 @@ namespace EnvelopeGenerator.Web.Controllers return View("Index"); } - List envelopes = _envelopeService.LoadEnvelopes(); + List envelopes = envelopeOldService.LoadEnvelopes(); return View(envelopes); } @@ -62,11 +64,10 @@ namespace EnvelopeGenerator.Web.Controllers } } - [HttpGet] - [Route("/EnvelopeKey/{envelopeReceiverId}")] + [HttpGet("/EnvelopeKey/{envelopeReceiverId}")] public async Task ShowEnvelope([FromRoute] string envelopeReceiverId) { - EnvelopeResponse response = await _envelopeService.LoadEnvelope(envelopeReceiverId); + EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); if (response.Envelope.UseAccessCode) { @@ -88,11 +89,10 @@ namespace EnvelopeGenerator.Web.Controllers } } - [HttpPost] - [Route("/EnvelopeKey/{envelopeReceiverId}/Locked")] + [HttpPost("/EnvelopeKey/{envelopeReceiverId}/Locked")] public async Task ShowEnvelopePost([FromRoute] string envelopeReceiverId, [FromForm] string access_code) { - EnvelopeResponse response = await _envelopeService.LoadEnvelope(envelopeReceiverId); + EnvelopeResponse response = await envelopeOldService.LoadEnvelope(envelopeReceiverId); string accessCode = response.Receiver.AccessCode; if (string.IsNullOrEmpty(access_code)) @@ -114,18 +114,21 @@ namespace EnvelopeGenerator.Web.Controllers } } - [HttpGet] - [Route("/EnvelopeKey/{envelopeReceiverId}/Locked")] - public IActionResult EnvelopeLocked([FromRoute] string envelopeReceiverId) + [HttpGet("/EnvelopeKey/{envelopeReceiverId}/Locked")] + public async Task EnvelopeLocked([FromRoute] string envelopeReceiverId) { + Tuple decode = Common.Helpers.DecodeEnvelopeReceiverId(envelopeReceiverId); + var envelopeUuid = decode.Item1; + var envlopeServiceResult = await _envelopeService.ReadByUuidAsync(envelopeUuid, withDocuments: true, withReceivers: true, withHistory: true); + + + ViewData["Envelope"] = envlopeServiceResult.Data; + ViewData["EnvelopeKey"] = envelopeReceiverId; return View(); } - - - [HttpGet] - [Route("/EnvelopeKey/{EnvelopeReceiverId}/Success")] + [HttpGet("/EnvelopeKey/{EnvelopeReceiverId}/Success")] public IActionResult EnvelopeSigned() { ViewData["EnvelopeKey"] = HttpContext.Request.RouteValues["EnvelopeReceiverId"]; @@ -133,7 +136,6 @@ namespace EnvelopeGenerator.Web.Controllers return View(); } - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { diff --git a/EnvelopeGenerator.Web/Controllers/TestEnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/TestEnvelopeController.cs index da7405c6..a2833b71 100644 --- a/EnvelopeGenerator.Web/Controllers/TestEnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/TestEnvelopeController.cs @@ -20,8 +20,21 @@ namespace EnvelopeGenerator.Web.Controllers } [HttpGet] - public virtual async Task GetAll([FromQuery] bool withDocuments = false, [FromQuery] bool withReceivers = false, [FromQuery] bool withHistory = false) + public virtual async Task GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = true, [FromQuery] bool withReceivers = true, [FromQuery] bool withHistory = true) { + if(envelopeKey is not null) + { + Tuple decode = Common.Helpers.DecodeEnvelopeReceiverId(envelopeKey); + var envelopeUuid = decode.Item1; + var envlopeServiceResult = await _service.ReadByUuidAsync(envelopeUuid, withDocuments: true, withReceivers: true, withHistory: true); + + if (envlopeServiceResult.IsSuccess) + { + return Ok(envlopeServiceResult.Data); + } + return NotFound(); + } + var result = await _service.ReadAllWithAsync(documents: withDocuments, receivers: withReceivers, history: withHistory); if (result.IsSuccess) { diff --git a/EnvelopeGenerator.Web/Views/Home/ShowEnvelope.cshtml b/EnvelopeGenerator.Web/Views/Home/ShowEnvelope.cshtml index 03ca489a..9f2e040f 100644 --- a/EnvelopeGenerator.Web/Views/Home/ShowEnvelope.cshtml +++ b/EnvelopeGenerator.Web/Views/Home/ShowEnvelope.cshtml @@ -1,42 +1,25 @@ -@{ +@using EnvelopeGenerator.Application.DTOs; +@{ ViewData["Title"] = "Dokument unterschreiben"; + EnvelopeDto? envelopeDto = ViewData["envelope"] as EnvelopeDto; } -