alumnos.php 1018 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. require_once "{$_SERVER['DOCUMENT_ROOT']}/dependencies.php";
  3. if (!isset($_SESSION['user'])) {
  4. returnResponse(status: 401, error: true, message: 'No se ha iniciado sesión');
  5. exit();
  6. }
  7. header('Content-Type: application/json');
  8. $params = [
  9. 'moodle_host_id' => $_SESSION['moodle_id'],
  10. ];
  11. $alumnos = $db->query("WITH expanded_calificaciones AS (
  12. SELECT DISTINCT
  13. moodle_host_id,
  14. jsonb_array_elements(calificaciones)->>'grupo' AS grupo,
  15. jsonb_array_elements(calificaciones)->>'student_name' AS nombre,
  16. jsonb_array_elements(calificaciones)->>'username' AS username
  17. FROM
  18. public.snapshot_calificaciones
  19. WHERE
  20. moodle_host_id = :moodle_host_id
  21. )
  22. SELECT
  23. grupo,
  24. jsonb_agg(
  25. jsonb_build_object(
  26. 'nombre', nombre,
  27. 'username', username
  28. ) ORDER BY nombre
  29. ) AS alumnos
  30. FROM
  31. expanded_calificaciones
  32. GROUP BY grupo;",
  33. $params
  34. ) ?? [];
  35. echo json_encode(array_map(fn($alumno) => ['grupo' => $alumno['grupo'], 'alumnos' => json_decode($alumno['alumnos'])], $alumnos));