112 lines
3.6 KiB
PHP
112 lines
3.6 KiB
PHP
<?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 GstrichenRepository extends Repository
|
|
{
|
|
public static function loadGstrichenliste($activeTournament)
|
|
{
|
|
$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) {
|
|
$ergebnisse = $queryBuilder
|
|
->select('s1', 's2', 'v1', 'v2', 'gstrichen')
|
|
->from('tx_watten_domain_model_ergebnisse')
|
|
->execute();
|
|
} else {
|
|
$ergebnisse = $queryBuilder
|
|
->select('s1', 's2', 'v1', 'v2', 'gstrichen')
|
|
->from('tx_watten_domain_model_ergebnisse')
|
|
->where($queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament))
|
|
->execute();
|
|
}
|
|
|
|
$arr = [];
|
|
foreach ($ergebnisse as $key => $value) {
|
|
$s1 = $value['s1'];
|
|
$s2 = $value['s2'];
|
|
$v1 = $value['v1'];
|
|
$v2 = $value['v2'];
|
|
$gs = $value['gstrichen'];
|
|
|
|
if (!isset($arr[$s1]['s'])) {
|
|
$arr[$s1]['s'] = 0;
|
|
$arr[$s1]['v'] = 0;
|
|
}
|
|
if (!isset($arr[$s2]['s'])) {
|
|
$arr[$s2]['s'] = 0;
|
|
$arr[$s2]['v'] = 0;
|
|
}
|
|
if (!isset($arr[$v1]['v'])) {
|
|
$arr[$v1]['v'] = 0;
|
|
$arr[$v1]['s'] = 0;
|
|
}
|
|
if (!isset($arrv[$v2]['v'])) {
|
|
$arr[$v2]['v'] = 0;
|
|
$arr[$v2]['s'] = 0;
|
|
}
|
|
if ($gs) {
|
|
$arr[$s1]['s']++;
|
|
$arr[$s2]['s']++;
|
|
$arr[$v1]['v']++;
|
|
$arr[$v2]['v']++;
|
|
}
|
|
}
|
|
|
|
$sieger = [];
|
|
$verlierer = [];
|
|
$i = 1;
|
|
foreach ($arr as $userid => $value) {
|
|
$sieger[$i]['sieger'] = $user[$userid];
|
|
$sieger[$i]['gewonnen'] = $value['s'];
|
|
|
|
$verlierer[$i]['verlierer'] = $user[$userid];
|
|
$verlierer[$i]['verloren'] = $value['v'];
|
|
|
|
$i++;
|
|
}
|
|
$gewonnen = array_column($sieger, 'gewonnen');
|
|
array_multisort($gewonnen, SORT_NUMERIC, SORT_DESC, $sieger);
|
|
$verloren = array_column($verlierer, 'verloren');
|
|
array_multisort($verloren, SORT_NUMERIC, SORT_DESC, $verlierer);
|
|
|
|
$return = [];
|
|
$s = 0;
|
|
$v = 0;
|
|
foreach ($gewonnen as $key => $value) {
|
|
$return[$key] = array_merge($sieger[$key], $verlierer[$key]);
|
|
$return[$key]['platz'] = $key + 1;
|
|
|
|
if ($return[$key]['gewonnen'] == 0) {
|
|
$return[$key]['sieger'] = '';
|
|
$return[$key]['gewonnen'] = '';
|
|
$s = 1;
|
|
}
|
|
if ($return[$key]['verloren'] == 0) {
|
|
$return[$key]['verloren'] = '';
|
|
$return[$key]['verlierer'] = '';
|
|
$v = 1;
|
|
}
|
|
if ($s and $v) {
|
|
unset($return[$key]);
|
|
}
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
}
|