first commit
This commit is contained in:
commit
e81864e683
2984 files changed
+267797
No files matched your search
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
|
||||
namespace HermannTelser\Zuladungsliste\Berechnung;
|
||||
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||
use TYPO3\CMS\Frontend\Utility\EidUtility;
|
||||
use HermannTelser\Zuladungsliste\Utilities\Message;
|
||||
|
||||
/***
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* (c) 2019 Hermann Telser <hermann.telser@gmail.com>, NUH-Odds GmbH
|
||||
*
|
||||
***/
|
||||
|
||||
class Erfolgspunkte
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public static function load_user($_liste, $user_objekt)
|
||||
{
|
||||
// _Berechnung::$debug = 1;
|
||||
|
||||
if (_Berechnung::$debug) {
|
||||
Message::debug(
|
||||
__FILE__,
|
||||
__LINE__,
|
||||
"Erfolgspunkte"
|
||||
);
|
||||
}
|
||||
|
||||
if (!isset(_Berechnung::$_data['sektionstage'])) {
|
||||
Sektionstage::load();
|
||||
}
|
||||
|
||||
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_zuladungsliste_domain_model_wettbewerbe');
|
||||
$queryBuilder
|
||||
->select(
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe.wettbewerb',
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe.verfahrensid',
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe.verfahrensort',
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe.entscheidungstermin',
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe.abgabetermin',
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe.sperre_deaktiviert',
|
||||
'b.ladung_durch_auslober',
|
||||
'c.punkte',
|
||||
'd.sperrung AS mit_sperrung',
|
||||
'd.bezeichnung',
|
||||
'e.bezeichnung AS bezeichnung_punkte'
|
||||
)
|
||||
->from('tx_zuladungsliste_domain_model_wettbewerbe')
|
||||
->leftJoin(
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe',
|
||||
'tx_zuladungsliste_wettbewerbe_architekten_mm',
|
||||
'b',
|
||||
$queryBuilder->expr()->eq(
|
||||
'b.uid_wettbewerbe',
|
||||
$queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_wettbewerbe.uid')
|
||||
)
|
||||
)
|
||||
->leftJoin(
|
||||
'b',
|
||||
'tx_zuladungsliste_punkte_kriterien_mm',
|
||||
'c',
|
||||
$queryBuilder->expr()->eq(
|
||||
'c.uid_punkte',
|
||||
$queryBuilder->quoteIdentifier('b.uid_punkte')
|
||||
)
|
||||
)->leftJoin(
|
||||
'tx_zuladungsliste_domain_model_wettbewerbe',
|
||||
'tx_zuladungsliste_domain_model_kriterien',
|
||||
'd',
|
||||
$queryBuilder->expr()->eq(
|
||||
'd.uid',
|
||||
$queryBuilder->quoteIdentifier('tx_zuladungsliste_domain_model_wettbewerbe.kriteriumid')
|
||||
)
|
||||
)->leftJoin(
|
||||
'c',
|
||||
'tx_zuladungsliste_domain_model_punkte',
|
||||
'e',
|
||||
$queryBuilder->expr()->eq(
|
||||
'e.uid',
|
||||
$queryBuilder->quoteIdentifier('c.uid_punkte')
|
||||
)
|
||||
)
|
||||
->where(
|
||||
$queryBuilder->expr()->eq('c.uid_kriterien', 'tx_zuladungsliste_domain_model_wettbewerbe.kriteriumid'),
|
||||
$queryBuilder->expr()->eq('b.tstamp_ablehnen', 0),
|
||||
$queryBuilder->expr()->gt('b.tstamp_aktivierung', 0),
|
||||
$queryBuilder->expr()->eq('b.uid_user', (int)$user_objekt['uid'])
|
||||
)
|
||||
->groupBy('tx_zuladungsliste_domain_model_wettbewerbe.verfahrensid')
|
||||
->orderBy('tx_zuladungsliste_domain_model_wettbewerbe.entscheidungstermin');
|
||||
|
||||
|
||||
if (_Berechnung::$_config['berechne_bis'] != 0) {
|
||||
$date = date("Y-m-d", _Berechnung::$_config['berechne_bis']);
|
||||
$queryBuilder->andWhere("b.tstamp_aktivierung <= ". _Berechnung::$_config['berechne_bis']);
|
||||
$queryBuilder->andWhere("tx_zuladungsliste_domain_model_wettbewerbe.entscheidungstermin < '". $date ."'");
|
||||
}
|
||||
|
||||
$statement = $queryBuilder->execute()->fetchAll();
|
||||
if (_Berechnung::$debug) {
|
||||
Message::note($queryBuilder->getSQL());
|
||||
}
|
||||
|
||||
$_liste["gesperrt_bis"] = 0;
|
||||
$_liste["kommentar"] = 0;
|
||||
$_liste["gesperrt"] = 0;
|
||||
$_liste["nominiert"] = 1;
|
||||
|
||||
$_return_sort = [];
|
||||
foreach ($statement as $key => $row) {
|
||||
if ((int)$row["entscheidungstermin"]>0) {
|
||||
$entscheidungstermin = strtotime($row["entscheidungstermin"]);
|
||||
$datetime2 = new \DateTime($row["entscheidungstermin"]);
|
||||
} else {
|
||||
$entscheidungstermin = strtotime($row["abgabetermin"]);
|
||||
$datetime2 = new \DateTime($row["abgabetermin"]);
|
||||
}
|
||||
|
||||
$_sektionstag = Sektionstage::filter($entscheidungstermin);
|
||||
|
||||
$datetime1 = new \DateTime();
|
||||
if (_Berechnung::$_config['berechne_bis'] != 0) {
|
||||
$datetime1->setTimestamp(_Berechnung::$_config['berechne_bis']);
|
||||
}
|
||||
$interval = $datetime1->diff($datetime2);
|
||||
$monate_seit_entscheidungstermin = $interval->m + ($interval->y * 12);
|
||||
|
||||
$row["regelwerk"] = $_sektionstag["bezeichnung"];
|
||||
$row["monate_seit_entscheidungstermin"] = $monate_seit_entscheidungstermin;
|
||||
|
||||
// PUNKTE GÜLTIGKEIT
|
||||
$row["punkte_aktive"] = $monate_seit_entscheidungstermin<=$_sektionstag["punktezeit"] ? 1 : 0;
|
||||
|
||||
if ($row["punkte_aktive"] == 1) {
|
||||
$_liste["punkte"] = $_liste["punkte"] + $row["punkte"];
|
||||
}
|
||||
|
||||
$datetime3 = clone $datetime2;
|
||||
$datetime3->modify("+".$_sektionstag["punktezeit"]." months");
|
||||
$row["gueltig_bis"] = date("d.m.Y", $datetime3->format("U"));
|
||||
$row["wettbewerb_sort"] = $datetime3->format("U");
|
||||
|
||||
// SPERRZEIT
|
||||
if ($row["mit_sperrung"] and $row["sperre_deaktiviert"]==0) {
|
||||
if ($row['ladung_durch_auslober'] == 1) {
|
||||
// Active Sperrzeit wird auf 9 Monate verkürzt
|
||||
$_sektionstag["sperrzeit"] = 9;
|
||||
}
|
||||
$row["sperrung_aktive"] = $monate_seit_entscheidungstermin<=$_sektionstag["sperrzeit"] ? 1 : 0;
|
||||
$datetime2->modify("+".$_sektionstag["sperrzeit"]." months");
|
||||
$row["gesperrt_bis"] = date("d.m.Y", $datetime2->format("U"));
|
||||
|
||||
$_liste['controll']['gesperrt_bis'] = $row["gesperrt_bis"];
|
||||
$_liste['controll']['sperrung_aktive'] = $datetime2->format("U");
|
||||
$_liste['controll']['berechne_bis'] = _Berechnung::$_config['berechne_bis'];
|
||||
|
||||
// salam 28.0.42022
|
||||
$sperreZeitLimit = (_Berechnung::$_config['berechne_bis']!= 0) ? _Berechnung::$_config['berechne_bis'] : time();
|
||||
|
||||
if ($row["sperrung_aktive"] and $datetime2->format("U") > $sperreZeitLimit) {
|
||||
$_liste["gesperrt_bis"] = $row["gesperrt_bis"];
|
||||
if ($row['ladung_durch_auslober'] == 1) {
|
||||
$_liste["kommentar"] = $row["wettbewerb"]. ' (Ladung durch Auslober/in, Sperrzeit wird auf 9 Monate verkürzt)';
|
||||
} else {
|
||||
$_liste["kommentar"] = $row["wettbewerb"];
|
||||
}
|
||||
$_liste["gesperrt"] = 1;
|
||||
$_liste["nominiert"] = 0;
|
||||
}
|
||||
}
|
||||
$_return_sort[] = $row;
|
||||
}
|
||||
|
||||
|
||||
if ($_return_sort) {
|
||||
$wettbewerb_sort = array_column($_return_sort, 'wettbewerb_sort');
|
||||
array_multisort($wettbewerb_sort, SORT_ASC, $_return_sort);
|
||||
}
|
||||
|
||||
// WETTBEWERBE ERFOLGSPUNKTE
|
||||
$_liste["auswertung"]["wettbewerbe"] = $_return_sort;
|
||||
|
||||
return $_liste;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user