summaryrefslogtreecommitdiff
path: root/app/Model/ProjectDailyStats.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/ProjectDailyStats.php')
-rw-r--r--app/Model/ProjectDailyStats.php45
1 files changed, 19 insertions, 26 deletions
diff --git a/app/Model/ProjectDailyStats.php b/app/Model/ProjectDailyStats.php
index 46ca0a4b..957ad51d 100644
--- a/app/Model/ProjectDailyStats.php
+++ b/app/Model/ProjectDailyStats.php
@@ -2,8 +2,6 @@
namespace Kanboard\Model;
-use PicoDb\Database;
-
/**
* Project Daily Stats
*
@@ -29,27 +27,22 @@ class ProjectDailyStats extends Base
*/
public function updateTotals($project_id, $date)
{
- $lead_cycle_time = $this->projectAnalytic->getAverageLeadAndCycleTime($project_id);
+ $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();
- return $this->db->transaction(function (Database $db) use ($project_id, $date, $lead_cycle_time) {
+ $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 call will fail if the record already exists
- // (cross database driver hack for INSERT..ON DUPLICATE KEY UPDATE)
- $db->table(ProjectDailyStats::TABLE)->insert(array(
- 'day' => $date,
- 'project_id' => $project_id,
- 'avg_lead_time' => 0,
- 'avg_cycle_time' => 0,
- ));
+ $this->db->closeTransaction();
- $db->table(ProjectDailyStats::TABLE)
- ->eq('project_id', $project_id)
- ->eq('day', $date)
- ->update(array(
- 'avg_lead_time' => $lead_cycle_time['avg_lead_time'],
- 'avg_cycle_time' => $lead_cycle_time['avg_cycle_time'],
- ));
- });
+ return true;
}
/**
@@ -64,11 +57,11 @@ class ProjectDailyStats extends Base
public function getRawMetrics($project_id, $from, $to)
{
return $this->db->table(self::TABLE)
- ->columns('day', 'avg_lead_time', 'avg_cycle_time')
- ->eq(self::TABLE.'.project_id', $project_id)
- ->gte('day', $from)
- ->lte('day', $to)
- ->asc(self::TABLE.'.day')
- ->findAll();
+ ->columns('day', 'avg_lead_time', 'avg_cycle_time')
+ ->eq('project_id', $project_id)
+ ->gte('day', $from)
+ ->lte('day', $to)
+ ->asc('day')
+ ->findAll();
}
}