Benotungstool: Importfunktion Termin2

This commit is contained in:
ma0068
2022-10-12 15:06:07 +02:00
parent 9b3b571bd9
commit 54411f4de7
2 changed files with 392 additions and 142 deletions
@@ -402,6 +402,7 @@ foreach ($noten_obj->result as $row)
url += '&typ='+typ;
url += '&'+ts;
$.ajax({
type:"GET",
url: url,
@@ -602,6 +603,42 @@ foreach ($noten_obj->result as $row)
$('#noteimporttextarea').focus();
}
// ****
// * Oeffnet ein Fenster fuer den Import von Noten für die Nachprüfung aus dem Excel
// ****
function GradeImportNachp()
{
var str = "<form name='gradeimportNachp_form'><center><table style='width: 95%'>";
str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
var anlegendiv = document.getElementById("nachpruefung_div");
var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
str += '<tr><td><?php echo $p->t('benotungstool/importAnweisungNachp');?>:</td>';
str += '<td></td><tr><td><textarea id="noteimporttextareaNachp" name="notenimportNachp"></textarea></td></tr>';
str += "<tr><td><input type='button' name='speichern' value='<?php echo $p->t('global/speichern');?>' onclick='saveGradeBulkNachp(\"Termin2\");'>";
str += "</td><td></td></tr></table></center></form>";
anlegendiv.innerHTML = str;
anlegendiv.style.visibility = "visible";
$('#noteimporttextareaNachp').focus();
}
// ****
// * Oeffnet ein Fenster fuer den Import von Noten für Termin3 aus dem Excel
// ****
function GradeImportTermin3()
{
var str = "<form name='gradeimportNachp_form'><center><table style='width: 95%'>";
str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
var anlegendiv = document.getElementById("nachpruefung_div");
var y = getOffset('y'); y = y+50; anlegendiv.style.top = y+"px";
str += '<tr><td><?php echo $p->t('benotungstool/importAnweisungNachp');?>:</td>';
str += '<td></td><tr><td><textarea id="noteimporttextareaNachp" name="notenimportNachp"></textarea></td></tr>';
str += "<tr><td><input type='button' name='speichern' value='<?php echo $p->t('global/speichern');?>' onclick='saveGradeBulkNachp(\"Termin3\");'>";
str += "</td><td></td></tr></table></center></form>";
anlegendiv.innerHTML = str;
anlegendiv.style.visibility = "visible";
$('#noteimporttextareaTermin3').focus();
}
// Speichert die Noten ueber den Import
function saveGradeBulk()
{
@@ -698,6 +735,105 @@ foreach ($noten_obj->result as $row)
}
}
// Speichert die Noten der Nachprüfung ueber den Import
function saveGradeBulkNachp(typ)
{
data = $('#noteimporttextareaNachp').val();
closeDiv();
//Reihen ermitteln
var rows = data.split("\n");
var i=0;
var params='';
alertMsg = '';
var gradedata = {};
var validGrades = '';
<?php
// If CIS_GESAMTNOTE_PUNKTE is false, check for valid grades
// Fill Array $gradesArray with valid grades
if (CIS_GESAMTNOTE_PUNKTE == false)
{
$gradesArray = array();
foreach ($noten_obj->result as $row_note)
{
if ($row_note->lehre && $row_note->aktiv)
$gradesArray[] = '"' . $row_note->anmerkung . '"';
}
// Output JS variable with valid grades
echo 'var validGrades = [' . implode(',', $gradesArray) . '];';
}
?>
for(row in rows)
{
zeile = rows[row].split(" ");
<?php
// If CIS_GESAMTNOTE_PUNKTE is false, check for valid grades
if (CIS_GESAMTNOTE_PUNKTE == false)
echo ' // check for valid grades
if (validGrades.indexOf(zeile[2]) === -1 && typeof(zeile[2]) != "undefined" && zeile[2] != "")
{
alertMsg = alertMsg+"Die Note "+zeile[2]+" ist nicht zulaessig. Die Zeile wurde uebersprungen. \n";
continue;
}';
?>
if (zeile[0]!='' && zeile[1]!='' && zeile[2]!='')
{
gradedata['student_uid_'+i]=zeile[0];
gradedata['datumNachp_'+i]=zeile[1];
<?php
if (CIS_GESAMTNOTE_PUNKTE)
echo "gradedata['punkte_'+i]= zeile[2];";
else
echo "gradedata['note_'+i]= zeile[2];";
?>
i++;
}
}
if (alertMsg != "")
alert(alertMsg);
if (i>0)
{
var jetzt = new Date();
var ts = jetzt.getTime();
var url= '<?php echo "nachpruefungeintragen.php?lvid=".urlencode($lvid)."&stsem=".urlencode($stsem); ?>';
url += '&sammel=1';
url += '&typ=' + typ;
url += '&submit=1&'+ts;
$.ajax({
type:"POST",
url: url,
data: gradedata,
success:function(result)
{
var resp = result;
if (resp!='')
{
alert(resp);
}
window.location.reload();
},
error:function(result)
{
alert('Request Nachprüfung fehlgeschlagen');
}
});
}
else
{
alert('<?php echo $p->t('benotungstool/hilfeImport');?>');
}
}
//-->
</script>
</head>
@@ -1052,11 +1188,15 @@ $htmlstring .= "<th>" . $p->t('benotungstool/punkte') . ' / ' . $p->t('benotungs
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
$htmlstring .= "<th colspan='2'>" . $p->t('benotungstool/nachpruefung') . "</th>";
$htmlstring .= "<th colspan='2'><br>" . $p->t('benotungstool/nachpruefung') . "<br>
<input type='button' onclick='GradeImportNachp()' value='" . $p->t('benotungstool/importieren') . "'>
</th>";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
$htmlstring .= "<th colspan='2' nowrap>" . $p->t('benotungstool/nachpruefung2') . "</th>";
$htmlstring .= "<th colspan='2' nowrap><br>" . $p->t('benotungstool/nachpruefung') . "<br>
<input type='button' onclick='GradeImportTermin3()' value='" . $p->t('benotungstool/importieren') . "'>
</th>";
}
if (defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
@@ -41,10 +41,15 @@ require_once('../../../../include/benutzerfunktion.class.php');
require_once('../../../../include/benutzer.class.php');
require_once('../../../../include/student.class.php');
require_once('../../../../include/notenschluessel.class.php');
require_once('../../../../include/phrasen.class.php');
if (!$db = new basis_db())
die('Fehler beim Herstellen der Datenbankverbindung');
$sprache = getSprache();
$p = new phrasen($sprache);
$user = get_uid();
if(!check_lektor($user))
@@ -52,6 +57,7 @@ if(!check_lektor($user))
$lehreinheit_id='';
$lehreinheit_id_pr='';
if(isset($_GET['lvid']) && is_numeric($_GET['lvid'])) //Lehrveranstaltung_id
$lvid = $_GET['lvid'];
@@ -62,60 +68,17 @@ if(isset($_GET['lehreinheit_id']) && is_numeric($_GET['lehreinheit_id'])) //Lehr
$lehreinheit_id = $_GET['lehreinheit_id'];
if(isset($_GET['lehreinheit_id_pr']) && is_numeric($_GET['lehreinheit_id_pr'])) //Lehreinheit_id der pruefung
$lehreinheit_id = $_GET['lehreinheit_id_pr'];
if(isset($_GET['datum']))
{
$datum = $_GET['datum'];
$datum_obj = new datum();
$datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true) OR die('Invalid date format');
}
else
die('Fehlerhafte Parameteruebergabe');
//Laden der Lehrveranstaltung
$lv_obj = new lehrveranstaltung();
if(!$lv_obj->load($lvid))
die($lv_obj->errormsg);
//Studiengang laden
$stg_obj = new studiengang($lv_obj->studiengang_kz);
$lehreinheit_id_pr = $_GET['lehreinheit_id_pr'];
if(isset($_GET['stsem']))
$stsem = $_GET['stsem'];
else
$stsem = '';
$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
$uid = (isset($_GET['uid'])?$_GET['uid']:'');
//Studiensemester laden
$stsem_obj = new studiensemester();
if($stsem=='')
$stsem = $stsem_obj->getaktorNext();
$student_uid = $_REQUEST["student_uid"];
$note = $_REQUEST["note"];
if(isset($_REQUEST['punkte']))
$punkte = $_REQUEST['punkte'];
else
$punkte = '';
$punkte = str_replace(',','.',$punkte);
if($punkte!='')
{
// Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
$notenschluessel = new notenschluessel();
$note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
if($note_pruef!=$note)
{
$note = $note_pruef;
$note_dirty=true;
}
}
if(!isset($_GET['typ']))
{
$typ='Termin2';
@@ -128,16 +91,151 @@ else
die('Typ ist ungueltig');
}
if($note=='')
$note = 9;
$old_note = $note;
// lvgesamtnote für studenten speichern
if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
if (isset($_REQUEST['sammel']) && $_REQUEST["sammel"] == 1)
{
foreach ($_POST as $row=>$val)
{
if(mb_strstr(mb_strtolower($row), 'student_uid_'))
{
$id=mb_substr($row, mb_strlen('student_uid_'));
$student_uid = $_POST['student_uid_'.$id];
$note = null;
$punkte = null;
$datum = null;
if(isset($_POST['note_'.$id]))
$note = $_POST['note_'.$id];
elseif(isset($_POST['punkte_'.$id]))
$punkte = $_POST['punkte_'.$id];
else
{
$response.="\nNote oder Punkte fehlen";
continue;
}
$punkte=str_replace(',','.', $punkte);
$datum = $_POST['datumNachp_'.$id];
// //check ob Matrikelnummer anstelle der student_uid übergeben wurde
//
//
// $student = new student();
//
//
// $response2 = true;
// if (!$student->checkIfValidStudentUID($student_uid))
// {
// //UID ermitteln
// if(!$student_uid = $student->getUidFromMatrikelnummer($student_uid))
// {
// $response2 = false;
// $response2.="\n".$p->t('benotungstool/studentMitMatrikelnummerExistiertNicht',array($student_uid));
// continue;
// }
// }
$lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem);
if(isset($_POST['student_uid_'.$id]) && (isset($_POST['note_'.$id]) || isset($_POST['punkte_'.$id])) && isset($_POST['datumNachp_'.$id]))
{
// echo "\ndb " . " lvid ". $lvid . " note " . $note . " student_uid " . $student_uid . " datum " . $datum . " studiensem " .
// $stsem . " lehreinheit_id_pr " . $lehreinheit_id . " typ " . $typ . "\n";
$response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte);
echo "\ndb " . " lvid ". $lvid . " note " . $note . " student_uid " . $student_uid . " datum " . $datum . " studiensem " .
$stsem . " lehreinheit_id_pr " . $lehreinheit_id . " typ " . $typ . " response" . $response . "\n";
// echo $response;
}
else
{
echo "\n fehlende oder fehlerhafte Inputparameter";
}
}
}
}
else
{
// Einzelupdate
if(isset($_GET['datum']) )
{
$datum = $_GET['datum'];
$datum_obj = new datum();
$datum = $datum_obj->checkformatDatum($datum, 'Y-m-d', true) OR die('Invalid date format');
}
// echo "Variante Einzel";
else
die('Fehlerhafte Parameteruebergabe');
$student_uid = $_REQUEST["student_uid"];
$note = $_REQUEST["note"];
if(isset($_REQUEST['punkte']))
$punkte = $_REQUEST['punkte'];
else
$punkte = '';
$punkte = str_replace(',','.',$punkte);
if($punkte!='')
{
// Bei Punkteeingabe wird die Note nochmals geprueft und ggf korrigiert
$notenschluessel = new notenschluessel();
$note_pruef = $notenschluessel->getNote($punkte, $lvid, $stsem);
if($note_pruef!=$note)
{
$note = $note_pruef;
$note_dirty=true;
}
}
if($note=='')
$note = 9;
$old_note = $note;
//Laden der Lehrveranstaltung
$lv_obj = new lehrveranstaltung();
if(!$lv_obj->load($lvid))
die($lv_obj->errormsg);
//Studiengang laden
$stg_obj = new studiengang($lv_obj->studiengang_kz);
$uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:'');
$uid = (isset($_GET['uid'])?$_GET['uid']:'');
// lvgesamtnote für studenten speichern
if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
{
// Die Pruefung muss einer Lehreinheit zugeordnet werden
// deshalb wird hier versucht eine passende Lehreinheit zu ermitteln.
$lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem);
$response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note);
echo $response;
}
else
echo "Fehler beim Eintragen der Pr&uuml;fungen";
}
/**
* Berechnet Lehreinheit auf Basis LV-Daten
* @param string $db Datenbankvariable
* @param string $student_uid student_uid
* @param int $lvid Lehrveranstaltungsid
* @param string $stsem Studiensemester im Format 'WSYYYY'
* @return String LehreinheitId
*/
function getLehreinheit($db, $lvid, $student_uid, $stsem)
{
// Die Pruefung muss einer Lehreinheit zugeordnet werden
// deshalb wird hier versucht eine passende Lehreinheit zu ermitteln.
$le_arr = array();
$qry_stud = "SELECT lehreinheit_id, lehrform_kurzbz
FROM
@@ -158,104 +256,117 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
}
}
if (!in_array($lehreinheit_id,$le_arr))
//if (!in_array($lehreinheit_id,$le_arr))
$lehreinheit_id = $le_arr[0];
return $lehreinheit_id;
}
/**
* Prüfung speichern
*/
function savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte=null)
{
$jetzt = date("Y-m-d H:i:s");
global $user; //, $note, $punkte, $datum;
$pr = new Pruefung();
// Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt
// und dort die Zeugnisnote gespeichert
if($pr->getPruefungen($student_uid, "Termin1", $lvid, $stsem))
if ($typ == "Termin2")
{
if ($pr->result)
$pr = new Pruefung();
// Wenn eine Pruefung angelegt wird, wird zuerst eine Pruefung mit 1. Termin angelegt
// und dort die Zeugnisnote gespeichert
if($pr->getPruefungen($student_uid, "Termin1", $lvid, $stsem))
{
$termin1 = 1;
}
else
{
$lvnote = new lvgesamtnote();
if ($lvnote->load($lvid, $student_uid, $stsem))
if ($pr->result)
{
$pr_note = $lvnote->note;
$pr_punkte = $lvnote->punkte;
$benotungsdatum = $lvnote->benotungsdatum;
$termin1 = 1;
}
else
{
$pr_note = 9;
$pr_punkte = '';
$benotungsdatum = $jetzt;
$lvnote = new lvgesamtnote();
if ($lvnote->load($lvid, $student_uid, $stsem))
{
$pr_note = $lvnote->note;
$pr_punkte = $lvnote->punkte;
$benotungsdatum = $lvnote->benotungsdatum;
}
else
{
$pr_note = 9;
$pr_punkte = '';
$benotungsdatum = $jetzt;
}
$pr_1 = new Pruefung();
$pr_1->lehreinheit_id = $lehreinheit_id;
$pr_1->student_uid = $student_uid;
$pr_1->mitarbeiter_uid = $user;
$pr_1->note = $pr_note;
$pr_1->punkte = $pr_punkte;
$pr_1->pruefungstyp_kurzbz = "Termin1";
$pr_1->datum = $benotungsdatum;
$pr_1->anmerkung = "";
$pr_1->insertamum = $jetzt;
$pr_1->insertvon = $user;
$pr_1->updateamum = null;
$pr_1->updatevon = null;
$pr_1->ext_id = null;
$pr_1->new = true;
$pr_1->save();
$response = "neu T1";
}
$pr_1 = new Pruefung();
$pr_1->lehreinheit_id = $lehreinheit_id;
$pr_1->student_uid = $student_uid;
$pr_1->mitarbeiter_uid = $user;
$pr_1->note = $pr_note;
$pr_1->punkte = $pr_punkte;
$pr_1->pruefungstyp_kurzbz = "Termin1";
$pr_1->datum = $benotungsdatum;
$pr_1->anmerkung = "";
$pr_1->insertamum = $jetzt;
$pr_1->insertvon = $user;
$pr_1->updateamum = null;
$pr_1->updatevon = null;
$pr_1->ext_id = null;
$pr_1->new = true;
$pr_1->save();
$prTermin2 = new Pruefung();
$pr_2 = new Pruefung();
// Die Pruefung wird als Termin2 eingetragen
if ($prTermin2->getPruefungen($student_uid, 'Termin2', $lvid, $stsem))
{
if ($prTermin2->result)
{
$pr_2->load($prTermin2->result[0]->pruefung_id);
$pr_2->new = null;
$pr_2->updateamum = $jetzt;
$pr_2->updatevon = $user;
$old_note = $pr_2->note;
$pr_2->note = $note;
$pr_2->punkte = $punkte;
$pr_2->datum = $datum;
$pr_2->anmerkung = "";
$response = "update T2";
}
else
{
$pr_2->lehreinheit_id = $lehreinheit_id;
$pr_2->student_uid = $student_uid;
$pr_2->mitarbeiter_uid = $user;
$pr_2->note = $note;
$pr_2->punkte = $punkte;
$pr_2->pruefungstyp_kurzbz = $typ;
$pr_2->datum = $datum;
$pr_2->anmerkung = "";
$pr_2->insertamum = $jetzt;
$pr_2->insertvon = $user;
$pr_2->updateamum = null;
$pr_2->updatevon = null;
$pr_2->ext_id = null;
$pr_2->new = true;
$old_note = -1;
$response = "new T2";
}
$pr_2->save();
}
}
}
$prTermin2 = new Pruefung();
$pr_2 = new Pruefung();
// Die Pruefung wird als Termin2 eingetragen
if ($prTermin2->getPruefungen($student_uid, $typ, $lvid, $stsem))
else
{
if ($prTermin2->result)
{
$pr_2->load($prTermin2->result[0]->pruefung_id);
$pr_2->new = null;
$pr_2->updateamum = $jetzt;
$pr_2->updatevon = $user;
$old_note = $pr_2->note;
$pr_2->note = $note;
$pr_2->punkte = $punkte;
$pr_2->datum = $datum;
$pr_2->anmerkung = "";
}
else
{
$pr_2->lehreinheit_id = $lehreinheit_id;
$pr_2->student_uid = $student_uid;
$pr_2->mitarbeiter_uid = $user;
$pr_2->note = $note;
$pr_2->punkte = $punkte;
$pr_2->pruefungstyp_kurzbz = $typ;
$pr_2->datum = $datum;
$pr_2->anmerkung = "";
$pr_2->insertamum = $jetzt;
$pr_2->insertvon = $user;
$pr_2->updateamum = null;
$pr_2->updatevon = null;
$pr_2->ext_id = null;
$pr_2->new = true;
$old_note = -1;
}
$pr_2->save();
$response = "no existing T3";
}
// Wenn eine Pruefung eingetragen wird, wird danach die LV-Note korrigiert
$jetzt = date("Y-m-d H:i:s");
$lvid = $_REQUEST["lvid"];
//Gesamtnote updaten
$lvgesamtnote = new lvgesamtnote();
if (!$lvgesamtnote->load($lvid, $student_uid, $stsem))
{
if (!$lvgesamtnote->load($lvid, $student_uid, $stsem))
{
$lvgesamtnote->student_uid = $student_uid;
$lvgesamtnote->lehrveranstaltung_id = $lvid;
$lvgesamtnote->studiensemester_kurzbz = $stsem;
@@ -272,9 +383,9 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
$lvgesamtnote->insertvon = $user;
$new = true;
$response = "neu";
}
else
{
}
else
{
$lvgesamtnote->note = $note;
$lvgesamtnote->punkte = $punkte;
$lvgesamtnote->benotungsdatum = $jetzt;
@@ -286,12 +397,11 @@ if (isset($_REQUEST["submit"]) && ($_REQUEST["student_uid"] != '') )
else
$response = "update";
}
if (!$lvgesamtnote->save($new))
echo "<span class='error'>".$lvgesamtnote->errormsg."</span>";
return $lvgesamtnote->errormsg;
else
echo $response;
return $response;
}
else
echo "Fehler beim Eintragen der Pr&uuml;fungen";
?>