Example #1
0
 /**
  * returns the tasks with the isOnTime attribute to definie color.
  * @static
  * @param User $user
  * @param int $today   (a day AT MIDNIGHT)
  * @param bool $addMonitored
  * @return ScheduledTask[] array of ScheduledTask
  */
 public static function scheduleUser(User $user, $today, $teamid, $addMonitored = false)
 {
     $scheduledTaskList = array();
     // get Ordered List of Issues to schedule
     $issueList = $user->getAssignedIssues();
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("scheduleUser " . $user->getId() . " : nb assigned issues = " . count($issueList));
     }
     // foreach task
     $sumDurations = 0;
     foreach ($issueList as $issue) {
         // determinate issue duration (Backlog, EffortEstim, MgrEffortEstim)
         $issueDuration = $issue->getDuration();
         if (self::$logger->isDebugEnabled()) {
             self::$logger->debug("issue " . $issue->getId() . "  Duration = {$issueDuration} deadLine=" . date("Y-m-d", $issue->getDeadLine()));
         }
         $currentST = new ScheduledTask($issue->getId(), $issue->getDeadLine(), $issueDuration);
         if (self::$logger->isDebugEnabled()) {
             self::$logger->debug("issue " . $issue->getId() . "   -- user->getAvailableWorkload(" . $today . ", " . $issue->getDeadLine() . ")");
             self::$logger->debug("issue " . $issue->getId() . " nbDaysToDeadLine=" . $user->getAvailableWorkforce($today, $issue->getDeadLine()), $teamid);
         }
         $currentST->nbDaysToDeadLine = $user->getAvailableWorkforce($today, $issue->getDeadLine(), $teamid);
         $currentST->projectName = $issue->getProjectName();
         $currentST->summary = $issue->getSummary();
         $currentST->priorityName = $issue->getPriorityName();
         $currentST->severityName = $issue->getSeverityName();
         $currentST->statusName = Constants::$statusNames[$issue->getCurrentStatus()];
         $handler = UserCache::getInstance()->getUser($issue->getHandlerId());
         $currentST->handlerName = $handler->getName();
         // check if onTime
         if (NULL == $issue->getDeadLine()) {
             $currentST->isOnTime = true;
         } else {
             $currentST->isOnTime = $sumDurations + $issueDuration <= $currentST->nbDaysToDeadLine ? true : false;
         }
         // add to list
         if (0 != $issueDuration) {
             $scheduledTaskList["{$sumDurations}"] = $currentST;
             $sumDurations += $issueDuration;
         }
     }
     if ($addMonitored) {
         $monitoredList = $user->getMonitoredIssues();
         foreach ($monitoredList as $issue) {
             if (in_array($issue, $issueList)) {
                 continue;
             }
             // determinate issue duration (Backlog, EffortEstim, MgrEffortEstim)
             $issueDuration = $issue->getDuration();
             #echo "DEBUG Monitored issue $issue->bugId  Duration = $issueDuration<br/>";
             $currentST = new ScheduledTask($issue->getId(), $issue->getDeadLine(), $issueDuration);
             $currentST->nbDaysToDeadLine = $user->getAvailableWorkforce($today, $issue->getDeadLine(), $teamid);
             $currentST->projectName = $issue->getProjectName();
             $currentST->summary = $issue->getSummary();
             $currentST->priorityName = $issue->getPriorityName();
             $currentST->severityName = $issue->getSeverityName();
             $currentST->statusName = Constants::$statusNames[$issue->getCurrentStatus()];
             $currentST->isMonitored = true;
             $handler = UserCache::getInstance()->getUser($issue->getHandlerId());
             $currentST->handlerName = $handler->getName();
             // check if onTime
             if (NULL == $issue->getDeadLine()) {
                 $currentST->isOnTime = true;
             } else {
                 $currentST->isOnTime = $sumDurations + $issueDuration <= $currentST->nbDaysToDeadLine ? true : false;
             }
             // add to list
             if (0 != $issueDuration) {
                 $scheduledTaskList["{$sumDurations}"] = $currentST;
                 $sumDurations += $issueDuration;
             }
         }
     }
     return $scheduledTaskList;
 }