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,49 @@
|
||||
<?php
|
||||
|
||||
namespace HermannTelser\Watten\Domain\Repository;
|
||||
|
||||
use TYPO3\CMS\Extbase\Persistence\Repository;
|
||||
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
|
||||
class AthletenRepository extends Repository
|
||||
{
|
||||
public static function loadTournamentAthleten($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();
|
||||
$athleten = [];
|
||||
foreach ($res as $value) {
|
||||
$athleten[$value['uid']] = $value['name'];
|
||||
}
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('s1', 's2', 'v1', 'v2')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament)
|
||||
)
|
||||
->execute();
|
||||
$active = [];
|
||||
foreach ($res as $value) {
|
||||
$active[] = $value['s1'];
|
||||
$active[] = $value['s2'];
|
||||
$active[] = $value['v1'];
|
||||
$active[] = $value['v2'];
|
||||
}
|
||||
$active = array_unique($active);
|
||||
|
||||
$return = [];
|
||||
$return[] = ['id' => 0, 'name' => 'Athleten'];
|
||||
foreach ($athleten as $key => $name) {
|
||||
if (in_array($key, $active)) {
|
||||
$return[] = ['id' => $key, 'name' => $name];
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
namespace HermannTelser\Watten\Domain\Repository;
|
||||
|
||||
use TYPO3\CMS\Extbase\Persistence\Repository;
|
||||
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use stdClass;
|
||||
|
||||
class ErgebnisseRepository extends Repository
|
||||
{
|
||||
public static function loadStatistik()
|
||||
{
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid')
|
||||
->from('tx_watten_tournaments')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('active', (int) 1)
|
||||
)
|
||||
->execute();
|
||||
foreach ($res as $key => $value) {
|
||||
return (int) $value['uid'];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function getActiveTournament()
|
||||
{
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid')
|
||||
->from('tx_watten_tournaments')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('active', (int) 1)
|
||||
)
|
||||
->execute();
|
||||
foreach ($res as $key => $value) {
|
||||
return (int) $value['uid'];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function getLastEventId()
|
||||
{
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_events')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid')
|
||||
->from('tx_watten_domain_model_events')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('isactive', (int) 1)
|
||||
)
|
||||
->execute();
|
||||
foreach ($res as $key => $value) {
|
||||
return (int) $value['uid'];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function findTournaments($mitGesammt)
|
||||
{
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_tournaments')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid', 'tournament', 'active')
|
||||
->from('tx_watten_tournaments')
|
||||
->execute();
|
||||
|
||||
$tournaments = [];
|
||||
foreach ($res as $key => $value) {
|
||||
$tmp = new stdClass();
|
||||
$tmp->id = (int) $value['uid'];
|
||||
$tmp->name = $value['tournament'];
|
||||
$tmp->active = $value['active'];
|
||||
$tournaments[] = $tmp;
|
||||
}
|
||||
if ($mitGesammt == true) {
|
||||
$tmp = new stdClass();
|
||||
$tmp->id = -1;
|
||||
$tmp->name = "Gesamt";
|
||||
$tournaments[] = $tmp;
|
||||
}
|
||||
return $tournaments;
|
||||
}
|
||||
|
||||
public function findByEventId(int $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();
|
||||
$athleten = [];
|
||||
foreach ($res as $key => $value) {
|
||||
$athleten[$value['uid']] = $value['name'];
|
||||
}
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
|
||||
$ergebnisse = $queryBuilder
|
||||
->select('uid', 'datum', 's1', 's2', 'v1', 'v2', 'bumid')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('event_id', (int) $event_id)
|
||||
)
|
||||
->execute();
|
||||
|
||||
$return = [];
|
||||
foreach ($ergebnisse as $key => $value) {
|
||||
$tmp = [];
|
||||
$tmp['uid'] = $value['uid'];
|
||||
$tmp['s1'] = $athleten[$value['s1']];
|
||||
$tmp['s2'] = $athleten[$value['s2']];
|
||||
$tmp['v1'] = $athleten[$value['v1']];
|
||||
$tmp['v2'] = $athleten[$value['v2']];
|
||||
$tmp['bumid'] = $value['bumid'];
|
||||
$return[] = $tmp;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
<?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 RanglisteRepository extends Repository
|
||||
{
|
||||
public static function loadRangliste($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', 'bumid', 'gstrichen')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->execute();
|
||||
} else {
|
||||
$ergebnisse = $queryBuilder
|
||||
->select('s1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->where($queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament))
|
||||
->execute();
|
||||
}
|
||||
// debug($queryBuilder->getSQL());
|
||||
|
||||
$arr = [];
|
||||
foreach ($ergebnisse as $key => $value) {
|
||||
$bum = $value['bumid'];
|
||||
$s1 = $value['s1'];
|
||||
$s2 = $value['s2'];
|
||||
$v1 = $value['v1'];
|
||||
$v2 = $value['v2'];
|
||||
$ge = $value['gstrichen'];
|
||||
|
||||
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;
|
||||
}
|
||||
if (!isset($arr[$s1]['sg'])) {
|
||||
$arr[$s1]['sg'] = 0;
|
||||
}
|
||||
if (!isset($arr[$s2]['sg'])) {
|
||||
$arr[$s2]['sg'] = 0;
|
||||
}
|
||||
if (!isset($arr[$v1]['vg'])) {
|
||||
$arr[$v1]['vg'] = 0;
|
||||
}
|
||||
if (!isset($arr[$v2]['vg'])) {
|
||||
$arr[$v2]['vg'] = 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']++;
|
||||
if ($ge) {
|
||||
$arr[$s1]['sg']++;
|
||||
$arr[$s2]['sg']++;
|
||||
$arr[$v1]['vg']++;
|
||||
$arr[$v2]['vg']++;
|
||||
}
|
||||
}
|
||||
|
||||
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]['name'] = $user[$userid];
|
||||
unset($arr[$userid]['p']);
|
||||
}
|
||||
|
||||
$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]) ?? '';
|
||||
$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] : '';
|
||||
$arr[$key]['sg'] = isset($value['sg']) && $value['sg'] != 0 ? $value['sg'] : '';
|
||||
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] : '';
|
||||
$arr[$key]['vg'] = isset($value['vg']) && $value['vg'] != 0 ? $value['vg'] : '';
|
||||
unset($arr[$key]['v']);
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
<?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 HermannTelser\Watten\Domain\Repository\ErgebnisseRepository;
|
||||
use stdClass;
|
||||
|
||||
class SpieltageRepository extends Repository
|
||||
{
|
||||
public static function loadSpieltage()
|
||||
{
|
||||
$activeTournament = GeneralUtility::_GP('tournament') ?? ErgebnisseRepository::getActiveTournament();
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_events')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid', 'datum', 'event', 'isactive')
|
||||
->from('tx_watten_domain_model_events')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('tournaments_id', (int) $activeTournament)
|
||||
)
|
||||
->addOrderBy('datum', 'DESC')
|
||||
->execute();
|
||||
|
||||
$spieltage = [];
|
||||
$tmp = new stdClass();
|
||||
$tmp->id = 0;
|
||||
$tmp->name = 'Spieltag';
|
||||
$spieltage[] = $tmp;
|
||||
foreach ($res as $key => $value) {
|
||||
$tmp = new stdClass();
|
||||
$tmp->id = (int) $value['uid'];
|
||||
// $tmp->selected = (int) $value['isactive'];
|
||||
$tmp->name = date("d. M. Y", $value['datum']);
|
||||
if ($value['event']) {
|
||||
$tmp->name .= ' - ' . $value['event'];
|
||||
}
|
||||
$spieltage[] = $tmp;
|
||||
}
|
||||
|
||||
return $spieltage;
|
||||
}
|
||||
|
||||
public static function loadSpieltag()
|
||||
{
|
||||
$event_id = (int) GeneralUtility::_GP('event_id');
|
||||
if (!$event_id) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$return = [];
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_events')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('story')
|
||||
->from('tx_watten_domain_model_events')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('uid', (int) $event_id)
|
||||
)
|
||||
->execute();
|
||||
foreach ($res as $key => $value) {
|
||||
$return['story'] = $value['story'];
|
||||
}
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_athleten')->createQueryBuilder();
|
||||
$res = $queryBuilder
|
||||
->select('uid', 'name')
|
||||
->from('tx_watten_domain_model_athleten')
|
||||
->execute();
|
||||
$athleten = [];
|
||||
foreach ($res as $key => $value) {
|
||||
$athleten[$value['uid']] = $value['name'];
|
||||
}
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_watten_domain_model_ergebnisse')->createQueryBuilder();
|
||||
$ergebnisse = $queryBuilder
|
||||
->select('uid', 'datum', 's1', 's2', 'v1', 'v2', 'bumid', 'gstrichen')
|
||||
->from('tx_watten_domain_model_ergebnisse')
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('event_id', (int) $event_id)
|
||||
)
|
||||
->execute();
|
||||
|
||||
$data = [];
|
||||
foreach ($ergebnisse as $key => $value) {
|
||||
$tmp = [];
|
||||
$tmp['uid'] = (int) $value['uid'];
|
||||
$tmp['s1'] = $athleten[$value['s1']];
|
||||
$tmp['s2'] = $athleten[$value['s2']];
|
||||
$tmp['v1'] = $athleten[$value['v1']];
|
||||
$tmp['v2'] = $athleten[$value['v2']];
|
||||
$tmp['gs'] = $value['gstrichen'] ? '||' : '';
|
||||
$tmp['bumid'] = (int) $value['bumid'];
|
||||
$tmp['datum'] = (int) $value['datum'];
|
||||
$data[] = $tmp;
|
||||
}
|
||||
$return['data'] = $data;
|
||||
$return['punkte'] = self::punkte($data);
|
||||
return $return;
|
||||
}
|
||||
|
||||
private static function punkte(array $data)
|
||||
{
|
||||
$punkte = [];
|
||||
foreach ($data as $value) {
|
||||
$s1 = $value['s1'];
|
||||
$s2 = $value['s2'];
|
||||
$v1 = $value['v1'];
|
||||
$v2 = $value['v2'];
|
||||
if (!isset($punkte[$s1])) {
|
||||
$punkte[$s1] = $value['bumid'] + 0.1;
|
||||
} else {
|
||||
$punkte[$s1] = $punkte[$s1] + $value['bumid'] + 0.1;
|
||||
}
|
||||
if (!isset($punkte[$s2])) {
|
||||
$punkte[$s2] = $value['bumid'] + 0.1;
|
||||
} else {
|
||||
$punkte[$s2] = $punkte[$s2] + $value['bumid'] + 0.1;
|
||||
}
|
||||
if (!isset($punkte[$v1])) {
|
||||
$punkte[$v1] = - ($value['bumid']);
|
||||
} else {
|
||||
$punkte[$v1] = $punkte[$v1] - $value['bumid'];
|
||||
}
|
||||
if (!isset($punkte[$v2])) {
|
||||
$punkte[$v2] = - ($value['bumid']);
|
||||
} else {
|
||||
$punkte[$v2] = $punkte[$v2] - $value['bumid'];
|
||||
}
|
||||
}
|
||||
$return = [];
|
||||
arsort($punkte);
|
||||
$i = 1;
|
||||
foreach ($punkte as $name => $value) {
|
||||
$tmp = [];
|
||||
$tmp['rang'] = $i;
|
||||
$tmp['name'] = $name;
|
||||
$tmp['punkte'] = round($value, 1);
|
||||
$return[] = $tmp;
|
||||
$i++;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
Reference in new issue
Block a user