update user statistics

This commit is contained in:
Dario Rekowski on RockPI 2020-02-14 10:23:43 +00:00
parent 217dede358
commit 0e847e3fad
2 changed files with 54 additions and 1 deletions

View File

@ -2,6 +2,7 @@
namespace App\Controller;
use App\Controller\AppController;
use Cake\Datasource\ConnectionManager;
use Cake\I18n\Time;
/**
@ -27,6 +28,7 @@ class UsersController extends AppController
public function statistics()
{
$startTime = microtime(true);
$this->viewBuilder()->setLayout('frontend_ripple');
$users = $this->Users->find('all')->select(['id']);
@ -42,7 +44,26 @@ class UsersController extends AppController
$newUsersLastMonth = $this->Users->find('all')
->select(['id'])
->where(['created >=' => $prevSortDate[0], 'created <' => $prevSortDate[1]]);
$this->set(compact('users', 'newUsersThisMonth', 'newUsersLastMonth'));
// new user sorted after date
$connection = ConnectionManager::get('loginServer');
$newAccountsPerDay = $connection->execute('SELECT count(id) as count, created FROM users GROUP BY CAST(created as DATE) ORDER BY created DESC ')->fetchAll('assoc');
$newAccountsTree = [];
foreach($newAccountsPerDay as $entry) {
$created = new Time($entry['created']);
if(!isset($newAccountsTree[$created->year])) {
$newAccountsTree[$created->year] = [];
}
if(!isset($newAccountsTree[$created->year][$created->month])) {
$newAccountsTree[$created->year][$created->month] = ['count' => 0, 'days' => []];
}
array_push($newAccountsTree[$created->year][$created->month]['days'], $entry);
$newAccountsTree[$created->year][$created->month]['count'] += intval($entry['count']);
}
$timeUsed = microtime(true) - $startTime;
$this->set(compact('users', 'newUsersThisMonth', 'newUsersLastMonth', 'timeUsed', 'newAccountsTree'));
}
/**

View File

@ -56,4 +56,36 @@ if($users->count() > 0 && $newUsersLastMonth->count()) {
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 equel-grid">
<div class="grid">
<div class="grid-body py-3">
<p class="card-title ml-n1"><?= __('Anmeldungen detailliert'); ?></p>
</div>
<div class="table-responsive">
<table class="table table-hover table-sm">
<thead>
<tr class="solid-header">
<th class="pl-4"><?= __('Jahr')?></th>
<th><?= __('Monat') ?></th>
<th><?= __('Anzahl Anmeldungen') ?></th>
</tr>
</thead>
<tbody>
<?php foreach($newAccountsTree as $year => $yearEntrys) : ?>
<?php foreach($yearEntrys as $month => $monthEntrys): ?>
<tr class="collapsed" data-toggle="collapse" aria-expanded="false">
<td><?= $year ?></td>
<td><?= $month ?></td>
<td><?= $monthEntrys['count'] ?></td>
</tr>
<tr class="collapse"><td>Tage</td></tr>
<?php endforeach; ?>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<?= $this->Html->script(['core', 'vendor.addons']); ?>