using Bit.Api.Models.Response; using Bit.Api.Vault.Models.Response; using Bit.Core; using Bit.Core.Services; using Bit.Core.Utilities; using Bit.Core.Vault.Enums; using Bit.Core.Vault.Queries; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Bit.Api.Vault.Controllers; [Route("tasks")] [Authorize("Application")] [RequireFeature(FeatureFlagKeys.SecurityTasks)] public class SecurityTaskController : Controller { private readonly IUserService _userService; private readonly IGetTaskDetailsForUserQuery _getTaskDetailsForUserQuery; public SecurityTaskController(IUserService userService, IGetTaskDetailsForUserQuery getTaskDetailsForUserQuery) { _userService = userService; _getTaskDetailsForUserQuery = getTaskDetailsForUserQuery; } /// /// Retrieves security tasks for the current user. /// /// Optional filter for task status. If not provided returns tasks of all statuses. /// A list response model containing the security tasks for the user. [HttpGet("")] public async Task> Get([FromQuery] SecurityTaskStatus? status) { var userId = _userService.GetProperUserId(User).Value; var securityTasks = await _getTaskDetailsForUserQuery.GetTaskDetailsForUserAsync(userId, status); var response = securityTasks.Select(x => new SecurityTasksResponseModel(x)).ToList(); return new ListResponseModel(response); } }