wip watten
This commit is contained in:
1 parent
8ace316cbf
commit
afc8a6e1f5
93 files changed
+14369
-1
No files matched your search
@@ -0,0 +1,191 @@
|
||||
<?php
|
||||
|
||||
namespace HermannTelser\Watten\Daten;
|
||||
|
||||
// use Doctrine\DBAL\DBALException;
|
||||
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||
use TYPO3\CMS\Core\Database\Connection;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
class Berechnung
|
||||
{
|
||||
public static function run()
|
||||
{
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid', 'athlet')
|
||||
->from('tx_watten_domain_model_athleten')
|
||||
->execute();
|
||||
|
||||
$user = [];
|
||||
foreach ($res as $key => $value) {
|
||||
$user[$value['uid']] = $value['athlet'];
|
||||
}
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
|
||||
$tournaments = $queryBuilder
|
||||
->select('uid', 'tournament', 'active', 'king')
|
||||
->from('tx_watten_tournaments')
|
||||
->execute();
|
||||
|
||||
// TRUNCATE `tx_watten_tournaments_ergebnisse`
|
||||
GeneralUtility::makeInstance(ConnectionPool::class)
|
||||
->getConnectionForTable('tx_watten_tournaments_ergebnisse')
|
||||
->truncate('tx_watten_tournaments_ergebnisse');
|
||||
|
||||
self::calcolate_data($user, ['uid' => 0, 'tournament' => 'Gesamt']);
|
||||
foreach ($tournaments as $key => $row) {
|
||||
self::calcolate_data($user, $row);
|
||||
}
|
||||
}
|
||||
|
||||
public static function calcolate_data($user, $row)
|
||||
{
|
||||
$tournamentid = $row['uid'];
|
||||
$tournament = $row['tournament'];
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
|
||||
if ($tournamentid == 0) {
|
||||
// Gesamt
|
||||
$_tournament = $queryBuilder
|
||||
->select('s1', 's2', 'v1', 'v2', 'bumid')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->executeQuery()
|
||||
->fetchAllAssociative();
|
||||
} else {
|
||||
$_tournament = $queryBuilder
|
||||
->select('s1', 's2', 'v1', 'v2', 'bumid')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('tournaments_id', (int) $tournamentid)
|
||||
)
|
||||
->executeQuery()
|
||||
->fetchAllAssociative();
|
||||
}
|
||||
$arr = [];
|
||||
foreach ($_tournament as $key => $value) {
|
||||
$bum = $value['bumid'];
|
||||
$s1 = $value['s1'];
|
||||
$s2 = $value['s2'];
|
||||
$v1 = $value['v1'];
|
||||
$v2 = $value['v2'];
|
||||
|
||||
if (!isset($arr[$s1]['s'][$bum])) {
|
||||
$arr[$s1]['s'][$bum] = 0;
|
||||
}
|
||||
if (!isset($arr[$s2]['s'][$bum])) {
|
||||
$arr[$s2]['s'][$bum] = 0;
|
||||
}
|
||||
if (!isset($arr[$v1]['v'][$bum])) {
|
||||
$arr[$v1]['v'][$bum] = 0;
|
||||
}
|
||||
if (!isset($arr[$v2]['v'][$bum])) {
|
||||
$arr[$v2]['v'][$bum] = 0;
|
||||
}
|
||||
if (!isset($arr[$s1]['p'])) {
|
||||
$arr[$s1]['p'] = 0;
|
||||
}
|
||||
if (!isset($arr[$s2]['p'])) {
|
||||
$arr[$s2]['p'] = 0;
|
||||
}
|
||||
if (!isset($arr[$v1]['p'])) {
|
||||
$arr[$v1]['p'] = 0;
|
||||
}
|
||||
if (!isset($arr[$v2]['p'])) {
|
||||
$arr[$v2]['p'] = 0;
|
||||
}
|
||||
$arr[$s1]['s'][$bum]++;
|
||||
$arr[$s2]['s'][$bum]++;
|
||||
$arr[$v1]['v'][$bum]++;
|
||||
$arr[$v2]['v'][$bum]++;
|
||||
$arr[$s1]['p']++;
|
||||
$arr[$s2]['p']++;
|
||||
$arr[$v1]['p']++;
|
||||
$arr[$v2]['p']++;
|
||||
}
|
||||
|
||||
foreach ($arr as $userid => $value) {
|
||||
$punkte = 0;
|
||||
if (isset($value['s'][1])) {
|
||||
$punkte = $value['s'][1] * 1.1;
|
||||
}
|
||||
if (isset($value['s'][2])) {
|
||||
$punkte += $value['s'][2] * 2.1;
|
||||
}
|
||||
if (isset($value['s'][4])) {
|
||||
$punkte += $value['s'][4] * 4.1;
|
||||
}
|
||||
if (isset($value['v'][1])) {
|
||||
$punkte -= $value['v'][1];
|
||||
}
|
||||
if (isset($value['v'][2])) {
|
||||
$punkte -= $value['v'][2] * 2;
|
||||
}
|
||||
if (isset($value['v'][4])) {
|
||||
$punkte -= $value['v'][4] * 4;
|
||||
}
|
||||
$arr[$userid]['punkte'] = round($punkte, 2);
|
||||
$arr[$userid]['spiele'] = $value['p'];
|
||||
$arr[$userid]['userid'] = $userid;
|
||||
$arr[$userid]['name'] = $user[$userid];
|
||||
$arr[$userid]['userid'] = $userid;
|
||||
}
|
||||
|
||||
$punkte = array_column($arr, 'punkte');
|
||||
array_multisort($punkte, SORT_NUMERIC, SORT_DESC, $arr);
|
||||
|
||||
$winner = $arr[0];
|
||||
$looser = $arr[array_key_last($arr)];
|
||||
|
||||
foreach ($arr as $key => $value) {
|
||||
$arr[$key]['platz'] = $key + 1;
|
||||
$arr[$key]['s1'] = isset($value['s'][1]) ? $value['s'][1] : '';
|
||||
$arr[$key]['s1'] = isset($value['s'][1]) ? $value['s'][1] : '';
|
||||
$arr[$key]['s2'] = isset($value['s'][2]) ? $value['s'][2] : '';
|
||||
$arr[$key]['s4'] = isset($value['s'][4]) ? $value['s'][4] : '';
|
||||
unset($arr[$key]['s']);
|
||||
|
||||
$arr[$key]['v1'] = isset($value['v'][1]) ? $value['v'][1] : '';
|
||||
$arr[$key]['v2'] = isset($value['v'][2]) ? $value['v'][2] : '';
|
||||
$arr[$key]['v4'] = isset($value['v'][4]) ? $value['v'][4] : '';
|
||||
unset($arr[$key]['v']);
|
||||
}
|
||||
|
||||
$insert_value = [];
|
||||
$insert_value['crdate'] = time();
|
||||
$insert_value['tournament_id'] = $tournamentid;
|
||||
$insert_value['tournament'] = (string)$tournament;
|
||||
if ($tournamentid == 0) {
|
||||
$insert_value['type'] = 'gesamt';
|
||||
} elseif ($row['king'] == 1) {
|
||||
$insert_value['type'] = 'king';
|
||||
} elseif ($row['active'] == 1) {
|
||||
$insert_value['type'] = 'active';
|
||||
}
|
||||
$insert_value['koenig'] = (string)$winner['name'];
|
||||
$insert_value['koenig_id'] = (int)$winner['userid'];
|
||||
$insert_value['koenig_spiele'] = isset($winner['spiele']) ? $winner['spiele'] : 0;
|
||||
$insert_value['koenig_punkte'] = isset($winner['punkte']) ? (float) $winner['punkte'] : 0;
|
||||
$insert_value['koenig_siege'] = isset($winner['s'][1]) ? $winner['s'][1] : 0;
|
||||
$insert_value['koenig_niederlagen'] = isset($winner['v'][1]) ? $winner['v'][1] : 0;
|
||||
$insert_value['koenig_schneider'] = isset($winner['s'][2]) ? $winner['s'][2] : 0;
|
||||
$insert_value['koenig_schneider_niederlage'] = isset($winner['v'][2]) ? $winner['v'][2] : 0;
|
||||
$insert_value['koenig_retour_schneider'] = isset($winner['s'][4]) ? $winner['s'][4] : 0;
|
||||
$insert_value['koenig_retour_schneider_niederlage'] = isset($winner['v'][4]) ? $winner['v'][4] : 0;
|
||||
|
||||
$insert_value['schneewatter'] = (string)$looser['name'];
|
||||
$insert_value['schneewatter_id'] = (int)$looser['userid'];
|
||||
$insert_value['schneewatter_spiele'] = isset($looser['spiele']) ? $looser['spiele'] : 0;
|
||||
$insert_value['schneewatter_punkte'] = isset($looser['punkte']) ? (float) $looser['punkte'] : 0;
|
||||
$insert_value['schneewatter_siege'] = isset($looser['s'][1]) ? $looser['s'][1] : 0;
|
||||
$insert_value['schneewatter_niederlagen'] = isset($looser['v'][1]) ? $looser['v'][1] : 0;
|
||||
$insert_value['schneewatter_schneider'] = isset($looser['s'][2]) ? $looser['s'][2] : 0;
|
||||
$insert_value['schneewatter_schneider_niederlage'] = isset($looser['v'][2]) ? $looser['v'][2] : 0;
|
||||
$insert_value['schneewatter_retour_schneider'] = isset($looser['s'][4]) ? $looser['s'][4] : 0;
|
||||
$insert_value['schneewatter_retour_schneider_niederlage'] = isset($looser['v'][4]) ? $looser['v'][4] : 0;
|
||||
|
||||
$insert_value['result_json'] = json_encode($arr);
|
||||
|
||||
GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments_ergebnisse')
|
||||
->insert('tx_watten_tournaments_ergebnisse', $insert_value);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user