diff --git a/application/views/organisation/reihungstest/ReihungstestUebersichtData.php b/application/views/organisation/reihungstest/ReihungstestUebersichtData.php index be41e06c7..961abbfda 100644 --- a/application/views/organisation/reihungstest/ReihungstestUebersichtData.php +++ b/application/views/organisation/reihungstest/ReihungstestUebersichtData.php @@ -39,9 +39,66 @@ oeffentlich, studiensemester_kurzbz, anmeldefrist, - (SELECT count(*) - FROM public.tbl_rt_person - WHERE rt_id=tbl_reihungstest.reihungstest_id + ( + SELECT count(DISTINCT(tbl_rt_person.rt_person_id)) + FROM public.tbl_rt_person + JOIN PUBLIC.tbl_reihungstest rt ON (tbl_rt_person.rt_id = rt.reihungstest_id) + JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE tbl_rt_person.rt_id = tbl_reihungstest.reihungstest_id + AND CASE WHEN + ( + get_rolle_prestudent (tbl_prestudent.prestudent_id, null) IN ('Abgewiesener') + AND + rt.datum > ( + SELECT MAX(insertamum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = 'Abgewiesener' + LIMIT 1 + ) + ) + THEN + false + ELSE + true + END + AND tbl_rt_person.studienplan_id IN ( + SELECT studienplan_id + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + ) + AND tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE ende <= ( + SELECT start + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY ende DESC LIMIT 1 + ) + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE start >= ( + SELECT ende + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY start ASC LIMIT 1 + ) + ) ) as anzahl_angemeldet, /* Bezeichnung der Studiengaenge der zugeordneten Personen*/ diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php index f5cd72b4a..2b5080708 100644 --- a/include/reihungstest.class.php +++ b/include/reihungstest.class.php @@ -377,8 +377,64 @@ class reihungstest extends basis_db $qry = " SELECT *, ( - SELECT count(*) FROM public.tbl_prestudent - WHERE reihungstest_id=a.reihungstest_id + SELECT count(DISTINCT(tbl_rt_person.rt_person_id)) + FROM public.tbl_rt_person + JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE tbl_rt_person.rt_id = a.reihungstest_id + AND CASE WHEN + ( + get_rolle_prestudent (tbl_prestudent.prestudent_id, a.studiensemester_kurzbz) IN ('Abgewiesener') + AND + a.datum > ( + SELECT MAX(insertamum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = 'Abgewiesener' + LIMIT 1 + ) + ) + THEN + false + ELSE + true + END + AND tbl_rt_person.studienplan_id IN ( + SELECT studienplan_id + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + ) + AND tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = a.studiensemester_kurzbz + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE ende <= ( + SELECT start + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = a.studiensemester_kurzbz + ) + ORDER BY ende DESC LIMIT 1 + ) + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE start >= ( + SELECT ende + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = a.studiensemester_kurzbz + ) + ORDER BY start ASC LIMIT 1 + ) + ) ) as angemeldete_teilnehmer FROM ( @@ -504,13 +560,65 @@ class reihungstest extends basis_db */ public function getTeilnehmerAnzahl($reihungstest_id) { - $qry = 'SELECT - count(*) AS anzahl - FROM - public.tbl_rt_person - WHERE - rt_id = '.$this->db_add_param($reihungstest_id, FHC_INTEGER); - + $qry = 'SELECT count(DISTINCT(tbl_rt_person.rt_person_id)) as anzahl + FROM public.tbl_rt_person + JOIN PUBLIC.tbl_reihungstest rt ON (tbl_rt_person.rt_id = rt.reihungstest_id) + JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE tbl_rt_person.rt_id = '.$this->db_add_param($reihungstest_id, FHC_INTEGER).' + AND CASE WHEN + ( + get_rolle_prestudent (tbl_prestudent.prestudent_id, rt.studiensemester_kurzbz) IN (\'Abgewiesener\') + AND + rt.datum > ( + SELECT MAX(insertamum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = \'Abgewiesener\' + LIMIT 1 + ) + ) + THEN + false + ELSE + true + END + AND tbl_rt_person.studienplan_id IN ( + SELECT studienplan_id + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + ) + AND tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE ende <= ( + SELECT start + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY ende DESC LIMIT 1 + ) + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE start >= ( + SELECT ende + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY start ASC LIMIT 1 + ) + )'; if ($result = $this->db_query($qry)) { if ($row = $this->db_fetch_object($result)) @@ -1126,8 +1234,64 @@ class reihungstest extends basis_db $qry = "SELECT distinct a.*, ( - SELECT count(*) FROM public.tbl_rt_person - WHERE rt_id=a.reihungstest_id + SELECT count(DISTINCT(tbl_rt_person.rt_person_id)) + FROM public.tbl_rt_person + JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE tbl_rt_person.rt_id = a.reihungstest_id + AND CASE WHEN + ( + get_rolle_prestudent (tbl_prestudent.prestudent_id, a.studiensemester_kurzbz) IN ('Abgewiesener') + AND + a.datum > ( + SELECT MAX(insertamum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = 'Abgewiesener' + LIMIT 1 + ) + ) + THEN + false + ELSE + true + END + AND tbl_rt_person.studienplan_id IN ( + SELECT studienplan_id + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + ) + AND tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = a.studiensemester_kurzbz + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE ende <= ( + SELECT start + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = a.studiensemester_kurzbz + ) + ORDER BY ende DESC LIMIT 1 + ) + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE start >= ( + SELECT ende + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = a.studiensemester_kurzbz + ) + ORDER BY start ASC LIMIT 1 + ) + ) ) as angemeldete_teilnehmer FROM public.tbl_reihungstest a diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index 1acfe1a55..b62bdceac 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -121,19 +121,19 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'prestudent lower(nachname || ' ' || vorname) like '%" . $db->db_escape(mb_strtolower($search)) . "%' OR lower(vorname || ' ' || nachname) like '%" . $db->db_escape(mb_strtolower($search)) . "%' OR prestudent_id::text like '%" . $db->db_escape(mb_strtolower($search)) . "%')"; - $first = true; - if (is_array($studiensemester_kurzbz)) - $qry .= " AND ("; - foreach ($studiensemester_kurzbz as $stsem) { - $stsem = trim($stsem); - if (!$first) - $qry .= 'OR '; - $qry .= "get_rolle_prestudent(prestudent_id, " . $db->db_add_param($stsem) . ") IN ('Interessent')"; - } - if (is_array($studiensemester_kurzbz)) - $qry .= ")"; - $qry .= - " ORDER BY nachname,vorname,stg + $first = true; + if (is_array($studiensemester_kurzbz)) + $qry .= " AND ("; + foreach ($studiensemester_kurzbz as $stsem) { + $stsem = trim($stsem); + if (!$first) + $qry .= 'OR '; + $qry .= "get_rolle_prestudent(prestudent_id, " . $db->db_add_param($stsem) . ") IN ('Interessent')"; + } + if (is_array($studiensemester_kurzbz)) + $qry .= ")"; + $qry .= + " ORDER BY nachname,vorname,stg LIMIT 10"; if ($result = $db->db_query($qry)) @@ -162,7 +162,7 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'prestudent $item['student_uid'] = ''; $result_obj[] = $item; } - echo json_encode($result_obj); + echo json_encode($result_obj); } exit; } @@ -478,6 +478,43 @@ if ($rtFreischalten) } } +// Ajax-Request um einen Reihungstest freizuschalten +$clearList = filter_input(INPUT_POST, 'clearList', FILTER_VALIDATE_BOOLEAN); +if ($clearList) +{ + if (!$rechte->isBerechtigt('infocenter', null, 'suid')) + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => $rechte->errormsg + )); + exit(); + } + + $qry = "DELETE FROM testtool.tbl_pruefling pf + WHERE + ( + NOT EXISTS (SELECT 1 FROM testtool.tbl_pruefling_frage WHERE pruefling_id=pf.pruefling_id) AND + NOT EXISTS (SELECT 1 FROM testtool.tbl_antwort WHERE pruefling_id=pf.pruefling_id) + )"; + + if ($result = $db->db_query($qry)) + { + echo json_encode(array( + 'status' => 'ok', + 'msg' => $db->db_affected_rows($result).' leere Prüflinge wurden gelöscht')); + exit(); + } + else + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => 'Fehler beim Löschen der leeren Prüflinge' + )); + exit(); + } +} + // Informiert die Studiengangsassistenz über das Ende des Tests $testende = filter_input(INPUT_POST, 'testende', FILTER_VALIDATE_BOOLEAN); if ($testende) @@ -648,23 +685,23 @@ if ($testende) } } } - if ($sendError) - { - echo json_encode(array( - 'status' => 'fehler', - 'msg' => '

