using DigitalData.Core.DTO; using EnvelopeGenerator.Application.Contracts; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace EnvelopeGenerator.GeneratorAPI.Controllers { [Route("api/[controller]")] [ApiController] [Authorize] public class EnvelopeController : ControllerBase { private ILogger _logger; private readonly IEnvelopeService _envelopeService; public EnvelopeController(ILogger logger, IEnvelopeService envelopeService) { _logger = logger; _envelopeService = envelopeService; } [Authorize] public async Task GetCurrentAsync(bool current_user) { try { var id = this.GetId(); if (id is int intId) return await _envelopeService.ReadByIdAsync(intId).ThenAsync( Success: Ok, Fail: IActionResult (msg, ntc) => { _logger.LogNotice(ntc); return StatusCode(StatusCodes.Status500InternalServerError); }); else { _logger.LogError("Despite successful authorization, the 'api/envelope' route encountered an issue: the user ID is not recognized as an integer. This may be due to the removal of the ID during the creation of the claims list."); return StatusCode(StatusCodes.Status500InternalServerError); } } catch (Exception ex) { _logger.LogError(ex, "{Message}", ex.Message); return StatusCode(StatusCodes.Status500InternalServerError); } } } }