CREATE OR REPLACE FUNCTION public.fn_check_course_access(p_partner_id bigint, p_course_id integer)
 RETURNS text
 LANGUAGE plpgsql
AS $function$
DECLARE
  v_is_superadmin boolean := false;
  v_is_professor  boolean := false;
BEGIN
  SELECT is_superadmin, is_professor
  INTO   v_is_superadmin, v_is_professor
  FROM   public.vw_user_identity_roles
  WHERE  partner_id = p_partner_id;

  IF v_is_superadmin THEN RETURN 'superadmin'; END IF;

  IF v_is_professor THEN
    IF EXISTS(
      SELECT 1 FROM public.course_admins
      WHERE professor_id = p_partner_id AND course_id = p_course_id
    ) THEN RETURN 'course_admin'; END IF;

    -- Reserved for future read-only professor access
    IF EXISTS(
      SELECT 1 FROM public.course_professor_levels
      WHERE professor_id = p_partner_id AND course_id = p_course_id
    ) THEN RETURN 'professor'; END IF;
  END IF;

  RETURN 'none';
END;
$function$
;
