Table of Contents

Class StudentsController

Namespace
KadicErp.WebApi.Controllers.Academy
Assembly
KadicErp.WebApi.dll

US#5 — expediente completo del alumno: perfil, datos médicos, contactos de emergencia, autorizados a recoger y tarjeta de seguridad auditada. CA13: el alta con alumnos vive en FamiliesController (POST /families, POST /families/{id}/students), que es US#5, no US#4.

[ApiController]
[Route("api/academies/students")]
[Authorize]
[RequireModule("ACADEMY")]
public class StudentsController : ControllerBase
Inheritance
object
ControllerBase
StudentsController

Constructors

StudentsController(IMediator)

public StudentsController(IMediator mediator)

Parameters

mediator IMediator

Methods

ExistsForBusinessPartner(Guid, CancellationToken)

Puente Perfil de BP ("Alumno") -> StudentProfile real -- ver CheckStudentExistsByBusinessPartnerQuery.

[HttpGet("exists-for-business-partner/{businessPartnerId:guid}")]
[Authorize(Policy = "ACADEMY_FAMILIES_STUDENTS_VIEW")]
public Task<IActionResult> ExistsForBusinessPartner(Guid businessPartnerId, CancellationToken cancellationToken)

Parameters

businessPartnerId Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetById(Guid, CancellationToken)

[HttpGet("{id:guid}")]
[Authorize(Policy = "ACADEMY_FAMILIES_STUDENTS_VIEW")]
public Task<IActionResult> GetById(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetProgress(Guid, CancellationToken)

US#57 (#9089) — historial completo de observaciones del instructor sobre el alumno, agregado de todas sus sesiones/instructores (no solo la semana vigente de un programa, a diferencia de GET .../session-plan).

[HttpGet("{id:guid}/progress")]
[Authorize(Policy = "ACADEMY_PROGRESS_VIEW")]
public Task<IActionResult> GetProgress(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetSafetyCard(Guid, string?, CancellationToken)

[HttpGet("{id:guid}/safety-card")]
[Authorize(Policy = "ACADEMY_STUDENTS_VIEW_MEDICAL")]
public Task<IActionResult> GetSafetyCard(Guid id, string? origin, CancellationToken cancellationToken)

Parameters

id Guid
origin string
cancellationToken CancellationToken

Returns

Task<IActionResult>

SetActive(Guid, SetActiveBody, CancellationToken)

[HttpPatch("{id:guid}")]
[Authorize(Policy = "ACADEMY_STUDENTS_UPDATE")]
public Task<IActionResult> SetActive(Guid id, SetActiveBody body, CancellationToken cancellationToken)

Parameters

id Guid
body SetActiveBody
cancellationToken CancellationToken

Returns

Task<IActionResult>

Update(Guid, UpdateStudentBody, CancellationToken)

[HttpPut("{id:guid}")]
[Authorize(Policy = "ACADEMY_STUDENTS_UPDATE")]
public Task<IActionResult> Update(Guid id, UpdateStudentBody body, CancellationToken cancellationToken)

Parameters

id Guid
body UpdateStudentBody
cancellationToken CancellationToken

Returns

Task<IActionResult>

UpdateEmergencyContacts(Guid, UpdateEmergencyContactsBody, CancellationToken)

Ficha de seguridad (modo edición) — reemplaza la lista completa de contactos de emergencia. El frontend siempre manda el set curado desde tutores + relaciones "Núcleo familiar" del BP del alumno (ac-safety-card), nunca texto libre.

[HttpPut("{id:guid}/emergency-contacts")]
[Authorize(Policy = "ACADEMY_STUDENTS_VIEW_EMERGENCY_CONTACTS")]
public Task<IActionResult> UpdateEmergencyContacts(Guid id, UpdateEmergencyContactsBody body, CancellationToken cancellationToken)

Parameters

id Guid
body UpdateEmergencyContactsBody
cancellationToken CancellationToken

Returns

Task<IActionResult>

UpdateMedical(Guid, UpdateStudentMedicalBody, CancellationToken)

[HttpPut("{id:guid}/medical")]
[Authorize(Policy = "ACADEMY_STUDENTS_VIEW_MEDICAL")]
public Task<IActionResult> UpdateMedical(Guid id, UpdateStudentMedicalBody body, CancellationToken cancellationToken)

Parameters

id Guid
body UpdateStudentMedicalBody
cancellationToken CancellationToken

Returns

Task<IActionResult>

UpdatePickupAuthorizations(Guid, UpdatePickupAuthorizationsBody, CancellationToken)

[HttpPut("{id:guid}/pickup-authorizations")]
[Authorize(Policy = "ACADEMY_STUDENTS_VIEW_PICKUP_AUTH")]
public Task<IActionResult> UpdatePickupAuthorizations(Guid id, UpdatePickupAuthorizationsBody body, CancellationToken cancellationToken)

Parameters

id Guid
body UpdatePickupAuthorizationsBody
cancellationToken CancellationToken

Returns

Task<IActionResult>