SELECT
RD.ID, RD.Name, RD.User_ID, RD.ColDefName, RD.ColDefIsGlobal, RD.VisibilityKind, RD.UniqueID
FROM
RestrictionDefinitions RD
WHERE
(RD.ProgramPoint = :ProgramPoint) AND
(RD.Kind = :Kind) AND
(
((RD.VisibilityKind = 0) AND (RD.User_ID = :User_ID)) OR
(RD.VisibilityKind = 1) OR
((RD.VisibilityKind = 2) AND
(exists (
SELECT S.ID FROM RestrictionSharings S
LEFT JOIN SecurityUserRoleLinks L ON L.Role_ID = S.VisibleForRole_ID
where (S.Parent_ID = RD.ID) AND
((S.VisibleForUser_ID = :User_ID) OR (L.User_ID = :User_ID))
) or exists
(SELECT S2.ID FROM RestrictionSharings S2
LEFT JOIN SecurityRoleGroupLinks G ON G.Group_ID = S2.visibleForGroup_ID
LEFT JOIN SecurityUserRoleLinks L ON L.Role_ID = G.Role_ID
WHERE
(S2.Parent_ID = RD.ID) AND
(L.User_ID = :User_ID)
)
)
)
)
ORDER BY
RD.NameGenerated by ABRA Software a.s. 27.10.2021 16:34:11