Operation Details
Description: Returns the details of tasks that are assigned to a specified user and that are due within the specified time period. The tasks may be assigned to the specified users positions or be present on a work queue that the user is subscribed to. The search criteria allow for the details of reserved tasks, assigned tasks or all of the tasks to be returned. The results are ordered by the due date, earliest first.
Sterotype: nsmulti
SQL
SELECT
  t.taskID,
  t.priority,
  t.reservedBy,
  u.fullName,
  t.assignedDateTime,
  w.deadlineTime,
  t.wdoSnapshot,
  t.overflowInd,
  t.status,
  t.restartTime,
  t.versionNo
INTO
  :taskID,
  :taskPriority,
  :taskReservedByUserName,
  :taskReservedByFullUserName,
  :taskAssignedDateTime,
  :taskDeadlineDateTime,
  :wdoSnapshot,
  :overflowInd,
  :status,
  :restartTime,
  :versionNo 
FROM
  Task t 
  
  LEFT OUTER JOIN
  
  Users u 
  ON (t.reservedBy = u.userName) 
  
  LEFT OUTER JOIN
  
  WorkflowDeadline w 
  ON (t.taskID = w.taskID) 
WHERE t.taskID IN 
  ( 
  SELECT
    taskID 
  FROM
    TaskAssignment ta 
  WHERE ta.assigneeType = :assigneeType 
    AND ta.relatedID IN 
    ( 
    SELECT
      DISTINCT p.positionID 
    FROM
      Users u ,
      PositionHolderLink ph ,
      Position p 
    WHERE u.userName = :relatedName 
      AND u.userName = ph.userName 
      AND ph.positionID = p.positionID 
      AND ph.recordStatus = :recordStatus 
      AND :currentDate >= ph.fromDate 
      AND 
      (
        :currentDate <= ph.toDate 
        OR ph.toDate IS NULL 
      ) 
    ) 
  ) 
  AND 
  (
    
    (
      :allUserTasksInd = '0' 
      OR 
      (
        t.reservedBy IS NULL 
        OR t.reservedBy IS NOT NULL 
      ) 
    ) 
    AND 
    (
      :allReservedUserTasksInd = '0' 
      OR t.reservedBy IS NOT NULL 
    ) 
    AND 
    (
      :allAssignedUserTasksInd = '0' 
      OR t.reservedBy IS NULL 
    ) 
    AND 
    (
      :searchByPriorityInd ='0' 
      OR t.priority = :priority 
    ) 
    AND 
    (
      :searchByStatusInd ='0' 
      OR t.status = :status 
    ) 
    AND 
    (
      :searchByDueDateInd ='0' 
      OR 
      (
        w.deadlineTime >= :fromDeadlineDateTime 
        AND w.deadlineTime <= :toDeadlineDateTime 
      ) 
    ) 
  ) 
ORDER BY deadlineTime ASC