Class ClassScheduleController
- Namespace
- KadicErp.WebApi.Controllers.Academy
- Assembly
- KadicErp.WebApi.dll
US#32 (#8990) — catálogo, asignación y adherencia del Programa de Clases. Renombrado
de TrainingPlansController por US#39 (US-105, #9070) CA1: el nombre técnico ahora coincide
con el nombre de negocio "Programa de Clases" (branding UI "360", fuera del código, DA-01). El
registro por clase vive en SessionsController (embebido en el roster de
asistencia de US#7, no en pantalla propia).
[ApiController]
[Route("api/academies/class-schedule")]
[Authorize]
[RequireModule("ACADEMY")]
public class ClassScheduleController : ControllerBase
- Inheritance
-
objectControllerBaseClassScheduleController
Constructors
ClassScheduleController(IMediator)
public ClassScheduleController(IMediator mediator)
Parameters
mediatorIMediator
Methods
AddItem(Guid, AddClassScheduleItemBody, CancellationToken)
US#41 (US9083, #9083) — agrega una unidad de trabajo individual desde el catálogo de ejercicios, sin reemplazar la lista completa (a diferencia de Update(Guid, UpdateClassScheduleBody, CancellationToken)).
[HttpPost("{id:guid}/items")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_EDIT")]
public Task<IActionResult> AddItem(Guid id, AddClassScheduleItemBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyAddClassScheduleItemBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
Assign(Guid, AssignClassScheduleBody, CancellationToken)
[HttpPost("{id:guid}/assign")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_ASSIGN")]
public Task<IActionResult> Assign(Guid id, AssignClassScheduleBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyAssignClassScheduleBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
Create(CreateClassScheduleCommand, CancellationToken)
[HttpPost]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_CREATE")]
public Task<IActionResult> Create(CreateClassScheduleCommand command, CancellationToken cancellationToken)
Parameters
commandCreateClassScheduleCommandcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetAdherence(Guid, CancellationToken)
CA12 — sujeto a ClassSchedule.View; sin programa asignado, la respuesta trae
todos los campos en null ("sin dato"), nunca 0%.
[HttpGet("/api/academies/students/{studentId:guid}/plan-adherence")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_VIEW")]
public Task<IActionResult> GetAdherence(Guid studentId, CancellationToken cancellationToken)
Parameters
studentIdGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetAll(bool?, CancellationToken)
[HttpGet]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_VIEW")]
public Task<IActionResult> GetAll(bool? isActive, CancellationToken cancellationToken)
Parameters
isActivebool?cancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetById(Guid, CancellationToken)
[HttpGet("{id:guid}")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_VIEW")]
public Task<IActionResult> GetById(Guid id, CancellationToken cancellationToken)
Parameters
idGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
RemoveItem(Guid, Guid, CancellationToken)
US#41 (US9083, #9083) — elimina una unidad de trabajo agregada desde el catálogo.
Las unidades base/master retornan 400 (AppException de dominio).
[HttpDelete("{id:guid}/items/{itemId:guid}")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_EDIT")]
public Task<IActionResult> RemoveItem(Guid id, Guid itemId, CancellationToken cancellationToken)
Parameters
idGuiditemIdGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
Resolve(Guid?, Guid?, Guid, DateOnly?, CancellationToken)
US9082 ("tree resolver") — resuelve el programa vigente para una sección o un
atleta en una fecha, con los ítems ya filtrados por nivel. Ruta con segmento literal
resolve (no {id:guid}) para no colisionar de firma con GetById(Guid, CancellationToken): ambos
son GET sobre la raíz del recurso pero uno identifica un programa por Id y este resuelve
por destinatario/fecha/nivel.
[HttpGet("resolve")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_VIEW")]
public Task<IActionResult> Resolve(Guid? sectionId, Guid? studentProfileId, Guid levelId, DateOnly? date, CancellationToken cancellationToken)
Parameters
sectionIdGuid?studentProfileIdGuid?levelIdGuiddateDateOnly?cancellationTokenCancellationToken
Returns
- Task<IActionResult>
Tree(CancellationToken)
US9082 CA1 ("tree resolver") — árbol Sección·Nivel del tenant actual (join de
SectionLevel con Section.Name/Level.Name, solo secciones activas). Ruta con segmento
literal tree (no {id:guid}) por el mismo motivo que Resolve(Guid?, Guid?, Guid, DateOnly?, CancellationToken): debe ir
antes de GetById en el orden de matching de rutas para no colisionar de firma.
[HttpGet("tree")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_VIEW")]
public Task<IActionResult> Tree(CancellationToken cancellationToken)
Parameters
cancellationTokenCancellationToken
Returns
- Task<IActionResult>
Update(Guid, UpdateClassScheduleBody, CancellationToken)
[HttpPut("{id:guid}")]
[Authorize(Policy = "ACADEMY_CLASS_SCHEDULE_EDIT")]
public Task<IActionResult> Update(Guid id, UpdateClassScheduleBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyUpdateClassScheduleBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>