mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
- added method getLesForLv to education/Lehreinheit_model
- added methods direktUserAdd, direktuserDelete (for direkt User Zuordnung to le) to education/Lehreinheitgruppe_model - added method getLvsByStudent to education/Lehrveranstaltung_model - Added hasSequence = false to Benutzergruppe_model - fixed typo in lehrveranstaltungDBML
This commit is contained in:
@@ -10,5 +10,72 @@ class Lehreinheit_model extends DB_Model
|
||||
parent::__construct();
|
||||
$this->dbTable = 'lehre.tbl_lehreinheit';
|
||||
$this->pk = 'lehreinheit_id';
|
||||
|
||||
$this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$this->load->model('education/lehreinheitgruppe_model', 'LehreinheitgruppeModel');
|
||||
$this->load->model('education/lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Lehreinheiten for a Lehrveranstaltung in a Studiensemester.
|
||||
* Includes Lehrfach, Lehreinheitgruppen and Lektoren.
|
||||
* @param $lehrveranstaltung_id
|
||||
* @param $studiensemester
|
||||
* @return array with Lehreinheiten and their Lehreinheitgruppen
|
||||
*/
|
||||
public function getLesForLv($lehrveranstaltung_id, $studiensemester)
|
||||
{
|
||||
$lehreinheiten = array();
|
||||
|
||||
$les = $this->loadWhere(
|
||||
array('lehrveranstaltung_id' => $lehrveranstaltung_id,
|
||||
'studiensemester_kurzbz' => $studiensemester)
|
||||
);
|
||||
|
||||
if (hasData($les))
|
||||
{
|
||||
$this->LehrveranstaltungModel->addSelect('kurzbz, bezeichnung');
|
||||
foreach ($les->retval as $le)
|
||||
{
|
||||
$lehrfach = $this->LehrveranstaltungModel->load($le->lehrfach_id);
|
||||
if (hasData($lehrfach))
|
||||
{
|
||||
$letoadd = $le;
|
||||
$letoadd->lehrfach_bezeichnung = $lehrfach->retval[0]->bezeichnung;
|
||||
$letoadd->lehrfach_kurzbz = $lehrfach->retval[0]->kurzbz;
|
||||
|
||||
// add lehreinheitgruppen, each lehreinheitid
|
||||
// having (maybe multiple) lehreinheitgruppen
|
||||
$letoadd->lehreinheitgruppen = array();
|
||||
$lehreinheitgruppen = $this->LehreinheitgruppeModel->loadWhere(array('lehreinheit_id' => $le->lehreinheit_id));
|
||||
if (hasData($lehreinheitgruppen))
|
||||
{
|
||||
foreach ($lehreinheitgruppen->retval as $lehreinheitgruppe)
|
||||
{
|
||||
$letoadd->lehreinheitgruppen[] = array(
|
||||
'semester' => $lehreinheitgruppe->semester,
|
||||
'verband' => $lehreinheitgruppe->verband,
|
||||
'gruppe' => $lehreinheitgruppe->gruppe
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// add lektoren
|
||||
$letoadd->lektoren = array();
|
||||
$lehreinheitmitarbeiter = $this->LehreinheitmitarbeiterModel->loadWhere(array('lehreinheit_id' => $le->lehreinheit_id));
|
||||
if (hasData($lehreinheitmitarbeiter))
|
||||
{
|
||||
foreach ($lehreinheitmitarbeiter->retval as $lehreinheitma)
|
||||
{
|
||||
$letoadd->lektoren[] = $lehreinheitma->mitarbeiter_uid;
|
||||
}
|
||||
}
|
||||
|
||||
$lehreinheiten[] = $letoadd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $lehreinheiten;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,17 @@ class Lehreinheitgruppe_model extends DB_Model
|
||||
parent::__construct();
|
||||
$this->dbTable = 'lehre.tbl_lehreinheitgruppe';
|
||||
$this->pk = 'lehreinheitgruppe_id';
|
||||
$this->load->model('education/lehreinheit_model', 'LehreinheitModel');
|
||||
$this->load->model('organisation/studiengang_model', 'StudiengangModel');
|
||||
$this->load->model('organisation/gruppe_model', 'GruppeModel');
|
||||
$this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel');
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets group directly assigned to a Lehreinheit
|
||||
* @param $lehreinheit_id
|
||||
* @return array
|
||||
*/
|
||||
public function getDirectGroup($lehreinheit_id)
|
||||
{
|
||||
$this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
|
||||
@@ -21,4 +30,226 @@ class Lehreinheitgruppe_model extends DB_Model
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets direct group assignment, consisting of lehreinheitgruppe, gruppe and benutzergruppe
|
||||
* @param $uid
|
||||
* @param $lehreinheit_id
|
||||
* @return array
|
||||
*/
|
||||
public function getDirectGroupAssignment($uid, $lehreinheit_id)
|
||||
{
|
||||
$this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz');
|
||||
$this->addJoin('public.tbl_benutzergruppe', 'gruppe_kurzbz');
|
||||
return $this->loadWhere(array(
|
||||
'tbl_gruppe.direktinskription' => true,
|
||||
'lehreinheit_id' => $lehreinheit_id,
|
||||
'tbl_benutzergruppe.uid' => $uid
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Directly assigns a user to a Lehreinheit (Lehreinheitgruppe, Benutzergruppe).
|
||||
* Creates own "hidden" group if necessary.
|
||||
* @param $uid of the student to assign
|
||||
* @param $lehreinheit_id
|
||||
* @return array error or success
|
||||
*/
|
||||
public function direktUserAdd($uid, $lehreinheit_id)
|
||||
{
|
||||
$result = success('User added successfully');
|
||||
$directgroup = $this->getDirectGroup($lehreinheit_id);
|
||||
$lehreinheit = $this->LehreinheitModel->load($lehreinheit_id);
|
||||
$loggedInUser = getAuthUID();
|
||||
|
||||
if (hasData($directgroup))
|
||||
{
|
||||
$gruppe_kurzbz = $directgroup->retval[0]->gruppe_kurzbz;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Es gibt keine direkte Gruppe zu dieser LE
|
||||
// es wird eine erstellt und zugewiesen
|
||||
if (hasData($lehreinheit))
|
||||
{
|
||||
$lva = $this->LehrveranstaltungModel->load($lehreinheit->retval[0]->lehrveranstaltung_id);
|
||||
|
||||
if (hasData($lva))
|
||||
{
|
||||
$lvadata = $lva->retval[0];
|
||||
$studiengang = $this->StudiengangModel->load($lvadata->studiengang_kz);
|
||||
|
||||
if (hasData($studiengang))
|
||||
{
|
||||
$gruppe_kurzbz = 'GRP_'.$lehreinheit_id;
|
||||
$studiengangdata = $studiengang->retval[0];
|
||||
$kuerzel = mb_strtoupper($studiengangdata->typ . $studiengangdata->kurzbz);
|
||||
$bezeichnung = $kuerzel.' '.$lvadata->semester.' '.$lvadata->kurzbz;
|
||||
|
||||
$gruppe = $this->GruppeModel->load($gruppe_kurzbz);
|
||||
|
||||
if (!hasData($gruppe))
|
||||
{
|
||||
$groupdata = array(
|
||||
'gruppe_kurzbz' => $gruppe_kurzbz,
|
||||
'studiengang_kz' => $lvadata->studiengang_kz,
|
||||
'semester' => $lvadata->semester,
|
||||
'bezeichnung' => $bezeichnung,
|
||||
'aktiv' => true,
|
||||
'mailgrp' => false,
|
||||
'sichtbar' => true,
|
||||
'generiert' => false,
|
||||
'insertamum' => date('Y-m-d H:i:s'),
|
||||
'insertvon' => $loggedInUser,
|
||||
'orgform_kurzbz' => $lvadata->orgform_kurzbz,
|
||||
'direktinskription' => true
|
||||
|
||||
);
|
||||
|
||||
$groupadd = $this->GruppeModel->insert($groupdata);
|
||||
|
||||
if (isError($groupadd))
|
||||
return error('Error when inserting Gruppe');
|
||||
}
|
||||
|
||||
$lehreinheitgruppedata = array(
|
||||
'lehreinheit_id' => $lehreinheit->retval[0]->lehreinheit_id,
|
||||
'gruppe_kurzbz' => $gruppe_kurzbz,
|
||||
'studiengang_kz' => $lvadata->studiengang_kz,
|
||||
'semester' => $lvadata->semester,
|
||||
'insertamum' => date('Y-m-d H:i:s'),
|
||||
'insertvon' => $loggedInUser
|
||||
);
|
||||
|
||||
$lehreinheitgruppeadd = $this->insert($lehreinheitgruppedata);
|
||||
|
||||
if (isError($lehreinheitgruppeadd))
|
||||
$result = error('Error when inserting Lehreinheit');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return error('No Lehreinheit found');
|
||||
}
|
||||
}
|
||||
|
||||
if (hasData($lehreinheit))
|
||||
{
|
||||
$benutzergruppe = $this->BenutzergruppeModel->load(array('uid' => $uid,
|
||||
'gruppe_kurzbz' => $gruppe_kurzbz));
|
||||
|
||||
if (!hasData($benutzergruppe))
|
||||
{
|
||||
if (isset($gruppe_kurzbz) && !isEmptyString($gruppe_kurzbz))
|
||||
{
|
||||
$benutzergruppedata = array(
|
||||
'uid' => $uid,
|
||||
'gruppe_kurzbz' => $gruppe_kurzbz,
|
||||
'studiensemester_kurzbz' => $lehreinheit->retval[0]->studiensemester_kurzbz,
|
||||
'insertamum' => date('Y-m-d H:i:s'),
|
||||
'insertvon' => $loggedInUser
|
||||
);
|
||||
|
||||
$benutzergruppeadd = $this->BenutzergruppeModel->insert($benutzergruppedata);
|
||||
|
||||
if (isError($benutzergruppeadd))
|
||||
$result = error('Error when inserting Benutzergruppe');
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes direct assignment of a student to a Lehreinheit
|
||||
* @param $uid of the assigned student
|
||||
* @param $lehreinheit_id
|
||||
* @return array error or success
|
||||
*/
|
||||
public function direktUserDelete($uid, $lehreinheit_id)
|
||||
{
|
||||
$result = success('User deleted successfully');
|
||||
$directgroup = $this->getDirectGroup($lehreinheit_id);
|
||||
$lehreinheit = $this->LehreinheitModel->load($lehreinheit_id);
|
||||
|
||||
if (hasData($lehreinheit))
|
||||
{
|
||||
if (hasData($directgroup))
|
||||
{
|
||||
$gruppe_kurzbz = $directgroup->retval[0]->gruppe_kurzbz;
|
||||
$deleteresp = $this->BenutzergruppeModel->delete(array('uid' => $uid, 'gruppe_kurzbz' => $gruppe_kurzbz));
|
||||
|
||||
if (hasData($deleteresp))
|
||||
{
|
||||
$uids = $this->BenutzergruppeModel->load(array($gruppe_kurzbz, $lehreinheit->retval[0]->studiensemester_kurzbz));
|
||||
|
||||
if (isSuccess($uids) && !hasData($uids))
|
||||
{
|
||||
// group is empty and can be deleted
|
||||
|
||||
// delete from Lehreinheit
|
||||
$this->delete($directgroup->retval[0]->lehreinheitgruppe_id);
|
||||
|
||||
$studplandevqry = "
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
lehre.tbl_stundenplandev
|
||||
WHERE
|
||||
gruppe_kurzbz=?
|
||||
LIMIT 1";
|
||||
|
||||
$studplandevres = $this->execQuery($studplandevqry, array('gruppe_kurzbz' => $gruppe_kurzbz));
|
||||
if (isSuccess($studplandevres))
|
||||
{
|
||||
if (hasData($studplandevres))
|
||||
{
|
||||
$studplandevdelqry = "
|
||||
DELETE FROM lehre.tbl_stundenplandev
|
||||
WHERE gruppe_kurzbz=?";
|
||||
|
||||
$studplandevdelres = $this->execQuery($studplandevdelqry, array('gruppe_kurzbz' => $gruppe_kurzbz));
|
||||
|
||||
if (!hasData($studplandevdelres))
|
||||
$result = error('Studienplan entry could not be deleted');
|
||||
}
|
||||
else
|
||||
{
|
||||
// delete group if not in Studienplandev. If in Studienplan, deleted next day after cronjob.
|
||||
$gruppedelres = $this->GruppeModel->delete($gruppe_kurzbz);
|
||||
|
||||
if (!hasData($gruppedelres))
|
||||
{
|
||||
$result = error('Gruppe could not be deleted');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = error('Error when querying Studienplan');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = error('There are still users in the Benutzergruppe. Could not be deleted.');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = error('Benutzergruppe could not be deleted');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = error('No direct group found for Lehreinheit');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = error('No Lehreinheit found');
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,8 +132,10 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung
|
||||
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
|
||||
campus.vw_student_lehrveranstaltung
|
||||
JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id)
|
||||
LEFT JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
@@ -171,4 +173,34 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($lehrveranstaltung_id, $studiensemester_kurzbz));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Lehrveranstaltungen of a student
|
||||
* @param $student_uid
|
||||
* @param null $studiensemester_kurzbz
|
||||
* @return array|null
|
||||
*/
|
||||
public function getLvsByStudent($student_uid, $studiensemester_kurzbz = null)
|
||||
{
|
||||
$params = array($student_uid);
|
||||
|
||||
$qry = "SELECT * FROM lehre.tbl_lehrveranstaltung
|
||||
WHERE lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM campus.vw_student_lehrveranstaltung
|
||||
WHERE uid=?";
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= " AND studiensemester_kurzbz=?";
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
$qry .= ") OR lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM lehre.tbl_zeugnisnote WHERE student_uid=?";
|
||||
$params[] = $student_uid;
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= " AND studiensemester_kurzbz=?";
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
$qry .= ") ORDER BY semester, bezeichnung";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,5 +10,6 @@ class Benutzergruppe_model extends DB_Model
|
||||
parent::__construct();
|
||||
$this->dbTable = 'public.tbl_benutzergruppe';
|
||||
$this->pk = array('gruppe_kurzbz', 'uid');
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1698,7 +1698,7 @@ if(!$error)
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = $benutergruppe->errormsg;
|
||||
$errormsg = $benutzergruppe->errormsg;
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user