using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Tnsu.ApprovalRoute.Api.Auth;
using Tnsu.ApprovalRoute.Api.Common;
using Tnsu.ApprovalRoute.Application.BasisRequests;
namespace Tnsu.ApprovalRoute.Api.Controllers;
///
/// Заявки, поданные по одному основанию (СТ, потребность). Видны все, независимо
/// от прав вызывающего на элементы; CanOpen говорит, может ли он открыть заявку.
/// Только пользовательский токен: без email права проверять не для кого.
///
[ApiController]
[Authorize(Policy = AuthPolicies.Delegated)]
[Route("api/basis-requests")]
[Produces("application/json")]
public sealed class BasisRequestsController(BasisRequestsService service) : ControllerBase
{
/// Заявки типа requestTypeId с BasisKey = basisKey по всем партициям.
[HttpGet]
[ProducesResponseType(typeof(ApiResponse>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiError), StatusCodes.Status404NotFound)]
[ProducesResponseType(typeof(ApiError), StatusCodes.Status400BadRequest)]
public async Task Get(
[FromQuery] int requestTypeId,
// string? — пустой параметр фронтенд вырезает из URL целиком (см. RequestManageController.Search).
[FromQuery] string? basisKey,
CancellationToken ct) =>
(await service.GetByBasisAsync(requestTypeId, basisKey ?? string.Empty, ct)).ToActionResult();
}