using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using PSTW_CentralSystem.DBContext; using PSTW_CentralSystem.Models; namespace PSTW_CentralSystem.Controllers.API { [ApiController] [Route("[controller]")] public class IdentityAPI : ControllerBase { private readonly ILogger _logger; private readonly IdentityDBContext _authDbContext; private readonly UserManager _userManager; public IdentityAPI(ILogger logger, IdentityDBContext authDbContext, UserManager userManager) { _logger = logger; _authDbContext = authDbContext; _userManager = userManager; } [HttpPost("GetUserInformation/")] public async Task GetUserInformation() { try { var user = await _userManager.GetUserAsync(User); var userRole = await _userManager.GetRolesAsync(user!); if (user == null) { return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."); } var userInfo = await _authDbContext.Users.Include(u => u.Department).Select(u => new { u.Id, u.NormalizedEmail, u.Department, userRole, }).Where(u => u.Id == user.Id).FirstOrDefaultAsync(); if (userInfo == null) { return NotFound("User not found"); } return Ok(new { UserInfo = userInfo }); } catch (Exception ex) { return StatusCode(500, $"An error occurred: {ex.Message}"); } } } }