джоба есть
Tests / frontend-test (pull_request) Successful in 47s
Tests / backend-test (pull_request) Successful in 2m7s

This commit is contained in:
gorbenko.pavel
2026-08-17 14:14:45 +05:00
parent 48ede1420d
commit 2a7130c37f
25 changed files with 1533 additions and 5 deletions
@@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Tnsu.ApprovalRoute.Api.Common;
using Tnsu.ApprovalRoute.Application.RequestTypeLists;
namespace Tnsu.ApprovalRoute.Api.Controllers;
/// <summary>
/// Нумерованная серия SharePoint-списков по типу заявок: куда писать сейчас и вся
/// серия для админки.
/// </summary>
[ApiController]
[Authorize]
[Route("api/request-types/{requestTypeId:int}/lists")]
[Produces("application/json")]
public sealed class RequestTypeListsController(RequestTypeListService service) : ControllerBase
{
/// <summary>Вся серия списков типа заявок (архив + текущий), от первого к последнему.</summary>
[HttpGet]
[ProducesResponseType(typeof(ApiResponse<IReadOnlyList<RequestTypeListDto>>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiError), StatusCodes.Status404NotFound)]
public async Task<IActionResult> List(int requestTypeId, CancellationToken ct) =>
(await service.ListAsync(requestTypeId, ct)).ToActionResult();
/// <summary>
/// Список, в который нужно писать новые заявки этого типа.
///
/// Не чистый GET: если список добрал порог элементов, запрос ставит в очередь
/// фоновую задачу создания следующего (см. RequestTypeListService.GetCurrentAsync).
/// </summary>
[HttpGet("current")]
[ProducesResponseType(typeof(ApiResponse<CurrentRequestTypeListDto>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiError), StatusCodes.Status400BadRequest)]
[ProducesResponseType(typeof(ApiError), StatusCodes.Status404NotFound)]
public async Task<IActionResult> Current(int requestTypeId, CancellationToken ct) =>
(await service.GetCurrentAsync(requestTypeId, ct)).ToActionResult();
}