calificaciones.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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_id' => $_SESSION['moodle_id'],
  10. 'username' => $_POST['username']
  11. ];
  12. $calificaciones = $db->query("SELECT * from jsonb_array_elements(public.consulta_moodle(
  13. consulta => (SELECT replace(consulta_sql, ';', '') from consulta whERE clave = 'c-fin')::TEXT,
  14. moodle_id => :moodle_id
  15. )) AS calificaciones WHERE calificaciones->>'username' = :username;",
  16. $params
  17. ) ?? [];
  18. $calificaciones = array_column($calificaciones, 'value');
  19. $calificaciones = array_map(fn($calificacion) => json_decode($calificacion), $calificaciones);
  20. $timeline = $db->query('SELECT * from public.promedio_snapshot(
  21. moodle_host_id_param => :moodle_id,
  22. username_param => :username)',
  23. $params
  24. ) ?? [];
  25. $snapshots = $db->where('moodle_host_id', $_SESSION['moodle_id'])->get('snapshot_calificaciones', null, 'calificaciones, created_at');
  26. $snapshots = array_map(fn($snapshot) => array(
  27. 'fecha' => date('Y-m-d', strtotime($snapshot['created_at'])),
  28. 'calificaciones' => array_values(array_filter(
  29. json_decode($snapshot['calificaciones']),
  30. fn($calificacion) => $calificacion->username === $_POST['username']
  31. ))
  32. ), $snapshots);
  33. echo json_encode([
  34. 'calificaciones' => $calificaciones,
  35. 'timeline' => $timeline,
  36. 'snapshots' => $snapshots
  37. ]);