CREATE OR REPLACE FUNCTION public.fn_check_enrollment_quota(p_tutor_id bigint, p_level_id integer, p_course_id integer)
 RETURNS text
 LANGUAGE plpgsql
AS $function$
-- Comprueba si el tutor tiene cupo disponible en el nivel/curso indicado.
-- Devuelve 'ACTIVE' si hay hueco, 'PENDING' si el cupo está lleno.
DECLARE
    v_used  integer;
    v_limit integer;
BEGIN
    SELECT COUNT(*) INTO v_used
    FROM public.student_profiles
    WHERE tutor_id  = p_tutor_id
      AND level_id  = p_level_id
      AND course_id = p_course_id
      AND status    = 'ACTIVE';

    SELECT tutor_quota_limit INTO v_limit
    FROM public.levels
    WHERE level_id  = p_level_id
      AND course_id = p_course_id;

    IF v_used < v_limit THEN
        RETURN 'ACTIVE';
    ELSE
        RETURN 'PENDING';
    END IF;
END;
$function$
;
