diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs index e6bd87b2..35baa429 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs @@ -1,33 +1,53 @@ -using DigitalData.Core.API; +using DigitalData.Core.DTO; using EnvelopeGenerator.Application.Contracts; -using EnvelopeGenerator.Application.DTOs; -using EnvelopeGenerator.Domain.Entities; using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Infrastructure; +using System.DirectoryServices.Protocols; namespace EnvelopeGenerator.GeneratorAPI.Controllers { [Route("api/[controller]")] [ApiController] - public class EnvelopeReceiverController : BasicCRUDControllerBase - { - public EnvelopeReceiverController(ILogger logger, IEnvelopeReceiverService service) : base(logger, service) + public class EnvelopeReceiverController : ControllerBase + { + private readonly ILogger _logger; + private readonly IEnvelopeReceiverService _erService; + + public EnvelopeReceiverController(ILogger logger, IEnvelopeReceiverService envelopeReceiverService) { + _logger = logger; + _erService = envelopeReceiverService; } - + [Authorize] - [HttpGet("claims")] - public IActionResult GetClaims() + [HttpGet] + public async Task GetEnvelopeReceiver() { + try + { + var username = this.GetUsername(); - var claims = new { - User.Identity?.IsAuthenticated, - Id = this.GetId(), - Email = this.GetEmail() - }; + if (username is null) + { + _logger.LogError(@"Envelope Receiver dto cannot be sent because username claim is null. Potential authentication and authorization error. The value of other claims are [id: {id}], [username: {username}], [name: {name}], [prename: {prename}], [email: {email}].", + this.GetId(), this.GetUsername(), this.GetName(), this.GetPrename(), this.GetEmail()); + return StatusCode(StatusCodes.Status500InternalServerError); + } - return Ok(claims); + return await _erService.ReadByUsernameAsync(username).ThenAsync( + Success: Ok, + Fail: IActionResult (msg, ntc) => + { + _logger.LogNotice(ntc); + return StatusCode(StatusCodes.Status500InternalServerError, msg); + }); + } + catch(Exception ex) + { + _logger.LogError(ex, "An unexpected error occurred. {message}", ex.Message); + return new StatusCodeResult(StatusCodes.Status500InternalServerError); + } } } } \ No newline at end of file