a46782920b
GET /api/basis-requests?requestTypeId=&basisKey= читает заявки от имени приложения по всем партициям, а по каждой проверяет, может ли вызывающий её открыть. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
1.7 KiB
C#
32 lines
1.7 KiB
C#
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;
|
||
|
||
/// <summary>
|
||
/// Заявки, поданные по одному основанию (СТ, потребность). Видны все, независимо
|
||
/// от прав вызывающего на элементы; CanOpen говорит, может ли он открыть заявку.
|
||
/// Только пользовательский токен: без email права проверять не для кого.
|
||
/// </summary>
|
||
[ApiController]
|
||
[Authorize(Policy = AuthPolicies.Delegated)]
|
||
[Route("api/basis-requests")]
|
||
[Produces("application/json")]
|
||
public sealed class BasisRequestsController(BasisRequestsService service) : ControllerBase
|
||
{
|
||
/// <summary>Заявки типа requestTypeId с BasisKey = basisKey по всем партициям.</summary>
|
||
[HttpGet]
|
||
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<BasisRequestDto>>), StatusCodes.Status200OK)]
|
||
[ProducesResponseType(typeof(ApiError), StatusCodes.Status404NotFound)]
|
||
[ProducesResponseType(typeof(ApiError), StatusCodes.Status400BadRequest)]
|
||
public async Task<IActionResult> Get(
|
||
[FromQuery] int requestTypeId,
|
||
// string? — пустой параметр фронтенд вырезает из URL целиком (см. RequestManageController.Search).
|
||
[FromQuery] string? basisKey,
|
||
CancellationToken ct) =>
|
||
(await service.GetByBasisAsync(requestTypeId, basisKey ?? string.Empty, ct)).ToActionResult();
|
||
}
|