wip watten

This commit is contained in:
salam committed 2026-10-18 17:49:22 +02:00
1 parent 8ace316cbf
commit afc8a6e1f5
93 files changed
+14369 -1

No files matched your search

@@ -0,0 +1,395 @@
<?php
namespace HermannTelser\Watten\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use stdClass;
class StatistikRepository extends Repository
{
public static function loadStatistikRangliste($activeTournament)
{
/*
[punkte] => 5.9
[spiele] => 13
[name] => Gerhard
[platz] => 1
[s1] => 9
[s2] =>
[s4] =>
[v1] => 4
[v2] =>
[v4] =>
*/
$arr = RanglisteRepository::loadRangliste($activeTournament);
$return = [];
$tmp = [];
foreach ($arr as $key => $value) {
$return['labels'][] = $value['name'] . " " . $value['platz'] . ". Platz";
$tmp['s1']['label'] = "Gewonnen";
$tmp['s1']['data'][] = $value['s1'] ? $value['s1'] : 0;
$tmp['s2']['label'] = "Schneider";
$tmp['s2']['data'][] = $value['s2'] ? $value['s2'] : 0;
$tmp['s4']['label'] = "Retour Schneider";
$tmp['s4']['data'][] = $value['s4'] ? $value['s4'] : 0;
$tmp['v1']['label'] = "Verloren";
$tmp['v1']['data'][] = $value['v1'] ? $value['v1'] * -1 : 0;
$tmp['v2']['label'] = "Schneider Verloren";
$tmp['v2']['data'][] = $value['v2'] ? $value['v2'] * -1 : 0;
$tmp['v4']['label'] = "Retour Schneider Verloren";
$tmp['v4']['data'][] = $value['v4'] ? $value['v4'] * -1 : 0;
}
$datasets = [];
foreach ($tmp as $key => $value) {
if (array_sum($value['data']) != false) {
$value['borderWidth'] = 1;
$datasets[] = $value;
}
}
$return['datasets'] = $datasets;
// print_r($return);
return $return;
}
public static function loadStatistik($event_id)
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
$ergebnisse = $queryBuilder
->select('uid', 's1', 's2', 'v1', 'v2', 'bumid')
->from('tx_watten_domain_model_ergebnisse')
->where($queryBuilder->expr()->eq('event_id', (int) $event_id))
->execute();
$usr = [];
$data = [];
foreach ($ergebnisse as $value) {
$usr[] = $value['s1'];
$usr[] = $value['s2'];
$usr[] = $value['v1'];
$usr[] = $value['v2'];
$data[] = $value;
}
$usr = array_unique($usr);
$arr = [];
$datasets = [];
foreach ($data as $value) {
$arr['labels'][] = $value['uid'];
$bum = $value['bumid'];
$s1 = $value['s1'];
$s2 = $value['s2'];
$v1 = $value['v1'];
$v2 = $value['v2'];
foreach ($usr as $key => $uid) {
if (isset($datasets[$uid])) {
$punkte = 0;
if ($s1 == $uid or $s2 == $uid) {
switch ($bum) {
case 1:
$punkte = 1.1;
break;
case 2:
$punkte = 2.1;
break;
case 4:
$punkte = 4.1;
break;
}
} elseif ($v1 == $uid or $v2 == $uid) {
switch ($bum) {
case 1:
$punkte = -1;
break;
case 2:
$punkte = -2;
break;
case 4:
$punkte = -4;
break;
}
}
$datasets[$uid]['stand'] = round($datasets[$uid]['stand'] + $punkte, 2);
$datasets[$uid]['data'][] = $datasets[$uid]['stand'];
} else {
$datasets[$uid]['label'] = $user[$uid];
$punkte = 0;
if ($s1 == $uid or $s2 == $uid) {
switch ($bum) {
case 1:
$punkte = 1.1;
break;
case 2:
$punkte = 2.1;
break;
case 4:
$punkte = 4.1;
break;
}
} elseif ($v1 == $uid or $v2 == $uid) {
switch ($bum) {
case 1:
$punkte = -1;
break;
case 2:
$punkte = -2;
break;
case 4:
$punkte = -4;
break;
}
}
$datasets[$uid]['stand'] = $punkte;
$datasets[$uid]['data'][] = $punkte;
}
}
}
foreach ($datasets as $value) {
unset($value['stand']);
$value['pointRadius'] = 2;
$value['tension'] = 0;
$value['borderWidth'] = 0.5;
$arr['datasets'][] = $value;
}
return $arr;
}
public static function loadPaarlauf($activeTournament, $athlet_1)
{
$athlet_1 = (int) $athlet_1;
$athlet_2 = 3;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
$res = $queryBuilder
->select('uid', 'name')
->from('tx_watten_domain_model_athleten')
->execute();
$user = [];
foreach ($res as $key => $value) {
$user[$value['uid']] = $value['name'];
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
if ($activeTournament < 0) {
$res = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->execute();
} else {
$res = $queryBuilder
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
->from('tx_watten_domain_model_ergebnisse')
->where($queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament))
->execute();
}
$_names = [
'spiele' => 0,
'siege' => 0,
'verloren' => 0,
'sn' => 0,
'ss' => 0,
'srs' => 0,
'sg' => 0,
'vn' => 0,
'vs' => 0,
'vrs' => 0,
'vg' => 0,
];
$_data = [];
foreach ($res as $row) {
if ($row['s1'] == $athlet_1 or $row['s2'] == $athlet_1) {
if ($row['s1'] == $athlet_1)
$partner = (int) $row['s2'];
else
$partner = (int) $row['s1'];
$gegner1 = (int) $row['v1'];
$gegner2 = (int) $row['v2'];
$bummalen = (int) $row['bumid'];
$gstrichen = (int) $row['gstrichen'];
if (!isset($_data[$partner])) {
$_data[$partner] = $_names;
}
$_data[$partner]['spiele']++;
$_data[$partner]['siege']++;
if ($bummalen == 1)
$_data[$partner]['sn']++;
else if ($bummalen == 2)
$_data[$partner]['ss']++;
else if ($bummalen == 4)
$_data[$partner]['srs']++;
if ($gstrichen == 1)
$_data[$partner]['sg']++;
if ($gegner1 < $gegner2) {
$team = "$gegner1:$gegner2";
} else {
$team = "$gegner2:$gegner1";
}
if (!isset($_data[$partner]['gegner'][$team])) {
$_data[$partner]['gegner'][$team] = $_names;
}
$_data[$partner]['gegner'][$team]['spiele']++;
$_data[$partner]['gegner'][$team]['siege']++;
if ($bummalen == 1)
$_data[$partner]['gegner'][$team]['sn']++;
else if ($bummalen == 2)
$_data[$partner]['gegner'][$team]['ss']++;
else if ($bummalen == 4)
$_data[$partner]['gegner'][$team]['srs']++;
if ($gstrichen == 1)
$_data[$partner]['gegner'][$team]['sg']++;
} else if ($row['v1'] == $athlet_1 or $row['v2'] == $athlet_1) {
if ($row['v1'] == $athlet_1)
$partner = $row['v2'];
else
$partner = (int) $row['v1'];
$gegner1 = (int) $row['s1'];
$gegner2 = (int) $row['s2'];
$bummalen = (int) $row['bumid'];
$gstrichen = (int) $row['gstrichen'];
if (!isset($_data[$partner])) {
$_data[$partner] = $_names;
}
$_data[$partner]['spiele']++;
$_data[$partner]['verloren']++;
if ($bummalen == 1)
$_data[$partner]['vn']++;
if ($bummalen == 2)
$_data[$partner]['vs']++;
if ($bummalen == 4)
$_data[$partner]['vrs']++;
if ($gstrichen == 1)
$_data[$partner]['vg']++;
if ($gegner1 < $gegner2) {
$team = "$gegner1:$gegner2";
} else {
$team = "$gegner2:$gegner1";
}
if (!isset($_data[$partner]['gegner'][$team])) {
$_data[$partner]['gegner'][$team] = $_names;
}
$_data[$partner]['gegner'][$team]['spiele']++;
$_data[$partner]['gegner'][$team]['verloren']++;
if ($bummalen == 1)
$_data[$partner]['gegner'][$team]['vn']++;
if ($bummalen == 2)
$_data[$partner]['gegner'][$team]['vs']++;
if ($bummalen == 4)
$_data[$partner]['gegner'][$team]['vrs']++;
if ($gstrichen == 1)
$_data[$partner]['gegner'][$team]['vg']++;
}
}
$return = [];
if(isset($user[$athlet_1])){
$athlet = $user[$athlet_1];
foreach ($_data as $partnerid => $row) {
$tmp = [];
$partner = $user[$partnerid];
$tmp['head'] = 1;
$tmp['teams'] = $athlet . ' & ' . $partner . ' ';
$tmp['spiele'] = $row['spiele'];
$tmp['siege'] = $row['siege'];
$tmp['verloren'] = $row['verloren'];
$tmp['sn'] = $row['sn'];
$tmp['ss'] = $row['ss'];
$tmp['srs'] = $row['srs'];
$tmp['sg'] = $row['sg'];
$tmp['vn'] = $row['vn'];
$tmp['vs'] = $row['vs'];
$tmp['vrs'] = $row['vrs'];
$tmp['vg'] = $row['vg'];
$return[] = $tmp;
foreach ($row['gegner'] as $team => $value) {
$tmp = [];
$tmp['head'] = 0;
$tmp['teams'] = $athlet . ' & ' . $partner . ' <img src="/typo3conf/ext/watten/Resources/Public/Icons/Degen.svg" class="iconsizesm"> ' . self::getnames($user, $team);
$tmp['spiele'] = $value['spiele'];
$tmp['siege'] = $value['siege'];
$tmp['verloren'] = $value['verloren'];
$tmp['sn'] = $value['sn'];
$tmp['ss'] = $value['ss'];
$tmp['srs'] = $value['srs'];
$tmp['sg'] = $value['sg'];
$tmp['vn'] = $value['vn'];
$tmp['vs'] = $value['vs'];
$tmp['vrs'] = $value['vrs'];
$tmp['vg'] = $value['vg'];
$return[] = $tmp;
}
}
}
foreach ($return as $key1 => $row) {
foreach ($row as $key2 => $value) {
if ($key2 != 'teams' and $value == 0)
$return[$key1][$key2] = '';
}
}
return $return;
}
public function getnames(&$user, $team)
{
$_gegner = explode(':', $team);
$g1 = $_gegner[0];
$g2 = $_gegner[1];
return $user[$g1] . " & " . $user[$g2];
}
}
// Array
// (
// [26] => Array
// (
// [spiele] => 11
// [siege] => 6
// [verloren] => 5
// [sn] => 0
// [ss] => 0
// [srs] => 0
// [gs] => 0
// [vn] => 0
// [vs] => 0
// [vrs] => 0
// [vg] => 0
// [6:31] => Array
// (
// [spiele] => 1
// [siege] => 1
// [verloren] => 0
// [sn] => 1
// [ss] => 0
// [srs] => 0
// [gs] => 0
// [vn] => 0
// [vs] => 0
// [vrs] => 0