CREATE OR REPLACE FUNCTION public.fn_admin_toggle_partner_role(p_partner_id bigint, p_role text, p_active boolean)
 RETURNS jsonb
 LANGUAGE plpgsql
AS $function$
BEGIN
    IF p_active THEN
        IF p_role = 'TUTOR' THEN
            INSERT INTO public.tutor_profiles (partner_id, status) VALUES (p_partner_id, 'ACTIVE')
            ON CONFLICT (partner_id) DO UPDATE SET status = 'ACTIVE';
        ELSIF p_role = 'PROFESSOR' THEN
            INSERT INTO public.professor_profiles (partner_id, status) VALUES (p_partner_id, 'ACTIVE')
            ON CONFLICT (partner_id) DO UPDATE SET status = 'ACTIVE';
        ELSIF p_role = 'SUPERADMIN' THEN
            INSERT INTO public.superadmin_profiles (partner_id, status) VALUES (p_partner_id, 'ACTIVE')
            ON CONFLICT (partner_id) DO UPDATE SET status = 'ACTIVE';
        ELSE
            RETURN jsonb_build_object('error', 'Rol no válido: ' || p_role);
        END IF;
    ELSE
        IF p_role = 'TUTOR' THEN
            UPDATE public.tutor_profiles SET status = 'INACTIVE' WHERE partner_id = p_partner_id;
        ELSIF p_role = 'PROFESSOR' THEN
            UPDATE public.professor_profiles SET status = 'INACTIVE' WHERE partner_id = p_partner_id;
        ELSIF p_role = 'SUPERADMIN' THEN
            UPDATE public.superadmin_profiles SET status = 'INACTIVE' WHERE partner_id = p_partner_id;
        ELSE
            RETURN jsonb_build_object('error', 'Rol no válido: ' || p_role);
        END IF;
    END IF;
    RETURN jsonb_build_object('success', true);
END;
$function$
;
