using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Mws.Application.Accounts; namespace Mws.Api.Controllers; [ApiController] [Route("api/accounts")] [Authorize] public class AccountsController(IAccountService accountService) : ControllerBase { [HttpGet] public async Task>> GetAll([FromQuery] string? q, CancellationToken ct) { return Ok(await accountService.GetAccountsAsync(User.GetUserId(), q, ct)); } [HttpPost] public async Task> Create([FromBody] CreateAccountRequest request, CancellationToken ct) { return Ok(await accountService.CreateAccountAsync(User.GetUserId(), request, ct)); } [HttpPut("{id:guid}")] public async Task> Update(Guid id, [FromBody] UpdateAccountRequest request, CancellationToken ct) { return Ok(await accountService.UpdateAccountAsync(User.GetUserId(), id, request, ct)); } [HttpDelete("{id:guid}")] public async Task Delete(Guid id, CancellationToken ct) { await accountService.DeleteAccountAsync(User.GetUserId(), id, ct); return NoContent(); } [HttpPost("{id:guid}/reset-password")] public async Task ResetPassword(Guid id, [FromBody] ResetPasswordRequest request, CancellationToken ct) { await accountService.ResetPasswordAsync(User.GetUserId(), id, request, ct); return NoContent(); } }