diff --git a/src/structure/components/com_sportsmanager/admin.php b/src/structure/components/com_sportsmanager/admin.php index 2207294..d12d56a 100644 --- a/src/structure/components/com_sportsmanager/admin.php +++ b/src/structure/components/com_sportsmanager/admin.php @@ -4566,68 +4566,78 @@ function adminSpielverlegungen(): void if (empty($filter_status)) $filter_status = "offen,genehmigt,abgelehnt"; - $query = "SELECT" - . "\n t1.begegnung_id, t1.beantragt, t1.Begruendung AS Begruendung_beantragt, t1.Termin_alt," - . "\n t2.genehmigt, t2.Termin_neu, t2.Begruendung AS Begruendung_genehmigt," - . "\n t3.abgelehnt, t3.Begruendung AS Begruendung_abgelehnt," - . "\n t5.teamname AS Heim, t6.teamname AS Gast, t7.bezeichnung AS Liga, t8.teamname AS beantragt_von," - - // Ermittlung Status - . "\n CASE" - . "\n WHEN t3.abgelehnt IS NOT NULL AND (t2.genehmigt IS NULL OR t3.abgelehnt > t2.genehmigt)" - . "\n THEN 'abgelehnt'" - . "\n WHEN t2.genehmigt IS NOT NULL" - . "\n THEN 'genehmigt'" - . "\n ELSE 'offen'" - . "\n END AS status" - - // Beantragt - . "\n FROM (" - . "\n SELECT begegnung_id," - . "\n MIN(eingetragen) AS beantragt," - . "\n MIN(zeitpunkt) AS Termin_alt," - . "\n MAX(kommentar) AS Begruendung," - . "\n MAX(team_id) AS team_id" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE aktion IN (2,3)" - . "\n GROUP BY begegnung_id" - . "\n ) AS t1" - - // Genehmigt - . "\n LEFT JOIN (" - . "\n SELECT begegnung_id," - . "\n MAX(eingetragen) AS genehmigt," - . "\n MAX(zeitpunkt) AS Termin_neu," - . "\n MAX(kommentar) AS Begruendung" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE aktion = 1" - . "\n GROUP BY begegnung_id" - . "\n ) AS t2 ON t2.begegnung_id = t1.begegnung_id" - - // Abgelehnt - . "\n LEFT JOIN (" - . "\n SELECT begegnung_id," - . "\n MAX(eingetragen) AS abgelehnt," - . "\n MAX(kommentar) AS Begruendung" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE aktion = 10" - . "\n GROUP BY begegnung_id" - . "\n ) AS t3 ON t3.begegnung_id = t1.begegnung_id" - - // Sonstige Infos - . "\n LEFT JOIN #__sportsmanager_begegnung AS t4 ON t4.begegnung_id = t1.begegnung_id" - . "\n LEFT JOIN #__sportsmanager_team AS t5 ON t5.team_id = t4.heim_team_id" - . "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t4.gast_team_id" - . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t7 ON t7.veranstaltung_id = t5.veranstaltung_id" - . "\n LEFT JOIN #__sportsmanager_team AS t8 ON t8.team_id = t1.team_id" - - // Filter - . "\n WHERE t7.saison_id = '$filter_saison_id'" - . "\n " . kategorieFilter("AND t7.kategorie IN") - . "\n HAVING status in ('" . str_replace(",", "','", $filter_status) . "')" - . "\n ORDER BY t1.beantragt DESC;"; + $query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id," + . "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt," + . "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga," + . "\n t3.teamname AS Heim, t4.teamname AS Gast, t6.teamname AS beantragt_von, 'offen' AS status" + . "\n FROM #__sportsmanager_begegnung_historie AS t1" + . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" + . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t3.team_id = t2.heim_team_id" + . "\n LEFT JOIN #__sportsmanager_team AS t4 ON t4.team_id = t2.gast_team_id" + . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t5.veranstaltung_id = t4.veranstaltung_id" + . "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t1.team_id" + . "\n WHERE t1.aktion = 2" + . "\n AND t5.saison_id = '$filter_saison_id'" + . "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;"; + $spielverlegungen = loadObjectList($db, $query); + + $last_id = ""; + foreach ($spielverlegungen as $key => $spielverlegung) { + if ($spielverlegung->begegnung_id == $last_id) { + unset($spielverlegungen[$key]); + } else { + $last_id = $spielverlegung->begegnung_id; + + $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt," + . "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu" + . "\n FROM #__sportsmanager_begegnung_historie AS t1" + . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" + . "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id" + . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; + + $genehmigt = loadObjectList($db, $query); + + if (!empty($genehmigt)) { + $spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id; + $spielverlegung->genehmigt = $genehmigt[0]->genehmigt; + $spielverlegung->Termin_neu = $genehmigt[0]->Termin_neu; + $spielverlegung->genehmigt_von = $genehmigt[0]->genehmigt_von; + $spielverlegung->genehmigt_verein = $genehmigt[0]->genehmigt_verein; + $spielverlegung->status = "genehmigt"; + } else { + $spielverlegung->genehmigt_id = ""; + $spielverlegung->genehmigt = ""; + $spielverlegung->Termin_neu = ""; + $spielverlegung->genehmigt_von = ""; + $spielverlegung->genehmigt_verein = ""; + } - $spielverlegungen = loadObjectList($db, $query); + $query = "SELECT t1.begegnung_historie_id AS abgelehnt_id, t1.eingetragen AS abgelehnt," + . "\n t1.user_id AS abgelehnt_von, t1.team_id as abgelehnt_verein," + . "\n t1.kommentar AS Begruendung_abgelehnt" + . "\n FROM #__sportsmanager_begegnung_historie AS t1" + . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" + . "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id" + . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; + + $abgelehnt = loadObjectList($db, $query); + + if (!empty($abgelehnt)) { + $spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id; + $spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt; + $spielverlegung->abgelehnt_von = $abgelehnt[0]->abgelehnt_von; + $spielverlegung->abgelehnt_verein = $abgelehnt[0]->abgelehnt_verein; + $spielverlegung->Begruendung_abgelehnt = $abgelehnt[0]->Begruendung_abgelehnt; + $spielverlegung->status = "abgelehnt"; + } else { + $spielverlegung->abgelehnt_id = ""; + $spielverlegung->abgelehnt = ""; + $spielverlegung->abgelehnt_von = ""; + $spielverlegung->abgelehnt_verein = ""; + $spielverlegung->Begruendung_abgelehnt = ""; + } + } + } HTML_sportsmanager_admin::adminSpielverlegungen($spielverlegungen,$saisons,$filter_saison_id); } diff --git a/src/structure/components/com_sportsmanager/sportsmanager.php b/src/structure/components/com_sportsmanager/sportsmanager.php index 642c5d7..890e4e7 100644 --- a/src/structure/components/com_sportsmanager/sportsmanager.php +++ b/src/structure/components/com_sportsmanager/sportsmanager.php @@ -4118,68 +4118,81 @@ function spielverlegungen(): void $saisons = loadObjectList($db, $query); $filter_saison_id = $saisons[0]->saison_id; - $query = "SELECT" - . "\n t1.begegnung_id, t1.beantragt, t1.Begruendung AS Begruendung_beantragt, t1.Termin_alt," - . "\n t2.genehmigt, t2.Termin_neu, t2.Begruendung AS Begruendung_genehmigt," - . "\n t3.abgelehnt, t3.Begruendung AS Begruendung_abgelehnt," - . "\n t5.teamname AS Heim, t6.teamname AS Gast, t7.bezeichnung AS Liga, t8.teamname AS beantragt_von," - - // Ermittlung Status - . "\n CASE" - . "\n WHEN t3.abgelehnt IS NOT NULL AND (t2.genehmigt IS NULL OR t3.abgelehnt > t2.genehmigt)" - . "\n THEN 'abgelehnt'" - . "\n WHEN t2.genehmigt IS NOT NULL" - . "\n THEN 'genehmigt'" - . "\n ELSE 'offen'" - . "\n END AS status" - - // Beantragt - . "\n FROM (" - . "\n SELECT begegnung_id," - . "\n MIN(eingetragen) AS beantragt," - . "\n MIN(zeitpunkt) AS Termin_alt," - . "\n MAX(kommentar) AS Begruendung," - . "\n MAX(team_id) AS team_id" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE aktion IN (2,3)" - . "\n GROUP BY begegnung_id" - . "\n ) AS t1" - - // Genehmigt - . "\n LEFT JOIN (" - . "\n SELECT begegnung_id," - . "\n MAX(eingetragen) AS genehmigt," - . "\n MAX(zeitpunkt) AS Termin_neu," - . "\n MAX(kommentar) AS Begruendung" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE aktion = 1" - . "\n GROUP BY begegnung_id" - . "\n ) AS t2 ON t2.begegnung_id = t1.begegnung_id" - - // Abgelehnt - . "\n LEFT JOIN (" - . "\n SELECT begegnung_id," - . "\n MAX(eingetragen) AS abgelehnt," - . "\n MAX(kommentar) AS Begruendung" - . "\n FROM #__sportsmanager_begegnung_historie" - . "\n WHERE aktion = 10" - . "\n GROUP BY begegnung_id" - . "\n ) AS t3 ON t3.begegnung_id = t1.begegnung_id" - - // Sonstige Infos - . "\n LEFT JOIN #__sportsmanager_begegnung AS t4 ON t4.begegnung_id = t1.begegnung_id" - . "\n LEFT JOIN #__sportsmanager_team AS t5 ON t5.team_id = t4.heim_team_id" - . "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t4.gast_team_id" - . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t7 ON t7.veranstaltung_id = t5.veranstaltung_id" - . "\n LEFT JOIN #__sportsmanager_team AS t8 ON t8.team_id = t1.team_id" - - // Filter - . "\n WHERE t7.saison_id = '$filter_saison_id'" - . "\n " . kategorieFilter("AND t7.kategorie IN") - . "\n HAVING status in ('" . str_replace(",", "','", $filter_status) . "')" - . "\n ORDER BY t1.beantragt DESC;"; + $query = "SELECT t1.begegnung_historie_id AS beantragt_id, t1.begegnung_id AS begegnung_id," + . "\n t1.eingetragen AS beantragt, t1.kommentar AS Begruendung_beantragt, t1.zeitpunkt AS Termin_alt," + . "\n t1.team_id as beantragt_verein, t5.bezeichnung AS Liga," + . "\n t3.teamname AS Heim, t4.teamname AS Gast, t6.teamname AS beantragt_von, 'offen' AS status" + . "\n FROM #__sportsmanager_begegnung_historie AS t1" + . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" + . "\n LEFT JOIN #__sportsmanager_team AS t3 ON t3.team_id = t2.heim_team_id" + . "\n LEFT JOIN #__sportsmanager_team AS t4 ON t4.team_id = t2.gast_team_id" + . "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t5.veranstaltung_id = t4.veranstaltung_id" + . "\n LEFT JOIN #__sportsmanager_team AS t6 ON t6.team_id = t1.team_id" + . "\n WHERE t1.aktion = 2" + . "\n AND t5.saison_id = '$filter_saison_id'" + . kategorieFilter("AND t5.kategorie IN") + . "\n ORDER BY t1.begegnung_id, t1.zeitpunkt ASC;"; + $spielverlegungen = loadObjectList($db, $query); + + $last_id = ""; + foreach ($spielverlegungen as $key => $spielverlegung) { + if ($spielverlegung->begegnung_id == $last_id) { + unset($spielverlegungen[$key]); + } else { + $last_id = $spielverlegung->begegnung_id; + + $query = "SELECT t1.begegnung_historie_id AS genehmigt_id, t1.eingetragen AS genehmigt," + . "\n t1.user_id AS genehmigt_von, t1.team_id as genehmigt_verein, t1.zeitpunkt AS Termin_neu" + . "\n FROM #__sportsmanager_begegnung_historie AS t1" + . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" + . "\n WHERE t1.aktion = 1 AND t1.begegnung_id = $last_id" + . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; + + $genehmigt = loadObjectList($db, $query); + + if (!empty($genehmigt)) { + $spielverlegung->genehmigt_id = $genehmigt[0]->genehmigt_id; + $spielverlegung->genehmigt = $genehmigt[0]->genehmigt; + $spielverlegung->Termin_neu = $genehmigt[0]->Termin_neu; + $spielverlegung->genehmigt_von = $genehmigt[0]->genehmigt_von; + $spielverlegung->genehmigt_verein = $genehmigt[0]->genehmigt_verein; + $spielverlegung->status = "genehmigt"; + } else { + $spielverlegung->genehmigt_id = ""; + $spielverlegung->genehmigt = ""; + $spielverlegung->Termin_neu = ""; + $spielverlegung->genehmigt_von = ""; + $spielverlegung->genehmigt_verein = ""; + } - $spielverlegungen = loadObjectList($db, $query); + $query = "SELECT t1.begegnung_historie_id AS abgelehnt_id, t1.eingetragen AS abgelehnt," + . "\n t1.user_id AS abgelehnt_von, t1.team_id as abgelehnt_verein," + . "\n t1.kommentar AS Begruendung_abgelehnt" + . "\n FROM #__sportsmanager_begegnung_historie AS t1" + . "\n LEFT JOIN #__sportsmanager_begegnung AS t2 ON t2.begegnung_id = t1.begegnung_id" + . "\n WHERE t1.aktion = 10 AND t1.begegnung_id = $last_id" + . "\n ORDER BY t1.zeitpunkt DESC LIMIT 1;"; + + $abgelehnt = loadObjectList($db, $query); + + if (!empty($abgelehnt)) { + $spielverlegung->abgelehnt_id = $abgelehnt[0]->abgelehnt_id; + $spielverlegung->abgelehnt = $abgelehnt[0]->abgelehnt; + $spielverlegung->abgelehnt_von = $abgelehnt[0]->abgelehnt_von; + $spielverlegung->abgelehnt_verein = $abgelehnt[0]->abgelehnt_verein; + $spielverlegung->Begruendung_abgelehnt = $abgelehnt[0]->Begruendung_abgelehnt; + $spielverlegung->status = "abgelehnt"; + } else { + $spielverlegung->abgelehnt_id = ""; + $spielverlegung->abgelehnt = ""; + $spielverlegung->abgelehnt_von = ""; + $spielverlegung->abgelehnt_verein = ""; + $spielverlegung->Begruendung_abgelehnt = ""; + } + } + } + + $spielverlegungen = array_values($spielverlegungen); if (isJson()) { echo json_encode($spielverlegungen); diff --git a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php index bc8016c..95d9fc7 100644 --- a/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php +++ b/src/structure/components/com_sportsmanager/views/sportsmanager/view.html.php @@ -3984,7 +3984,7 @@ static function spielverlegungen($titel, $beschreibung, $rows): void ?>