using Diligent.WebAPI.Contracts.DTOs.User; using Diligent.WebAPI.Data.Entities; namespace Diligent.WebAPI.Host.Controllers.V1 { [ApiVersion("1.0")] [Route("v{version:apiVersion}/users")] [ApiController] public class UsersController : ControllerBase { private readonly IUserService _userService; private readonly IMapper _mapper; public UsersController(IUserService userService, IMapper mapper) { _userService = userService; _mapper = mapper; } [Authorize] [HttpGet] public async Task GetAll() { return Ok(_mapper.Map, IEnumerable>(await _userService.GetAll())); } [Authorize] [HttpPost("toggleEnable/{id}")] public async Task ToggleEnable(int id) { var user = await _userService.GetById(id); await _userService.ToggleEnable(user); return Ok(user.Id); } [Authorize] [HttpDelete("{id}")] public async Task DeleteUser(int id) { var user = await _userService.GetById(id); await _userService.RemoveUser(user); return Ok(user.Id); } [Authorize] [HttpGet("{id}")] public async Task GetUser(int id) { var user = await _userService.GetById(id); return Ok(_mapper.Map(user)); } [Authorize] [HttpPost("invite")] public async Task InviteUser([FromBody] InviteDTO invite) { var response = await _userService.SendRegistrationLink(invite); if (response.IsError is true) return BadRequest(new { message = response.ErrorMessage }); return Ok(response.Data); } } }