CREATE OR REPLACE FUNCTION public.fn_professor_sync_attendance(p_session_id integer, p_attendance jsonb)
 RETURNS jsonb
 LANGUAGE plpgsql
AS $function$
DECLARE
  v_count integer := 0;
BEGIN
  UPDATE public.session_participants sp
  SET
    attended         = true,
    zoom_joined_at   = (a->>'join_time')::timestamptz,
    zoom_left_at     = (a->>'leave_time')::timestamptz,
    zoom_duration_min = (a->>'duration_min')::integer
  FROM jsonb_array_elements(p_attendance) AS a
  WHERE sp.session_id = p_session_id
    AND lower(sp.email) = lower(a->>'email');

  GET DIAGNOSTICS v_count = ROW_COUNT;

  UPDATE public.sessions
  SET attendance_synced_at = now()
  WHERE session_id = p_session_id;

  RETURN jsonb_build_object('synced', v_count);
END;
$function$
;
