Operation Details
Description: Method to check is the user a supervisor. A user is a supervisor if the user holds a lead position or holds a position that another position reports to.
Sterotype: ns
SQL
SELECT
  COUNT(*)
INTO
  :count 
FROM
  (Position INNER JOIN
  
  PositionHolderLink 
  ON Position.positionID = PositionHolderLink.positionID) 
  
  LEFT 
  
  JOIN
  
  PositionReportingLink 
  ON Position.positionID = PositionReportingLink.reportsToID 
WHERE PositionHolderLink.userName = :userName 
  AND PositionHolderLink.organisationStructureID = :organisationStructureID 
  AND PositionHolderLink.recordStatus = :recordStatus 
  AND Position.recordStatus = :recordStatus 
  AND 
  (
    Position.fromDate <= :currentDate 
    OR Position.fromDate IS NULL 
  ) 
  AND 
  (
    Position.toDate >= :currentDate 
    OR Position.toDate IS NULL 
  ) 
  AND 
  (
    PositionHolderLink.fromDate <= :currentDate 
    OR PositionHolderLink.fromDate IS NULL 
  ) 
  AND 
  (
    PositionHolderLink.toDate >= :currentDate 
    OR PositionHolderLink.toDate IS NULL 
  ) 
  AND 
  (
    
    (
      PositionReportingLink.positionRepLinkID IS NOT NULL 
      AND PositionReportingLink.organisationStructureID = :organisationStructureID 
      AND PositionReportingLink.recordStatus = :recordStatus 
    ) 
    OR Position.leadPositionInd = :leadPositionInd 
  )