Files
2026-10-06 19:40:28 +02:00

171 lines
6.0 KiB
PHP

<?php
namespace HermannTelser\Zuladungsliste\PunkteZuweisung;
use ForceUTF8\Encoding;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use HermannTelser\Zuladungsliste\Utilities\Message;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use HermannTelser\Zuladungsliste\Utilities\Resources;
/***
*
* This file is part of the "Zuladungsliste Steiermark" Extension for TYPO3 CMS.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
*
* Copyright notice
*
* (c) 2017 - 2022 Hermann Telser <hermann.telser@gmail.com>
*¨
* All rights reserved
* ************************************************************* */
class PunkteZuweisen
{
/**
* @return void
*/
public static function setzen()
{
$user = $GLOBALS['TSFE']->fe_user->user;
$debug = 1;
$kriteriumid = GeneralUtility::_GP('kriteriumid');
$wettbewerbid = GeneralUtility::_GP('wettbewerbid');
$arr = json_decode(GeneralUtility::_GP('data'), true);
$zuweisung_uid_punkte = (int) $arr["uid_punkte"];
if (!is_numeric($zuweisung_uid_punkte)) {
if ($debug) {
Message::note("zuweisung_uid_punkte fehlt");
}
exit;
}
if (!is_numeric($kriteriumid)) {
if ($debug) {
Message::note("kriteriumid fehlt");
}
exit;
}
if (!is_numeric($wettbewerbid)) {
if ($debug) {
Message::note("wettbewerbid fehlt");
}
exit;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->select('uid', 'uid_wettbewerbe', 'uid_user', 'uid_punkte', 'sorting', 'tstamp', 'crdate', 'tstamp_zuordnung', 'tstamp_aktivierung')
->from('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->orderBy('uid_punkte');
$active_punkte = $queryBuilder->execute()->fetchAll();
// echo $queryBuilder->getSQL();
//
// print_r($active_punkte);
//
// exit;
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_punkte');
$queryBuilder
->select(
'tx_zuladungsliste_domain_model_punkte.uid',
'tx_zuladungsliste_domain_model_punkte.bezeichnung',
'b.sorting',
'b.punkte',
'b.uid_punkte'
)
->from('tx_zuladungsliste_domain_model_punkte')
->leftJoin(
'tx_zuladungsliste_domain_model_punkte',
'tx_zuladungsliste_punkte_kriterien_mm',
'b',
$queryBuilder->expr()->eq(
'b.uid_punkte',
$queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_punkte.uid')
)
)
->where(
$queryBuilder->expr()->eq('b.uid_kriterien', (int) $kriteriumid)
);
$kriterien = $queryBuilder->execute()->fetchAll();
//Kontrolle if uid_punkte existiert in den kriterien für diesen wettbewerb
$stopping = true;
foreach ($kriterien as $key => $value) {
if ($value["uid_punkte"] == $zuweisung_uid_punkte) {
$stopping = false;
}
}
if ($stopping) {
if ($debug) {
Message::note("uid_punkte existiert nicht in den kriterien für diesen wettbewerb");
}
exit;
}
if (count($active_punkte)) {
if ($active_punkte[0]["uid_punkte"]==$zuweisung_uid_punkte) {
// PUNKTE ZUWEISUNG VOM BENUTZER GELÖSCHT
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->delete('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->execute();
} else {
// UPDATE PUNKTE
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder->update('tx_zuladungsliste_wettbewerbe_architekten_mm')
->where(
$queryBuilder->expr()->eq('uid_user', (int) $user['uid']),
$queryBuilder->expr()->eq('uid_wettbewerbe', (int) $wettbewerbid)
)
->set('tstamp', (int) time())
->set('tstamp_zuordnung', (int) time())
->set('uid_punkte', (int) $zuweisung_uid_punkte)
->execute();
}
} else {
// PUNKTE NEU ZUGETEILT
$insertArray = array();
$insertArray['crdate'] = time();
$insertArray['pid'] = WETTBEWERBE_PID;
$insertArray['tstamp_zuordnung'] = time();
$insertArray['uid_punkte'] = $zuweisung_uid_punkte;
$insertArray['uid_wettbewerbe'] = $wettbewerbid;
$insertArray['uid_user'] = $user['uid'];
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_wettbewerbe_architekten_mm');
$queryBuilder
->insert('tx_zuladungsliste_wettbewerbe_architekten_mm')
->values($insertArray)
->execute();
}
// echo $queryBuilder->getSQL();
echo 1;
exit;
}
}