Fehler beim Senden einer Nachricht

' - )); - exit(); - } - else - { - $empfaengerArray = array_unique($empfaengerArray); - echo json_encode(array( - 'status' => 'ok', - 'msg' => 'Nachricht erfolgreich verschickt an: '.implode(',', $empfaengerArray) - )); - exit(); - } + if ($sendError) + { + echo json_encode(array( + 'status' => 'fehler', + 'msg' => '

Fehler beim Senden einer Nachricht

' + )); + exit(); + } + else + { + $empfaengerArray = array_unique($empfaengerArray); + echo json_encode(array( + 'status' => 'ok', + 'msg' => 'Nachricht erfolgreich verschickt an: '.implode(',', $empfaengerArray) + )); + exit(); + } } // Fügt einen Teilnehmer zum Reihungstest hinzu @@ -769,223 +806,223 @@ if (isset($_POST['method']) && $_POST['method'] == 'addPerson') $punkteUebertragen = filter_input(INPUT_POST, 'punkteUebertragen', FILTER_VALIDATE_BOOLEAN); if ($punkteUebertragen) { -/* if (isset($_POST['reihungstest_id']) && is_numeric($_POST['reihungstest_id'])) - {*/ - //$reihungstest = new reihungstest(/*$_POST['reihungstest_id']*/); - $msg_warning = ''; - $msg_error = ''; - $count_success_punkte = 0; - $count_success_gesamtpunkte = 0; - $count_success_bewerber = 0; + /* if (isset($_POST['reihungstest_id']) && is_numeric($_POST['reihungstest_id'])) + {*/ + //$reihungstest = new reihungstest(/*$_POST['reihungstest_id']*/); + $msg_warning = ''; + $msg_error = ''; + $count_success_punkte = 0; + $count_success_gesamtpunkte = 0; + $count_success_bewerber = 0; - if (isset($_POST['prestudentPunkteArr'])) + if (isset($_POST['prestudentPunkteArr'])) + { + foreach ($_POST['prestudentPunkteArr'] AS $key => $array) { - foreach ($_POST['prestudentPunkteArr'] AS $key => $array) + $reihungstest = new reihungstest($array['reihungstest_id']); + $rtpunkte = number_format(floatval(str_replace(',', '.', $array['ergebnis'])), 4); + $prestudentrolle = new prestudent($array['prestudent_id']); + $prestudentrolle->getLastStatus($array['prestudent_id'], null, 'Interessent'); + + if (!$rechte->isBerechtigt('lehre/reihungstest', $prestudentrolle->studiengang_kz, 'sui')) { - $reihungstest = new reihungstest($array['reihungstest_id']); - $rtpunkte = number_format(floatval(str_replace(',', '.', $array['ergebnis'])), 4); - $prestudentrolle = new prestudent($array['prestudent_id']); - $prestudentrolle->getLastStatus($array['prestudent_id'], null, 'Interessent'); + $msg_error .= '
Sie haben keine Rechte, um für diesen Studiengang Ergebnisse ins FAS zu übertragen'; + continue; + } - if (!$rechte->isBerechtigt('lehre/reihungstest', $prestudentrolle->studiengang_kz, 'sui')) + // Checken, ob Person-Reihungstest-Studienplan zuteilung existiert + if ($reihungstest->checkPersonRtStudienplanExists($prestudentrolle->person_id, $array['reihungstest_id'], $prestudentrolle->studienplan_id)) + { + $setRTPunkte = new reihungstest(); + $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $array['reihungstest_id'], $prestudentrolle->studienplan_id); + + // Check, ob Punkte schon befüllt sind + if ($setRTPunkte->punkte == '') { - $msg_error .= '
Sie haben keine Rechte, um für diesen Studiengang Ergebnisse ins FAS zu übertragen'; - continue; - } + $setRTPunkte->new = false; + $setRTPunkte->punkte = $rtpunkte; + $setRTPunkte->updateamum = date('Y-m-d H:i:s'); + $setRTPunkte->updatevon = $user; - // Checken, ob Person-Reihungstest-Studienplan zuteilung existiert - if ($reihungstest->checkPersonRtStudienplanExists($prestudentrolle->person_id, $array['reihungstest_id'], $prestudentrolle->studienplan_id)) - { - $setRTPunkte = new reihungstest(); - $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $array['reihungstest_id'], $prestudentrolle->studienplan_id); - - // Check, ob Punkte schon befüllt sind - if ($setRTPunkte->punkte == '') + if (!$setRTPunkte->savePersonReihungstest()) { - $setRTPunkte->new = false; - $setRTPunkte->punkte = $rtpunkte; - $setRTPunkte->updateamum = date('Y-m-d H:i:s'); - $setRTPunkte->updatevon = $user; - - if (!$setRTPunkte->savePersonReihungstest()) - { - $msg_error .= '
Fehler beim speichern der Reihungstestpunkte für Prestudent '.$array['prestudent_id'].': ' . $setRTPunkte->errormsg; - } - else - { - $count_success_punkte ++; - } + $msg_error .= '
Fehler beim speichern der Reihungstestpunkte für Prestudent '.$array['prestudent_id'].': ' . $setRTPunkte->errormsg; } else { - $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte für den Studienplan '.$prestudentrolle->studienplan_id.' eingetragen.'; + $count_success_punkte ++; } } else { - $setRTPunkte = new reihungstest(); - $ort_kurzbz = ''; - // Checken, ob schon irgendeine Raumzuteilung existiert (Check ohne Studienplan) und diese ggf. übernehmen - $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $array['reihungstest_id']); - if ($setRTPunkte->ort_kurzbz != '') - { - $ort_kurzbz = $setRTPunkte->ort_kurzbz; - } - $setRTPunkte = new reihungstest(); - $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $array['reihungstest_id'], $prestudentrolle->studienplan_id); + $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte für den Studienplan '.$prestudentrolle->studienplan_id.' eingetragen.'; + } + } + else + { + $setRTPunkte = new reihungstest(); + $ort_kurzbz = ''; + // Checken, ob schon irgendeine Raumzuteilung existiert (Check ohne Studienplan) und diese ggf. übernehmen + $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $array['reihungstest_id']); + if ($setRTPunkte->ort_kurzbz != '') + { + $ort_kurzbz = $setRTPunkte->ort_kurzbz; + } + $setRTPunkte = new reihungstest(); + $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $array['reihungstest_id'], $prestudentrolle->studienplan_id); - // Check, ob Punkte schon befüllt sind - if ($setRTPunkte->punkte == '') - { - $setRTPunkte->new = true; - $setRTPunkte->person_id = $prestudentrolle->person_id; - $setRTPunkte->reihungstest_id = $array['reihungstest_id']; - $setRTPunkte->anmeldedatum = ''; - $setRTPunkte->teilgenommen = true; - $setRTPunkte->ort_kurzbz = $ort_kurzbz; - $setRTPunkte->studienplan_id = $prestudentrolle->studienplan_id; - $setRTPunkte->punkte = $rtpunkte; - $setRTPunkte->insertamum = date('Y-m-d H:i:s'); - $setRTPunkte->insertvon = $user; + // Check, ob Punkte schon befüllt sind + if ($setRTPunkte->punkte == '') + { + $setRTPunkte->new = true; + $setRTPunkte->person_id = $prestudentrolle->person_id; + $setRTPunkte->reihungstest_id = $array['reihungstest_id']; + $setRTPunkte->anmeldedatum = ''; + $setRTPunkte->teilgenommen = true; + $setRTPunkte->ort_kurzbz = $ort_kurzbz; + $setRTPunkte->studienplan_id = $prestudentrolle->studienplan_id; + $setRTPunkte->punkte = $rtpunkte; + $setRTPunkte->insertamum = date('Y-m-d H:i:s'); + $setRTPunkte->insertvon = $user; - if (!$setRTPunkte->savePersonReihungstest()) - { - $msg_error .= '
Fehler beim speichern der Reihungstestpunkte für Prestudent ' . $array['prestudent_id'] . ': ' . $setRTPunkte->errormsg; - } - else - { - $count_success_punkte ++; - } + if (!$setRTPunkte->savePersonReihungstest()) + { + $msg_error .= '
Fehler beim speichern der Reihungstestpunkte für Prestudent ' . $array['prestudent_id'] . ': ' . $setRTPunkte->errormsg; } else { - $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte für den Studienplan '.$prestudentrolle->studienplan_id.' eingetragen.'; + $count_success_punkte ++; } } - - $gesamtpunkteSetzen = filter_input(INPUT_POST, 'gesamtpunkteSetzen', FILTER_VALIDATE_BOOLEAN); - // Wenn gesamtpunkteSetzen true ist, auch die Gesamtpunkte für den Prestudenten setzen - if ($gesamtpunkteSetzen) + else { - $prestudent = new prestudent($array['prestudent_id']); + $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte für den Studienplan '.$prestudentrolle->studienplan_id.' eingetragen.'; + } + } - // Check, ob Punkte schon befüllt sind - if ($prestudent->punkte == '') + $gesamtpunkteSetzen = filter_input(INPUT_POST, 'gesamtpunkteSetzen', FILTER_VALIDATE_BOOLEAN); + // Wenn gesamtpunkteSetzen true ist, auch die Gesamtpunkte für den Prestudenten setzen + if ($gesamtpunkteSetzen) + { + $prestudent = new prestudent($array['prestudent_id']); + + // Check, ob Punkte schon befüllt sind + if ($prestudent->punkte == '') + { + $prestudent->new = false; + $prestudent->punkte = $rtpunkte; + $prestudent->reihungstestangetreten = true; + $setRTPunkte->updateamum = date('Y-m-d H:i:s'); + $setRTPunkte->updatevon = $user; + + if (!$prestudent->save()) { - $prestudent->new = false; - $prestudent->punkte = $rtpunkte; - $prestudent->reihungstestangetreten = true; - $setRTPunkte->updateamum = date('Y-m-d H:i:s'); - $setRTPunkte->updatevon = $user; - - if (!$prestudent->save()) - { - $msg_error .= '
Fehler beim setzen der Gesamtpunkte für Prestudent '.$array['prestudent_id'].': ' . $prestudent->errormsg; - } - else - { - $count_success_gesamtpunkte++; - } + $msg_error .= '
Fehler beim setzen der Gesamtpunkte für Prestudent '.$array['prestudent_id'].': ' . $prestudent->errormsg; } else { - $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits Gesamtpunkte eingetragen.'; + $count_success_gesamtpunkte++; } } - - $zuBewerberMachen = filter_input(INPUT_POST, 'zuBewerberMachen', FILTER_VALIDATE_BOOLEAN); - // Wenn zuBewerberMachen true ist, wird der Prestudent auch zum Bewerber gemacht - if ($zuBewerberMachen) + else { - $prestudent = new prestudent($array['prestudent_id']); + $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits Gesamtpunkte eingetragen.'; + } + } - // Checken, ob schon Bewerberstatus vorhanden ist - if (!$prestudent->load_rolle($array['prestudent_id'], 'Bewerber', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester)) + $zuBewerberMachen = filter_input(INPUT_POST, 'zuBewerberMachen', FILTER_VALIDATE_BOOLEAN); + // Wenn zuBewerberMachen true ist, wird der Prestudent auch zum Bewerber gemacht + if ($zuBewerberMachen) + { + $prestudent = new prestudent($array['prestudent_id']); + + // Checken, ob schon Bewerberstatus vorhanden ist + if (!$prestudent->load_rolle($array['prestudent_id'], 'Bewerber', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester)) + { + // Checken, ob Abgewiesener-Status vorhanden ist + if (!$prestudent->load_rolle($array['prestudent_id'], 'Abgewiesener', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester)) { - // Checken, ob Abgewiesener-Status vorhanden ist - if (!$prestudent->load_rolle($array['prestudent_id'], 'Abgewiesener', $prestudentrolle->studiensemester_kurzbz, $prestudentrolle->ausbildungssemester)) + // Um einen Bewerberstatus zu setzen, muss "reihungstestangetreten" true sein + if ($prestudent->reihungstestangetreten == true) { - // Um einen Bewerberstatus zu setzen, muss "reihungstestangetreten" true sein - if ($prestudent->reihungstestangetreten == true) + // Um einen Bewerberstatus zu setzen, muss die ZGV ausgefüllt sein + if ($prestudent->zgv_code != '') { - // Um einen Bewerberstatus zu setzen, muss die ZGV ausgefüllt sein - if ($prestudent->zgv_code != '') + $studiengang = new studiengang($prestudent->studiengang_kz); + // Bei Mastern muss auch die ZGV-Master ausgefüllt sein + if ($studiengang->typ == 'm' && $prestudent->zgvmas_code == '') { - $studiengang = new studiengang($prestudent->studiengang_kz); - // Bei Mastern muss auch die ZGV-Master ausgefüllt sein - if ($studiengang->typ == 'm' && $prestudent->zgvmas_code == '') - { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine Master-ZGV eingetragen sein.'; - } - else - { - $prestudent->new = true; - $prestudent->prestudent_id = $array['prestudent_id']; - $prestudent->status_kurzbz = 'Bewerber'; - $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; - $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; - $prestudent->datum = date('Y-m-d'); - $prestudent->insertamum = date('Y-m-d H:i:s'); - $prestudent->insertvon = $user; - $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; - $prestudent->bestaetigtam = ''; - $prestudent->bestaetigtvon = ''; - $prestudent->bewerbung_abgeschicktamum = ''; - $prestudent->studienplan_id = $prestudentrolle->studienplan_id; - - if (!$prestudent->save_rolle()) - { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; - } - else - { - $count_success_bewerber++; - } - } + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine Master-ZGV eingetragen sein.'; } else { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine ZGV eingetragen sein.'; + $prestudent->new = true; + $prestudent->prestudent_id = $array['prestudent_id']; + $prestudent->status_kurzbz = 'Bewerber'; + $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; + $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; + $prestudent->datum = date('Y-m-d'); + $prestudent->insertamum = date('Y-m-d H:i:s'); + $prestudent->insertvon = $user; + $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; + $prestudent->bestaetigtam = ''; + $prestudent->bestaetigtvon = ''; + $prestudent->bewerbung_abgeschicktamum = ''; + $prestudent->studienplan_id = $prestudentrolle->studienplan_id; + + if (!$prestudent->save_rolle()) + { + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; + } + else + { + $count_success_bewerber++; + } } } else { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Zuerst muss "Reihungstestverfahren absolviert" gesetzt sein.'; + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine ZGV eingetragen sein.'; } } else { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es ist bereits ein Abgewiesener-Status vorhanden'; + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Zuerst muss "Reihungstestverfahren absolviert" gesetzt sein.'; } } else { - $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits einen Bewerberstatus'; + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es ist bereits ein Abgewiesener-Status vorhanden'; } } + else + { + $msg_warning .= '
Der Prestudent '.$array['prestudent_id'].' hat bereits einen Bewerberstatus'; + } } } + } - $msg_success = ''; - if ($count_success_punkte > 0) - { - $msg_success .= $count_success_punkte.' Punkte erfolgreich ins FAS übertragen'; - } - if ($count_success_gesamtpunkte > 0) - { - $msg_success .= '
'.$count_success_gesamtpunkte.' Gesamtpunkte erfolgreich gesetzt'; - } - if ($count_success_bewerber > 0) - { - $msg_success .= '
'.$count_success_bewerber.' Prestudenten zu Bewerber gemacht'; - } + $msg_success = ''; + if ($count_success_punkte > 0) + { + $msg_success .= $count_success_punkte.' Punkte erfolgreich ins FAS übertragen'; + } + if ($count_success_gesamtpunkte > 0) + { + $msg_success .= '
'.$count_success_gesamtpunkte.' Gesamtpunkte erfolgreich gesetzt'; + } + if ($count_success_bewerber > 0) + { + $msg_success .= '
'.$count_success_bewerber.' Prestudenten zu Bewerber gemacht'; + } - echo json_encode(array( - 'status' => 'ok', - 'msg_success' => $msg_success, - 'msg_warning' => $msg_warning, - 'msg_error' => $msg_error)); - exit(); + echo json_encode(array( + 'status' => 'ok', + 'msg_success' => $msg_success, + 'msg_warning' => $msg_warning, + 'msg_error' => $msg_error)); + exit(); } function sortByField($multArray, $sortField, $desc = true) @@ -1423,6 +1460,23 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit'])) LEFT JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE 1 = 1 --AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) NOT IN ('Abgewiesener') /*Wenn einkommentiert, kommen zB bei alten Bewerbungen keine Ergebnisse*/ + AND CASE WHEN + ( + get_rolle_prestudent (prestudent_id, rt.studiensemester_kurzbz) IN ('Abgewiesener') + AND + rt.datum > ( + SELECT MAX(insertamum) + FROM PUBLIC.tbl_prestudentstatus spss + WHERE spss.prestudent_id = ps.prestudent_id + AND status_kurzbz = 'Abgewiesener' + LIMIT 1 + ) + ) + THEN + false + ELSE + true + END AND tbl_prestudentstatus.studiensemester_kurzbz IN ( SELECT studiensemester_kurzbz FROM PUBLIC.tbl_studiensemester @@ -1897,7 +1951,7 @@ if (isset($_REQUEST['format']) && $_REQUEST['format'] == 'xls') $worksheet->write($zeile, ++$spalte, ''); } } - $worksheet->writeNumber($zeile, ++$spalte, $erg->gesamtpunkte, $format_punkte); + $worksheet->writeNumber($zeile, ++$spalte, 4, $format_punkte); $worksheet->writeNumber($zeile, ++$spalte, $erg->gesamtoffsetpunkte, $format_punkte); $worksheet->writeNumber($zeile, ++$spalte, $erg->gesamt / 100, $format_prozent); } @@ -2489,6 +2543,38 @@ else }); window.location.href = "mailto:?bcc="+adresseArray.join(";"); } + + function clearList() + { + $.ajax({ + url: "auswertung_fhtw.php", + data: {clearList: true}, + type: "POST", + dataType: "json", + success: function(data) + { + if(data.status !== "ok") + { + $("#msgbox").attr("class","alert alert-danger"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } + else + { + $("#freischaltenWarning").show(); + $("#freischaltenInfo").hide(); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]).delay(2000).fadeOut(); + } + }, + error: function(data) + { + $("#msgbox").attr("class","alert alert-danger"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } + }); + } function checkAllWithResult() { // Schleife ueber die einzelnen Elemente @@ -2866,13 +2952,17 @@ else } else { - echo '  Testfortschritt ansehen'; + echo '  Testfortschritt ansehen'; } } else { echo '  Testfortschritt ansehen'; } + if ($rechte->isBerechtigt('infocenter', null, 'suid')) + { + echo '  '; + } echo ''; echo '
@@ -3002,7 +3092,6 @@ else if ($erg->letzter_status == 'Abgewiesener') { $inaktiv = 'text-muted'; - $erg->prioritaet = 0; } echo " diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 4db82d102..aedffa76e 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -2624,6 +2624,23 @@ if($reihungstest_id!='') JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) WHERE rt_id = ".$db->db_add_param($reihungstest_id, FHC_INTEGER)." + AND CASE WHEN + ( + get_rolle_prestudent (tbl_prestudent.prestudent_id, null) IN ('Abgewiesener') + AND + rt.datum > ( + SELECT MAX(insertamum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = 'Abgewiesener' + LIMIT 1 + ) + ) + THEN + false + ELSE + true + END AND tbl_rt_person.studienplan_id IN ( SELECT studienplan_id FROM PUBLIC.tbl_prestudentstatus