Class DisciplinesController
- Namespace
- KadicErp.WebApi.Controllers.Academy
- Assembly
- KadicErp.WebApi.dll
US#1 (#8481) Task #8875, addendum 07/08/2026 — CRUD completo del catálogo de disciplinas.
Separado de ProgramsController (donde vivía como sub-recurso con solo Create+GetAll,
reusando permisos de Programs) para tener permisos propios (Academy.Disciplines) y una
pantalla de administración en Master Data → Catálogo.
[ApiController]
[Route("api/academies/disciplines")]
[Authorize]
[RequireModule("ACADEMY")]
public class DisciplinesController : ControllerBase
- Inheritance
-
objectControllerBaseDisciplinesController
Constructors
DisciplinesController(IMediator)
public DisciplinesController(IMediator mediator)
Parameters
mediatorIMediator
Methods
Create(CreateDisciplineBody, CancellationToken)
[HttpPost]
[Authorize(Policy = "ACADEMY_DISCIPLINES_CREATE")]
public Task<IActionResult> Create(CreateDisciplineBody body, CancellationToken cancellationToken)
Parameters
bodyCreateDisciplineBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetAll(PaginatorRequestDto, bool?, CancellationToken)
Listado paginado, para la pantalla de administración de Master Data.
[HttpGet]
[Authorize(Policy = "ACADEMY_DISCIPLINES_VIEW")]
public Task<IActionResult> GetAll(PaginatorRequestDto paginator, bool? isActive, CancellationToken cancellationToken)
Parameters
paginatorPaginatorRequestDtoisActivebool?cancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetById(Guid, CancellationToken)
[HttpGet("{id:guid}")]
[Authorize(Policy = "ACADEMY_DISCIPLINES_VIEW")]
public Task<IActionResult> GetById(Guid id, CancellationToken cancellationToken)
Parameters
idGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetOptions(CancellationToken)
Listado liviano sin paginar, usado por el selector de disciplina en Programs.
Mantiene la ruta histórica /programs/disciplines (ver AcademyDisciplinesService) fuera
de este controller — este endpoint es el reemplazo, servido bajo /disciplines/options.
[HttpGet("options")]
[Authorize(Policy = "ACADEMY_DISCIPLINES_VIEW")]
public Task<IActionResult> GetOptions(CancellationToken cancellationToken)
Parameters
cancellationTokenCancellationToken
Returns
- Task<IActionResult>
SetActive(Guid, SetDisciplineActiveBody, CancellationToken)
Toggle de IsActive. Rechaza con 400 si hay programas activos usando la disciplina.
[HttpPatch("{id:guid}")]
[Authorize(Policy = "ACADEMY_DISCIPLINES_DEACTIVATE")]
public Task<IActionResult> SetActive(Guid id, SetDisciplineActiveBody body, CancellationToken cancellationToken)
Parameters
idGuidbodySetDisciplineActiveBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
Update(Guid, UpdateDisciplineBody, CancellationToken)
[HttpPut("{id:guid}")]
[Authorize(Policy = "ACADEMY_DISCIPLINES_UPDATE")]
public Task<IActionResult> Update(Guid id, UpdateDisciplineBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyUpdateDisciplineBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>