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(); }