|
<?php |
|
|
|
namespace Kanboard\Analytic; |
|
|
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserDistributionAnalytic extends Base |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function build($project_id) |
|
{ |
|
$metrics = array(); |
|
$total = 0; |
|
$tasks = $this->taskFinderModel->getAll($project_id); |
|
$users = $this->projectUserRoleModel->getAssignableUsersList($project_id); |
|
|
|
foreach ($tasks as $task) { |
|
$user = isset($users[$task['owner_id']]) ? $users[$task['owner_id']] : $users[0]; |
|
$total++; |
|
|
|
if (! isset($metrics[$user])) { |
|
$metrics[$user] = array( |
|
'nb_tasks' => 0, |
|
'percentage' => 0, |
|
'user' => $user, |
|
); |
|
} |
|
|
|
$metrics[$user]['nb_tasks']++; |
|
} |
|
|
|
if ($total === 0) { |
|
return array(); |
|
} |
|
|
|
foreach ($metrics as &$metric) { |
|
$metric['percentage'] = round(($metric['nb_tasks'] * 100) / $total, 2); |
|
} |
|
|
|
ksort($metrics); |
|
|
|
return array_values($metrics); |
|
} |
|
} |
|
|