diff options
author | Frederic Guillot <fred@kanboard.net> | 2015-07-06 21:34:57 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2015-07-06 21:34:57 -0400 |
commit | 08259d4f206438095308749b8cc2abbe629137da (patch) | |
tree | db535ab6fdb7375a33444f3d796bb725469c36ef /app/Model/ProjectAnalytic.php | |
parent | 663a1c20e6ba0fbf65afcb43f0f48d34f21dcb53 (diff) |
Add lead and cycle time for projects
Diffstat (limited to 'app/Model/ProjectAnalytic.php')
-rw-r--r-- | app/Model/ProjectAnalytic.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/Model/ProjectAnalytic.php b/app/Model/ProjectAnalytic.php index f4e8af09..1ee8a405 100644 --- a/app/Model/ProjectAnalytic.php +++ b/app/Model/ProjectAnalytic.php @@ -89,6 +89,43 @@ class ProjectAnalytic extends Base } /** + * Get the average lead and cycle time + * + * @access public + * @param integer $project_id + * @return array + */ + public function getAverageLeadAndCycleTime($project_id) + { + $stats = array( + 'count' => 0, + 'total_lead_time' => 0, + 'total_cycle_time' => 0, + 'avg_lead_time' => 0, + 'avg_cycle_time' => 0, + ); + + $tasks = $this->db + ->table(Task::TABLE) + ->columns('date_completed', 'date_creation', 'date_started') + ->eq('project_id', $project_id) + ->desc('id') + ->limit(1000) + ->findAll(); + + foreach ($tasks as &$task) { + $stats['count']++; + $stats['total_lead_time'] += ($task['date_completed'] ?: time()) - $task['date_creation']; + $stats['total_cycle_time'] += empty($task['date_started']) ? 0 : ($task['date_completed'] ?: time()) - $task['date_started']; + } + + $stats['avg_lead_time'] = (int) ($stats['total_lead_time'] / $stats['count']); + $stats['avg_cycle_time'] = (int) ($stats['total_cycle_time'] / $stats['count']); + + return $stats; + } + + /** * Get the average time spent into each column * * @access public |