From 9a2f2465116387880282df505e3d3230516604dd Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Tue, 18 Dec 2018 04:43:13 +0100 Subject: metrics: Added more stats --- src/Controllers/Metrics/Stats.php | 132 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) (limited to 'src/Controllers/Metrics/Stats.php') diff --git a/src/Controllers/Metrics/Stats.php b/src/Controllers/Metrics/Stats.php index 891f8c80..838411d1 100644 --- a/src/Controllers/Metrics/Stats.php +++ b/src/Controllers/Metrics/Stats.php @@ -96,6 +96,31 @@ class Stats return $query->count(); } + /** + * @param string $vehicle + * @return int + * @codeCoverageIgnore + */ + public function licenses($vehicle = null) + { + $mapping = [ + 'forklift' => 'has_license_forklift', + 'car' => 'has_license_car', + '3.5t' => 'has_license_3_5t_transporter', + '7.5t' => 'has_license_7_5t_truck', + '12.5t' => 'has_license_12_5t_truck', + ]; + + $query = $this + ->getQuery('UserDriverLicenses'); + + if (!is_null($vehicle)) { + $query->where($mapping[$vehicle], '=', true); + } + + return $query->count(); + } + /** * The number of worked shifts * @@ -121,6 +146,113 @@ class Stats return $query->sum($this->raw('end - start')); } + /** + * @return int + * @codeCoverageIgnore + */ + public function worklogSeconds() + { + return round($this + ->getQuery('UserWorkLog') + ->sum($this->raw('work_hours * 60*60'))); + } + + /** + * @return int + * @codeCoverageIgnore + */ + public function shifts() + { + return $this + ->getQuery('Shifts') + ->count(); + } + + /** + * @param bool $meeting + * @return int + * @codeCoverageIgnore + */ + public function announcements($meeting = null) + { + $query = $this + ->getQuery('News'); + + if (!is_null($meeting)) { + $query->where('Treffen', '=', $meeting); + } + + return $query->count(); + } + + /** + * @param bool $answered + * @return int + * @codeCoverageIgnore + */ + public function questions($answered = null) + { + $query = $this + ->getQuery('Questions'); + + if (!is_null($answered)) { + if ($answered) { + $query->whereNotNull('AID'); + } else { + $query->whereNull('AID'); + } + } + + return $query->count(); + } + + /** + * @return int + * @codeCoverageIgnore + */ + public function messages() + { + return $this + ->getQuery('Messages') + ->count(); + } + + /** + * @return int + */ + public function sessions() + { + return $this + ->getQuery('sessions') + ->count(); + } + + /** + * @param string $level + * @return int + */ + public function logEntries($level = null) + { + $query = $this + ->getQuery('log_entries'); + + if (!is_null($level)) { + $query->where('level', '=', $level); + } + + return $query->count(); + } + + /** + * @return int + */ + public function passwordResets() + { + return $this + ->getQuery('password_resets') + ->count(); + } + /** * @param string $table * @return QueryBuilder -- cgit v1.2.3-70-g09d2