Class GroupsController
- Namespace
- KadicErp.WebApi.Controllers.Academy
- Assembly
- KadicErp.WebApi.dll
US#46 (US-201, #9077) — CRUD del Grupo (padre, patrón de días). Reemplaza el CRUD viejo
que, desde US#35 (US-101), seguía apuntando a la composición Group+Section+SectionLevel
para no romper el contrato plano congelado. GetSchedule/CheckConflicts se mudaron a
SectionsController (US#47, US-202) — siempre operaron sobre horario/conflictos de
Sección, no de Grupo; vivían aquí solo porque US-202 no existía todavía.
[ApiController]
[Route("api/academies/groups")]
[Authorize]
[RequireModule("ACADEMY")]
public class GroupsController : ControllerBase
- Inheritance
-
objectControllerBaseGroupsController
Constructors
GroupsController(IMediator)
public GroupsController(IMediator mediator)
Parameters
mediatorIMediator
Methods
Create(CreateGroupCommand, CancellationToken)
CA1 — venueId, programId, name, days.
[HttpPost]
[Authorize(Policy = "ACADEMY_GROUPS_CREATE")]
public Task<IActionResult> Create(CreateGroupCommand command, CancellationToken cancellationToken)
Parameters
commandCreateGroupCommandcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetAll(PaginatorRequestDto, Guid?, Guid?, CancellationToken)
CA3 — lista paginada, filtro opcional por sede.
[HttpGet]
[Authorize(Policy = "ACADEMY_GROUPS_VIEW")]
public Task<IActionResult> GetAll(PaginatorRequestDto paginator, Guid? venueId, Guid? academicPeriodId, CancellationToken cancellationToken)
Parameters
paginatorPaginatorRequestDtovenueIdGuid?academicPeriodIdGuid?cancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetById(Guid, CancellationToken)
[HttpGet("{id:guid}")]
[Authorize(Policy = "ACADEMY_GROUPS_VIEW")]
public Task<IActionResult> GetById(Guid id, CancellationToken cancellationToken)
Parameters
idGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetHierarchy(Guid?, bool, CancellationToken)
[HttpGet("hierarchy")]
[Authorize(Policy = "ACADEMY_GROUPS_VIEW")]
[ProducesResponseType(typeof(GroupHierarchyDto), 200)]
public Task<IActionResult> GetHierarchy(Guid? venueId, bool includeInactive = false, CancellationToken cancellationToken = default)
Parameters
venueIdGuid?includeInactiveboolcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetKpis(Guid?, CancellationToken)
US#48 - Operational KPIs for the Group-Section hierarchy, optionally filtered by venue. Includes active groups, sections and enrollments; students are counted uniquely.
[HttpGet("kpis")]
[Authorize(Policy = "ACADEMY_GROUPS_VIEW")]
[ProducesResponseType(typeof(GroupKpisDto), 200)]
public Task<IActionResult> GetKpis(Guid? venueId, CancellationToken cancellationToken)
Parameters
venueIdGuid?cancellationTokenCancellationToken
Returns
- Task<IActionResult>
SetActive(Guid, SetGroupActiveBody, CancellationToken)
CA4 — baja lógica, nunca borrado físico.
[HttpPatch("{id:guid}")]
[Authorize(Policy = "ACADEMY_GROUPS_DEACTIVATE")]
public Task<IActionResult> SetActive(Guid id, SetGroupActiveBody body, CancellationToken cancellationToken)
Parameters
idGuidbodySetGroupActiveBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
Update(Guid, UpdateGroupBody, CancellationToken)
CA2.
[HttpPut("{id:guid}")]
[Authorize(Policy = "ACADEMY_GROUPS_UPDATE")]
public Task<IActionResult> Update(Guid id, UpdateGroupBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyUpdateGroupBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>