, 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; } }