using EnvelopeGenerator.API.Extensions; using EnvelopeGenerator.Application.Common.Dto; using EnvelopeGenerator.Application.Common.Extensions; using EnvelopeGenerator.Application.Documents.Queries; using EnvelopeGenerator.Domain.Constants; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace EnvelopeGenerator.API.Controllers; /// /// /// [Authorize(Policy = AuthPolicy.Receiver)] [ApiController] [Route("api/[controller]")] public class SignatureController : ControllerBase { private readonly IMediator _mediator; /// /// Initializes a new instance of . /// public SignatureController(IMediator mediator) { _mediator = mediator; } //TODO: update to use signature query /// /// /// /// /// /// [Authorize(Policy = AuthPolicy.Receiver)] [HttpGet("{envelopeKey}")] public async Task GetAnnotsOfReceiver(string envelopeKey, CancellationToken cancel) { int envelopeId = User.GetEnvelopeIdOfReceiver(); int receiverId = User.GetReceiverIdOfReceiver(); var doc = await _mediator.Send(new ReadDocumentQuery() { EnvelopeId = envelopeId }, cancel); if (doc.Elements is not IEnumerable docSignatures) return NotFound("Document is empty."); var rcvSignatures = docSignatures.Where(s => s.ReceiverId == receiverId).ToList(); if (rcvSignatures is null) return NotFound("No signatures found for the current receiver."); else return Ok(rcvSignatures); } }