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
-
objectControllerBaseStudentsController
Constructors
StudentsController(IMediator)
public StudentsController(IMediator mediator)
Parameters
mediatorIMediator
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
businessPartnerIdGuidcancellationTokenCancellationToken
Returns
- Task<IActionResult>
GetById(Guid, CancellationToken)
[HttpGet("{id:guid}")]
[Authorize(Policy = "ACADEMY_FAMILIES_STUDENTS_VIEW")]
public Task<IActionResult> GetById(Guid id, CancellationToken cancellationToken)
Parameters
idGuidcancellationTokenCancellationToken
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
idGuidcancellationTokenCancellationToken
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
idGuidoriginstringcancellationTokenCancellationToken
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
idGuidbodySetActiveBodycancellationTokenCancellationToken
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
idGuidbodyUpdateStudentBodycancellationTokenCancellationToken
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
idGuidbodyUpdateEmergencyContactsBodycancellationTokenCancellationToken
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
idGuidbodyUpdateStudentMedicalBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>
UpdatePickupAuthorizations(Guid, UpdatePickupAuthorizationsBody, CancellationToken)
Mismo criterio que UpdateEmergencyContacts(Guid, UpdateEmergencyContactsBody, CancellationToken) para autorizados a recoger.
[HttpPut("{id:guid}/pickup-authorizations")]
[Authorize(Policy = "ACADEMY_STUDENTS_VIEW_PICKUP_AUTH")]
public Task<IActionResult> UpdatePickupAuthorizations(Guid id, UpdatePickupAuthorizationsBody body, CancellationToken cancellationToken)
Parameters
idGuidbodyUpdatePickupAuthorizationsBodycancellationTokenCancellationToken
Returns
- Task<IActionResult>