- Updated pruefling - getReihungstestPerson method to calculate RT results with new formula

- added offsetpoints to testtool.vw_auswertung_ablauf and vw_auswertung
This commit is contained in:
alex
2020-01-13 18:11:13 +01:00
parent 59b6909239
commit db50f6c856
2 changed files with 121 additions and 5 deletions
+9 -5
View File
@@ -446,6 +446,8 @@ class pruefling extends basis_db
if($this->db_num_rows($result)==0)
return false;
$summeGewicht = 0;
while($row = $this->db_fetch_object($result))
{
//wenn maxpunkte ueberschritten wurde -> 100%
@@ -455,17 +457,19 @@ class pruefling extends basis_db
$row->punkte = $row->maxpunkte;
}
else
$prozent = ($row->punkte/$row->maxpunkte)*100;
$prozent = (($row->punkte + $row->offsetpunkte)/($row->maxpunkte + $row->offsetpunkte))*100;
if($punkte)
{
$ergebnis +=$row->punkte;
$ergebnis += $row->punkte;
}
else
$ergebnis+=$prozent*$row->gewicht;
{
$ergebnis += $prozent * $row->gewicht;
$summeGewicht += $row->gewicht;
}
}
return $ergebnis;
return $summeGewicht > 0 ? $ergebnis/$summeGewicht : $ergebnis;
}
else
{
+112
View File
@@ -3460,6 +3460,118 @@ if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.tbl_gebiet LIMIT
echo '<br>testtool.tbl_gebiet: Spalte offsetpunkte hinzugefuegt';
}
// ADD COLUMN offset to testtool.vw_auswertung_ablauf
if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung_ablauf LIMIT 1"))
{
// CREATE OR REPLACE VIEW testtool.vw_auswertung_ablauf
$qry = '
CREATE OR REPLACE VIEW testtool.vw_auswertung_ablauf AS (
SELECT
tbl_gebiet.gebiet_id,
tbl_gebiet.bezeichnung AS gebiet,
tbl_ablauf.reihung,
tbl_gebiet.maxpunkte,
tbl_pruefling.pruefling_id,
tbl_pruefling.prestudent_id,
tbl_person.vorname,
tbl_person.nachname,
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
( SELECT sum(tbl_vorschlag.punkte) AS sum
FROM testtool.tbl_vorschlag
JOIN testtool.tbl_antwort USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE tbl_antwort.pruefling_id = tbl_pruefling.pruefling_id AND tbl_frage.gebiet_id = tbl_gebiet.gebiet_id
) AS punkte,
tbl_rt_person.rt_id AS reihungstest_id,
tbl_ablauf.gewicht,
tbl_studiengang.studiengang_kz,
tbl_gebiet.offsetpunkte
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf ON tbl_ablauf.studiengang_kz = tbl_pruefling.studiengang_kz
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_rt_person USING (person_id)
JOIN lehre.tbl_studienplan ON tbl_studienplan.studienplan_id = tbl_rt_person.studienplan_id
JOIN lehre.tbl_studienordnung ON tbl_studienordnung.studienordnung_id = tbl_studienplan.studienordnung_id
JOIN public.tbl_studiengang ON tbl_prestudent.studiengang_kz = tbl_studiengang.studiengang_kz
WHERE NOT (tbl_ablauf.gebiet_id IN
(
SELECT tbl_kategorie.gebiet_id
FROM testtool.tbl_kategorie
)
) AND tbl_studienordnung.studiengang_kz = tbl_pruefling.studiengang_kz
)';
if(!$db->db_query($qry))
echo '<strong>testtool.vw_auswertung_ablauf: '.$db->db_last_error().'</strong><br>';
else
echo '<br>testtool.vw_auswertung_ablauf view created';
}
// ADD COLUMN offset to testtool.vw_auswertung_ablauf
if(!$result = @$db->db_query("SELECT offsetpunkte FROM testtool.vw_auswertung LIMIT 1"))
{
// CREATE OR REPLACE VIEW testtool.vw_auswertung_ablauf
$qry = '
CREATE OR REPLACE VIEW testtool.vw_auswertung AS
SELECT
tbl_gebiet.gebiet_id,
tbl_gebiet.bezeichnung AS gebiet,
tbl_gebiet.maxpunkte,
tbl_pruefling.pruefling_id,
tbl_pruefling.prestudent_id,
tbl_person.vorname,
tbl_person.nachname,
tbl_person.gebdatum,
tbl_person.geschlecht,
tbl_pruefling.semester,
upper(tbl_studiengang.typ::character varying(1)::text || tbl_studiengang.kurzbz::text) AS stg_kurzbz,
tbl_studiengang.bezeichnung AS stg_bez,
tbl_pruefling.registriert,
tbl_pruefling.idnachweis,
(
SELECT
sum(tbl_vorschlag.punkte) AS sum
FROM
testtool.tbl_vorschlag
JOIN testtool.tbl_antwort USING (vorschlag_id)
JOIN testtool.tbl_frage USING (frage_id)
WHERE
tbl_antwort.pruefling_id = tbl_pruefling.pruefling_id
AND tbl_frage.gebiet_id = tbl_gebiet.gebiet_id
) AS punkte,
tbl_rt_person.rt_id as reihungstest_id,
tbl_ablauf.gewicht,
tbl_person.person_id,
tbl_gebiet.offsetpunkte
FROM
testtool.tbl_pruefling
JOIN testtool.tbl_ablauf ON (tbl_ablauf.studiengang_kz = tbl_pruefling.studiengang_kz AND tbl_ablauf.semester = tbl_pruefling.semester)
JOIN testtool.tbl_gebiet USING (gebiet_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_studiengang ON tbl_prestudent.studiengang_kz = tbl_studiengang.studiengang_kz
JOIN public.tbl_rt_person USING (person_id)
JOIN lehre.tbl_studienplan ON (tbl_studienplan.studienplan_id = tbl_rt_person.studienplan_id)
JOIN lehre.tbl_studienordnung ON (tbl_studienordnung.studienordnung_id = tbl_studienplan.studienordnung_id)
WHERE
tbl_studienordnung.studiengang_kz = tbl_prestudent.studiengang_kz
AND NOT (tbl_ablauf.gebiet_id IN ( SELECT tbl_kategorie.gebiet_id
FROM testtool.tbl_kategorie));';
if(!$db->db_query($qry))
echo '<strong>testtool.vw_auswertung: '.$db->db_last_error().'</strong><br>';
else
echo '<br>testtool.vw_auswertung view created';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';