/** * 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; }