CORE/views/users_apps.sql
2022-01-05 18:16:19 +01:00

97 lines
2.4 KiB
SQL

CREATE OR REPLACE VIEW users_apps AS
WITH p AS (
SELECT
a.application_id AS app_id,
a.alias AS app_alias,
a.application_group AS app_group,
a.owner AS app_schema,
a.application_name AS app_name,
a.version AS app_version,
a.authentication_scheme,
a.last_updated_on,
a.pages AS count_pages,
p.page_id
FROM apex_applications a
JOIN apex_application_pages p
ON p.application_id = a.application_id
AND a.home_link LIKE '%:' || p.page_alias || ':%'
)
SELECT
a.app_id,
NVL(p.app_name, a.app_name) AS app_name,
p.app_alias,
p.app_group,
p.app_schema,
--
CASE WHEN p.page_id IS NOT NULL
THEN app.get_page_link (
in_page_id => p.page_id,
in_app_id => a.app_id,
in_session_id => CASE WHEN a.app_id = app.get_core_app_id() THEN 0 END
) END AS app_url,
--
p.app_version,
p.authentication_scheme,
p.last_updated_on,
p.count_pages,
--
a.is_active,
a.is_visible,
--
CASE WHEN
p.app_schema IS NOT NULL
AND (
a.is_visible = 'Y'
OR a.app_id IN (
SELECT r.app_id
FROM user_roles r
WHERE r.user_id = app.get_user_id()
)
)
AND (
app.is_developer_y() = 'Y'
OR a.app_id != app.get_core_app_id()
)
THEN 'Y' END AS is_available,
--
a.description_,
a.message,
NULL AS action,
a.app_id AS action_id
FROM apps a
LEFT JOIN p
ON p.app_id = a.app_id
UNION ALL
--
SELECT
p.app_id,
p.app_name,
p.app_alias,
p.app_group,
p.app_schema,
--
app.get_page_link (
in_page_id => p.page_id,
in_app_id => p.app_id
) AS app_url,
--
p.app_version,
p.authentication_scheme,
p.last_updated_on,
p.count_pages,
--
NULL AS is_active,
NULL AS is_visible,
NULL AS is_available,
--
NULL AS description_,
NULL AS message,
--
app.get_icon('fa-plus-square', 'Create new record') AS action,
p.app_id AS action_id
FROM p
LEFT JOIN apps a
ON a.app_id = p.app_id
WHERE a.app_id IS NULL;