|
<?php |
|
|
|
namespace Kanboard\Model; |
|
|
|
use Kanboard\Core\Base; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProjectDailyStatsModel extends Base |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
const TABLE = 'project_daily_stats'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function updateTotals($project_id, $date) |
|
{ |
|
$this->db->startTransaction(); |
|
|
|
$lead_cycle_time = $this->averageLeadCycleTimeAnalytic->build($project_id); |
|
|
|
$this->db->table(self::TABLE)->eq('day', $date)->eq('project_id', $project_id)->remove(); |
|
|
|
$this->db->table(self::TABLE)->insert(array( |
|
'day' => $date, |
|
'project_id' => $project_id, |
|
'avg_lead_time' => $lead_cycle_time['avg_lead_time'], |
|
'avg_cycle_time' => $lead_cycle_time['avg_cycle_time'], |
|
)); |
|
|
|
$this->db->closeTransaction(); |
|
|
|
return true; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getRawMetrics($project_id, $from, $to) |
|
{ |
|
$metrics = $this->db->table(self::TABLE) |
|
->columns('day', 'avg_lead_time', 'avg_cycle_time') |
|
->eq('project_id', $project_id) |
|
->gte('day', $from) |
|
->lte('day', $to) |
|
->asc('day') |
|
->findAll(); |
|
|
|
foreach ($metrics as &$metric) { |
|
$metric['avg_lead_time'] = (int) $metric['avg_lead_time']; |
|
$metric['avg_cycle_time'] = (int) $metric['avg_cycle_time']; |
|
} |
|
|
|
return $metrics; |
|
} |
|
} |
|
|