using DigitalData.Core.DTO; using DigitalData.UserManager.Application.Contracts; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using WorkFlow.API.Attributes; namespace WorkFlow.API.Controllers; [APIKeyAuth] [Route("api/[controller]")] [ApiController] [Authorize] public class UserController : ControllerBase { private readonly ILogger logger; private readonly IUserService userService; public UserController(ILogger logger, IUserService userService) { this.logger = logger; this.userService = userService; } [HttpGet] public async Task GetAsync() { try { if (!User.TryGetUserId(out var id)) { logger.LogError("Authorization failed: User ID claim not found."); return Unauthorized("Failed to retrieve user identity."); } return await userService.ReadByIdAsync(id).ThenAsync( Success: Ok, Fail: IActionResult (msg, ntc) => { logger.LogNotice(ntc); return NotFound(); }); } catch (Exception ex) { logger.LogError(ex, "An unexpected error occurred while processing the request: {Message}", ex.Message); return StatusCode(StatusCodes.Status500InternalServerError, "An internal server error occurred."); } } }