moved credit points check from cours registration to exam registration

This commit is contained in:
Stefan Puraner
2016-10-06 17:04:52 +02:00
parent 7269672b2d
commit e1c19fa4de
3 changed files with 236 additions and 183 deletions
@@ -80,7 +80,6 @@ switch($method)
$data['errormsg']='Studenten UID fehlt.'; $data['errormsg']='Studenten UID fehlt.';
break; break;
} }
$data = saveAnmeldung($aktStudiensemester, $uid); $data = saveAnmeldung($aktStudiensemester, $uid);
break; break;
case 'getAllPruefungen': case 'getAllPruefungen':
@@ -442,6 +441,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
// Defaulteinstellung für Prüfungstypen - schauen, ob bereits aus KTU-Addon geladen // Defaulteinstellung für Prüfungstypen - schauen, ob bereits aus KTU-Addon geladen
if(!isset($pruefungstyp_kurzbzArray)) if(!isset($pruefungstyp_kurzbzArray))
$pruefungstyp_kurzbzArray = array("Termin1","Termin2","kommPruef"); $pruefungstyp_kurzbzArray = array("Termin1","Termin2","kommPruef");
if(isset($pruefungstyp_kurzbzArray)) if(isset($pruefungstyp_kurzbzArray))
{ {
if($anzahlPruefungen < count($pruefungstyp_kurzbzArray)) if($anzahlPruefungen < count($pruefungstyp_kurzbzArray))
@@ -501,23 +501,30 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$anmeldung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; $anmeldung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz;
$lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]);
$konto = new konto(); // $konto = new konto();
$creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); // $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester);
//
// if($creditpoints !== false)
// {
// if($creditpoints <= $lehrveranstaltung->ects)
// {
// $data['error'] = 'true';
// $data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints');
// return $data;
// }
// }
if($creditpoints !== false) //Kollisionsprüfung und Prüfung auf ausreichen Creditpoints
{
if($creditpoints < $lehrveranstaltung->ects)
{
$data['error'] = 'true';
$data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints');
return $data;
}
}
//Kollisionsprüfung
$anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester);
if($anmeldungen !== false)
{
$ects = 0;
foreach($anmeldungen as $temp) foreach($anmeldungen as $temp)
{ {
$lehrveranstaltung = new lehrveranstaltung($temp->lehrveranstaltung_id);
$ects += $lehrveranstaltung->ects;
$datum = new datum(); $datum = new datum();
if(($datum->between($termin->von, $termin->bis, $temp->von)) || ($datum->between($termin->von, $termin->bis, $temp->bis))) if(($datum->between($termin->von, $termin->bis, $temp->von)) || ($datum->between($termin->von, $termin->bis, $temp->bis)))
{ {
@@ -526,12 +533,29 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$data['errormsg'] = $p->t('pruefung/kollisionMitAndererAnmeldung'); $data['errormsg'] = $p->t('pruefung/kollisionMitAndererAnmeldung');
} }
} }
$konto = new konto();
$creditPoints = $konto->getCreditPointsOfStudiensemester($uid, $aktStudiensemester);
if(($creditPoints != false) && ($ects >= ($creditPoints - $ects)))
{
$data['error'] = 'true';
$data['errormsg'] = $p->t('pruefung/zuWenigeCreditPoints');
return $data;
}
if(isset($data['error']) && $data['error'] = 'true') if(isset($data['error']) && $data['error'] = 'true')
{ {
return $data; return $data;
} }
} }
else else
{
$data['error'] = 'true';
$data['errormsg'] = $anmeldung->errormsg;
return $data;
}
}
else
{ {
$data['error']='true'; $data['error']='true';
$data['errormsg']=$p->t('pruefung/keineFreienPlaetzeVorhanden'); $data['errormsg']=$p->t('pruefung/keineFreienPlaetzeVorhanden');
-16
View File
@@ -102,14 +102,7 @@ if(isset($_GET['getAnmeldung']))
if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem)) if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem))
{ {
// User ist noch nicht angemeldet // User ist noch nicht angemeldet
//Pruefen ob genug Credit Points zur Verfuegung stehen zur Anmeldung
$konto = new konto();
$cp = $konto->getCreditPoints($uid, $stsem);
if($cp===false || $cp>=$lv->ects)
echo '<br><input type="radio" value="'.$lvid.'" name="lv"/>'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')'; echo '<br><input type="radio" value="'.$lvid.'" name="lv"/>'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')';
else
echo '<br><input type="radio" disabled="true" value="'.$lvid.'" name="lv" /><span style="color:gray;">'.$lv->bezeichnung.'</span><img src="../../../skin/images/information.png" title="'.$p->t('studienplan/zuWenigCP').'" />';
} }
else else
{ {
@@ -200,12 +193,6 @@ if(isset($_POST['action']) && $_POST['action']=='anmeldung')
$bngruppe = new benutzergruppe(); $bngruppe = new benutzergruppe();
if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem)) if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem))
{
// Pruefen ob genug CP zur Verfuegung stehen falls diese reduziert sind
$konto = new konto();
$cp = $konto->getCreditPoints($uid, $stsem);
if($cp===false || $cp>=$lv->ects)
{ {
$bngruppe->uid = $uid; $bngruppe->uid = $uid;
$bngruppe->gruppe_kurzbz = $lvangebot->result[0]->gruppe_kurzbz; $bngruppe->gruppe_kurzbz = $lvangebot->result[0]->gruppe_kurzbz;
@@ -218,9 +205,6 @@ if(isset($_POST['action']) && $_POST['action']=='anmeldung')
echo '<script>window.parent.menu.location.reload();</script>'; echo '<script>window.parent.menu.location.reload();</script>';
} }
} }
else
echo '<span class="error">'.$p->t('studienplan/zuWenigCP').'</span>';
}
else else
{ {
echo '<span class="error">'.$p->t('studienplan/bereitsAngemeldet').'</span>'; echo '<span class="error">'.$p->t('studienplan/bereitsAngemeldet').'</span>';
+45
View File
@@ -801,6 +801,51 @@ class konto extends basis_db
} }
} }
/**
* Liefert die CreditPoints die ein Studierender für ein Studiensemester zur Verfügung hat
* falls dieser einschraenkungen eingetragen hat. Wenn keine Einschraenkung vorhanden ist,
* wird false zurueckgeliefert. Es werden die Creditpoint der Belastungen herangezogen.
* Die Gegenbuchung wird nicht beruecksichtigt.
* @return Anzahl der gekauften CreditPoints oder false falls unbeschraenkt
*/
public function getCreditPointsOfStudiensemester($uid, $studiensemester_kurzbz)
{
$qry = "SELECT sum(credit_points) as cp
FROM
public.tbl_konto
JOIN public.tbl_benutzer USING(person_id)
WHERE
uid=".$this->db_add_param($uid)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND buchungsnr_verweis is null
AND credit_points is not null";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$creditpoints = $row->cp;
if($creditpoints!='')
{
return $creditpoints;
}
else
return false;
}
else
{
// keine Einschraenkung vorhanden
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/** /**
* Fügt zur erstellten Buchung eine Zahlungsreferenz hinzu * Fügt zur erstellten Buchung eine Zahlungsreferenz hinzu
* @param $buchungsnr Die ID der erstellten Buchung in der Datenbank * @param $buchungsnr Die ID der erstellten Buchung in der Datenbank