/** * test method getProjectActivityTime() */ public function testGetProjectActivityTimeWithMultipleActivities() { $report = new ProjectReport(); // QA - Employee 1 $this->_addEvent(1, 1, "QA", "2007-07-05 09:25", 70); $this->_addEvent(1, 1, "QA", "2007-07-07 08:12", 33); // 33 min $this->_addEvent(1, 1, "QA", "2007-07-10 09:25", 8 * 60 + 30); // 510 min // QA - Employee 2 $this->_addEvent(1, 2, "QA", "2007-07-05 09:25", 70); // 70 min $this->_addEvent(1, 2, "QA", "2007-07-12 11:25", 4 * 60 + 10); // 250 min $this->_addEvent(1, 2, "QA", "2007-07-11 06:25", 4 * 60 + 10); // 250 min // QA Events for different project $this->_addEvent(2, 1, "QA", "2007-07-05 07:25", 8 * 60 + 10); // 490 min $this->_addEvent(2, 2, "QA", "2007-07-05 09:25", 5 * 60); // 300 min // Programming - Employee 1 $this->_addEvent(1, 1, "Programming", "2007-07-05 09:25", 80); $this->_addEvent(1, 1, "Programming", "2007-07-07 08:12", 70); $this->_addEvent(1, 1, "Programming", "2007-07-10 09:25", 210); // Programming - Employee 2 $this->_addEvent(1, 2, "Programming", "2007-07-05 09:25", 230); $this->_addEvent(1, 2, "Programming", "2007-07-12 11:25", 450); $this->_addEvent(1, 2, "Programming", "2007-07-11 06:25", 900); // Programming for different project $this->_addEvent(2, 1, "Programming", "2007-07-05 05:25", 800); $this->_addEvent(2, 2, "Programming", "2007-07-12 15:25", 450); // Event spanning more than one day $this->_addEvent(1, 1, "Programming", "2007-07-19 18:00", 600); $this->_addEvent(1, 2, "Programming", "2007-07-18 21:25", 500); // Deleted activity for project 2 $this->_addEvent(2, 1, "Deleted Activity", "2007-07-10 09:25", 400); $this->_addEvent(2, 2, "Deleted Activity", "2007-07-11 09:25", 300); // Check project 2 time $results = $report->getProjectActivityTime(2, "2007-07-05", "2007-07-25"); $res = $this->_verifyActivityTime($results, 2, array("Programming", "QA", "Support", "Deleted Activity"), array(1250, 790, 0, 700)); $this->assertTrue($res); // Check project 1 time $results = $report->getProjectActivityTime(1, "2007-07-05", "2007-07-25"); $res = $this->_verifyActivityTime($results, 1, array("Programming", "QA", "Support"), array(3040, 1183, 0)); $this->assertTrue($res); // Project 1 time for day with spanning events. $results = $report->getProjectActivityTime(1, "2007-07-19", "2007-07-19"); $res = $this->_verifyActivityTime($results, 1, array("Programming", "QA", "Support"), array(360 + 345, 0, 0)); $this->assertTrue($res); // Project 1 time from 07-10 $results = $report->getProjectActivityTime(1, "2007-07-10", "2007-07-30"); $res = $this->_verifyActivityTime($results, 1, array("Programming", "QA", "Support"), array(2660, 1010, 0)); $this->assertTrue($res); }
/** * View project report */ public function viewProjectReport() { $path = "/templates/time/projectReport.php"; $timeEventObj = $this->objTime[0]; $startDate = $this->objTime[1]; $endDate = $this->objTime[2]; $projectId = $timeEventObj->getProjectId(); if (!$this->authorizeObj->isAdmin() && !$this->authorizeObj->isProjectAdminOf($projectId)) { $this->redirect('UNAUTHORIZED_FAILURE'); } $projectObj = new Projects(); $project = $projectObj->fetchProject($projectId); if (empty($project)) { $this->redirect('PROJECT_NOT_FOUND_FAILURE', '?timecode=Time&action=Project_Report_Define'); } $report = new ProjectReport(); $activityTimeArray = $report->getProjectActivityTime($projectId, $startDate, $endDate); $dataArr[0] = $project; $dataArr[1] = $startDate; $dataArr[2] = $endDate; $dataArr[3] = $activityTimeArray; $template = new TemplateMerger($dataArr, $path); $template->display(); }