feat: эндпоинт заявок по основанию (СТ/потребность) с проверкой прав на открытие
GET /api/basis-requests?requestTypeId=&basisKey= читает заявки от имени приложения по всем партициям, а по каждой проверяет, может ли вызывающий её открыть. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user