using DigitalData.Core.API; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Infrastructure.Contracts; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace DigitalData.UserManager.API.Controllers { [Authorize] public class UserController : CRUDControllerBase { public UserController(ILogger logger, IUserService service) : base(logger, service) { } [HttpGet("ByModuleId/{moduleId}")] public async Task GetByModuleId([FromRoute] int moduleId, [FromQuery]bool assigned = true) { var result = assigned ? await _service.ReadByModuleIdAsync(moduleId) : await _service.ReadUnassignedByModuleIdAsync(moduleId); return Ok(result); } [HttpGet("ByGroupId/{groupId}")] public async Task GetByGroupId([FromRoute] int groupId, [FromQuery] bool assigned = true) { var result = assigned ? await _service.ReadByGroupIdAsync(groupId) : await _service.ReadUnassignedByGroupIdAsync(groupId); ; return Ok(result); } [HttpPost("ByDir")] public async Task CreateByDir(UserPrincipalDto upDto) { var result = await _service.CreateAsync(upDto); if (result.IsSuccess) { var createdResource = new { Id = result.Data }; var actionName = nameof(GetById); var routeValues = new { id = createdResource.Id }; return CreatedAtAction(actionName, routeValues, createdResource); } return BadRequest(result); } [HttpGet("ByUsername/{username}")] public virtual async Task GetByUsername([FromRoute] string username) { var result = await _service.ReadByUsernameAsync(username); if (result.IsSuccess) { return Ok(result); } return NotFound(result); } } }