diff --git a/FHC-vendor/jquery-tablesorter/package.json b/FHC-vendor/jquery-tablesorter/package.json
index b16fcb45e..110042959 100644
--- a/FHC-vendor/jquery-tablesorter/package.json
+++ b/FHC-vendor/jquery-tablesorter/package.json
@@ -56,7 +56,7 @@
]
},
"devDependencies": {
- "grunt": "^0.4.5",
+ "grunt": "^1.3.0",
"grunt-cli": "~0.1.13",
"grunt-contrib-clean": "^0.7.0",
"grunt-contrib-concat": "^0.5.1",
diff --git a/README.md b/README.md
index d5620010a..c5212a353 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# FH-Complete
* [FH-Complete Homepage](https://www.fhcomplete.org)
-* [Wiki](https://wiki.fhcomplete.org/)
+* [Wiki](https://wiki.fhcomplete.info/)
* [Changelog](CHANGELOG.md)
diff --git a/application/config/infocenter.php b/application/config/infocenter.php
new file mode 100644
index 000000000..555c30996
--- /dev/null
+++ b/application/config/infocenter.php
@@ -0,0 +1,5 @@
+ array(
+ 'link' => site_url('system/infocenter/ZGVUeberpruefung'),
+ 'description' => 'ZGV Überprüfung',
+ 'expand' => true,
+ 'sort' => 50,
+ 'requiredPermissions' => array(
+ 'lehre/zgvpruefung:r'
+ )
)
)
),
diff --git a/application/controllers/jobs/LehrauftragJob.php b/application/controllers/jobs/LehrauftragJob.php
index 4ba327a2f..7f5754595 100644
--- a/application/controllers/jobs/LehrauftragJob.php
+++ b/application/controllers/jobs/LehrauftragJob.php
@@ -383,8 +383,8 @@ class LehrauftragJob extends JOB_Controller
} // Else if UID exists
else
{
- // Search if studiensemester exists
- $ss_index = array_search($data['studiensemester_kurzbz'], array_column($mail_data_arr, 'studiensemester_kurzbz'));
+ // Search if studiensemester exists inside the existing UID array
+ $ss_index = array_search($data['studiensemester_kurzbz'], array_column($mail_data_arr[$uid_index], 'studiensemester_kurzbz'));
// If studiensemester is new, add studiensemester to existing UID
if ($ss_index === false)
@@ -394,13 +394,6 @@ class LehrauftragJob extends JOB_Controller
$data[$i]
);
}
- // Else if studiensemester exists
- else
- {
- // Add corresponding data to existing studiensemester of UID
- $mail_data_arr[$uid_index]['studiensemester_kurbz'][] = $data[$i];
- }
-
}
}
}
diff --git a/application/controllers/lehre/Pruefungsprotokoll.php b/application/controllers/lehre/Pruefungsprotokoll.php
index 467a7dc71..21f50acca 100644
--- a/application/controllers/lehre/Pruefungsprotokoll.php
+++ b/application/controllers/lehre/Pruefungsprotokoll.php
@@ -220,7 +220,7 @@ class Pruefungsprotokoll extends Auth_Controller
$nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll');
foreach ($data as $idx => $item)
{
- if (in_array($idx, $nullfields) & $item === '')
+ if (in_array($idx, $nullfields) && $item === '')
$data[$idx] = null;
}
diff --git a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
index 8a096338e..0fe70a302 100644
--- a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
+++ b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
@@ -270,7 +270,6 @@ class Lehrauftrag extends Auth_Controller
private function _sendMail($lehrvertrag_data_arr)
{
// Cluster data of new lehrvertraege as needed to send mail
- $lehrvertrag_data_arr = $this->_cluster_newVertragData($lehrvertrag_data_arr);
foreach ($lehrvertrag_data_arr as $lehrvertrag_data)
{
diff --git a/application/controllers/system/Variables.php b/application/controllers/system/Variables.php
index 20303118b..c56407416 100644
--- a/application/controllers/system/Variables.php
+++ b/application/controllers/system/Variables.php
@@ -20,7 +20,8 @@ class Variables extends Auth_Controller
array(
'setVar' => 'basis/variable:rw',
'getVar' => 'basis/variable:rw',
- 'changeStudiensemesterVar' => 'basis/variable:rw'
+ 'changeStudiensemesterVar' => 'basis/variable:rw',
+ 'changeStudengangsTypVar' => 'basis/variable:rw'
)
);
@@ -50,7 +51,9 @@ class Variables extends Auth_Controller
public function getVar()
{
$name = $this->input->get('name');
- $this->outputJson($this->VariableModel->getVariables($this->_uid, array($name)));
+ $typ = $this->input->get('typ');
+
+ $this->outputJson($this->VariableModel->getVariables($this->_uid, array($name, $typ)));
}
/**
@@ -66,6 +69,15 @@ class Variables extends Auth_Controller
$this->outputJson($result);
}
+ public function changeStudengangsTypVar()
+ {
+ $name = $this->input->post('name');
+ $change = $this->input->post('change');
+
+ $result = $this->variablelib->changeStudengangsTypVar($this->_uid, $name, $change);
+ $this->outputJson($result);
+ }
+
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 43de8bb60..44a1cf327 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -12,12 +12,17 @@ class InfoCenter extends Auth_Controller
const APP = 'infocenter';
const TAETIGKEIT = 'bewerbung';
const FREIGABE_MAIL_VORLAGE = 'InfocenterMailFreigabeAssistenz';
+ const ZGVPRUEFUNG_MAIL_VORLAGE = 'InfocenterMailZgvUeberpruefung';
+ const ZGVPRUEFUNG_MAIL_VORLAGE_MASTER = 'InfocenterMailZgvUeberpruefungM';
const INFOCENTER_URI = 'system/infocenter/InfoCenter'; // URL prefix for this controller
+ const ZGV_UEBERPRUEFUNG_URI = 'system/infocenter/ZGVUeberpruefung';
const INDEX_PAGE = 'index';
const FREIGEGEBEN_PAGE = 'freigegeben';
const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert';
const SHOW_DETAILS_PAGE = 'showDetails';
+ const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails';
+ const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung';
const NAVIGATION_PAGE = 'navigation_page';
const ORIGIN_PAGE = 'origin_page';
@@ -63,13 +68,32 @@ class InfoCenter extends Auth_Controller
'name' => 'Note updated',
'message' => 'Note with title %s was updated',
'success' => null
- )
+ ),
+ 'updatezgv' => array(
+ 'logtype' => 'Action',
+ 'name' => 'ZGV pruefung updated',
+ 'message' => 'ZGV with the ID %s was updated to %s',
+ 'success' => null
+ ),
+ 'newzgv' => array(
+ 'logtype' => 'Action',
+ 'name' => 'ZGV pruefung added',
+ 'message' => 'ZGV with the ID %s was added',
+ 'success' => null
+ ),
+ 'updatedoctyp' => array(
+ 'logtype' => 'Action',
+ 'name' => 'Document type updated',
+ 'message' => 'Type of Document %s was updated, set to %s',
+ 'success' => null
+ ),
);
// Name of Interessentenstatus
const INTERESSENTSTATUS = 'Interessent';
const ABGEWIESENERSTATUS = 'Abgewiesener';
const BEWERBERSTATUS = 'Bewerber';
+ const WARTENDER = 'Wartender';
// Statusgruende for which no Studiengangsfreigabemessage should be sent
private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme');
@@ -85,13 +109,18 @@ class InfoCenter extends Auth_Controller
'freigegeben' => 'infocenter:r',
'reihungstestAbsolviert' => 'infocenter:r',
'showDetails' => 'infocenter:r',
+ 'showZGVDetails' => 'lehre/zgvpruefung:r',
'unlockPerson' => 'infocenter:rw',
'saveFormalGeprueft' => 'infocenter:rw',
+ 'saveDocTyp' => 'infocenter:rw',
+ 'saveNachreichung' => 'infocenter:rw',
'getPrestudentData' => 'infocenter:r',
'getLastPrestudentWithZgvJson' => 'infocenter:r',
'getZgvInfoForPrestudent' => 'infocenter:r',
'saveBewPriorisierung' => 'infocenter:rw',
'saveZgvPruefung' => 'infocenter:rw',
+ 'zgvRueckfragen' => 'infocenter:rw',
+ 'zgvStatusUpdate' => 'lehre/zgvpruefung:rw',
'saveAbsage' => 'infocenter:rw',
'saveFreigabe' => 'infocenter:rw',
'getNotiz' => 'infocenter:r',
@@ -99,6 +128,7 @@ class InfoCenter extends Auth_Controller
'updateNotiz' => 'infocenter:rw',
'reloadZgvPruefungen' => 'infocenter:r',
'reloadMessages' => 'infocenter:r',
+ 'reloadDoks' => 'infocenter:r',
'reloadNotizen' => 'infocenter:r',
'reloadLogs' => 'infocenter:r',
'outputAkteContent' => 'infocenter:r',
@@ -108,15 +138,20 @@ class InfoCenter extends Auth_Controller
'setOnHold' => 'infocenter:rw',
'removeOnHold' => 'infocenter:rw',
'getStudienjahrEnd' => 'infocenter:r',
- 'setNavigationMenuArrayJson' => 'infocenter:r'
+ 'setNavigationMenuArrayJson' => 'infocenter:r',
+ 'getAbsageData' => 'infocenter:r',
+ 'saveAbsageForAll' => 'infocenter:rw'
)
);
// Loads models
$this->load->model('crm/Akte_model', 'AkteModel');
+ $this->load->model('crm/Dokument_model', 'DokumentModel');
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
$this->load->model('crm/Statusgrund_model', 'StatusgrundModel');
+ $this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
+ $this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
$this->load->model('person/Notiz_model', 'NotizModel');
$this->load->model('person/Person_model', 'PersonModel');
$this->load->model('system/Message_model', 'MessageModel');
@@ -178,6 +213,59 @@ class InfoCenter extends Auth_Controller
$this->load->view('system/infocenter/infocenterReihungstestAbsolviert.php');
}
+ /**
+ * Prestudenten/ZGV übersicht
+ * Holt sich die Informationen zu den ZGV vom Prestudenten und zeigt die dann an
+ */
+ public function showZGVDetails()
+ {
+ $this->_setNavigationMenuShowDetails(self::SHOW_ZGV_DETAILS_PAGE);
+
+ $prestudent_id = $this->input->get('prestudent_id');
+
+ if (!is_numeric($prestudent_id))
+ show_error('prestudent id is not numeric!');
+
+ $prestudentexists = $this->PrestudentModel->load($prestudent_id);
+
+ if (isError($prestudentexists))
+ show_error(getError($prestudentexists));
+
+ if (!hasData($prestudentexists))
+ show_error('Prestudent does not exist!');
+
+ $zgv = $this->ZGVPruefungStatusModel->getZgvStatusByPrestudent($prestudent_id);
+
+ if (isError($zgv))
+ show_error(getError($zgv));
+
+ if (!hasData($zgv))
+ show_error('ZGV has no status.');
+
+ $persondata = $this->_loadPersonData(getData($prestudentexists)[0]->person_id);
+ $prestudent_id = array('prestudent_id' => $prestudent_id);
+ $status = array('status' => getData($zgv)[0]->status);
+ $prestudent_data = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
+
+ $this->DokumentModel->addOrder('bezeichnung');
+ $dokumentdata = array('dokumententypen' => (getData($this->DokumentModel->load())));
+
+ $data = array_merge(
+ $persondata,
+ $prestudent_id,
+ $status,
+ $dokumentdata,
+ $prestudent_data
+ );
+
+ $origin_page = $this->input->get(self::ORIGIN_PAGE);
+
+ $data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
+ $data[self::ORIGIN_PAGE] = $origin_page;
+ $data[self::PREV_FILTER_ID] = $this->input->get(self::PREV_FILTER_ID);
+
+ $this->load->view('system/infocenter/infocenterZgvDetails.php', $data);
+ }
/**
* Personal details page of the InfoCenter tool
* Initialization function, gets person and prestudent data and loads the view with the data
@@ -211,9 +299,13 @@ class InfoCenter extends Auth_Controller
$persondata = $this->_loadPersonData($person_id);
$prestudentdata = $this->_loadPrestudentData($person_id);
+ $this->DokumentModel->addOrder('bezeichnung');
+ $dokumentdata = array('dokumententypen' => (getData($this->DokumentModel->load())));
+
$data = array_merge(
$persondata,
- $prestudentdata
+ $prestudentdata,
+ $dokumentdata
);
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
@@ -374,12 +466,18 @@ class InfoCenter extends Auth_Controller
$zgvdatum = isEmptyString($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d');
$zgvnation_code = $this->input->post('zgvnation') === 'null' ? null : $this->input->post('zgvnation');
- // zgvmasterdata
- $zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
- $zgvmaort = $this->input->post('zgvmaort');
- $zgvmadatum = $this->input->post('zgvmadatum');
- $zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
- $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
+ $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
+ $prestudentdata = getData($prestudent);
+
+ if ($prestudentdata->studiengangtyp === 'm')
+ {
+ // zgvmasterdata
+ $zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
+ $zgvmaort = $this->input->post('zgvmaort');
+ $zgvmadatum = $this->input->post('zgvmadatum');
+ $zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
+ $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
+ }
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', self::INTERESSENTSTATUS);
@@ -395,19 +493,29 @@ class InfoCenter extends Auth_Controller
);
}
- $prestresult = $this->PrestudentModel->update(
- $prestudent_id,
- array(
- 'zgv_code' => $zgv_code,
- 'zgvort' => $zgvort,
- 'zgvdatum' => $zgvdatum,
- 'zgvnation' => $zgvnation_code,
+ $updateArray = array(
+ 'zgv_code' => $zgv_code,
+ 'zgvort' => $zgvort,
+ 'zgvdatum' => $zgvdatum,
+ 'zgvnation' => $zgvnation_code,
+ 'updateamum' => date('Y-m-d H:i:s')
+ );
+
+ if ($prestudentdata->studiengangtyp === 'm')
+ {
+ $updateMasterArray = array(
'zgvmas_code' => $zgvmas_code,
'zgvmaort' => $zgvmaort,
'zgvmadatum' => $zgvmadatum,
- 'zgvmanation' => $zgvmanation_code,
- 'updateamum' => date('Y-m-d H:i:s')
- )
+ 'zgvmanation' => $zgvmanation_code
+ );
+
+ $updateArray = array_merge($updateArray, $updateMasterArray);
+ }
+
+ $prestresult = $this->PrestudentModel->update(
+ $prestudent_id,
+ $updateArray
);
if (isError($prestresult))
@@ -429,15 +537,195 @@ class InfoCenter extends Auth_Controller
$this->outputJson($json);
}
+ /**
+ * Sendet bei einer neuen ZGV Prüfung die Mail raus an den Studiengang
+ */
+ private function sendZgvMail($mail, $typ){
+ $data = array(
+ 'link' => site_url('system/infocenter/ZGVUeberpruefung')
+ );
+
+ $this->load->helper('hlp_sancho');
+
+ sendSanchoMail(
+ ($typ === 'm' ? self::ZGVPRUEFUNG_MAIL_VORLAGE_MASTER : self::ZGVPRUEFUNG_MAIL_VORLAGE),
+ $data,
+ $mail,
+ 'ZGV Ueberpruefung',
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg'
+ );
+ }
+
+ /**
+ * Der Status von den ZGV wird geupdated
+ */
+ public function zgvStatusUpdate()
+ {
+ $prestudent_id = $this->input->post('prestudent_id');
+ $person_id = $this->input->post('person_id');
+ $status = $this->input->post('status');
+
+ if (isEmptyString($prestudent_id) || isEmptyString($person_id) || isEmptyString($status))
+ $this->terminateWithJsonError('Some data is missing');
+
+ $personInfos = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
+
+ if (!hasData($personInfos))
+ $this->terminateWithJsonError('Person id nicht gefunden');
+
+ $personInfos = getData($personInfos);
+
+ $zgv = $this->ZGVPruefungStatusModel->getZgvStatusByPrestudent($prestudent_id);
+
+ if (!hasData($zgv))
+ $this->terminateWithJsonError('ZGV-Status nicht gefunden');
+
+ $zgv = getData($zgv);
+
+ if ($zgv[0]->status === 'rejected' && $status === 'rejected')
+ $this->terminateWithJsonError('Bereits abgelehnt worden');
+ elseif ($zgv[0]->status === 'accepted' && $status === 'accepted')
+ $this->terminateWithJsonError('Bereits akzeptiert worden');
+
+ $insert = $this->ZGVPruefungStatusModel->insert(
+ array(
+ 'zgvpruefung_id' => $zgv[0]->zgvpruefung_id,
+ 'status' => $status
+ )
+ );
+
+ $update = $this->ZGVPruefungModel->update(
+ $zgv[0]->zgvpruefung_id,
+ array(
+ 'updateamum' => date('Y-m-d H:i:s'),
+ 'updatevon' => $this->_uid
+ )
+ );
+
+ if (isError($insert) || isError($update))
+ $this->terminateWithJsonError('Fehler beim Speichern');
+
+ $allZgvs = $this->ZGVPruefungStatusModel->getOpenZgvByPerson($personInfos->person_id, array('pruefung_stg'));
+ $openZgv = false;
+
+ if (hasData($allZgvs))
+ $openZgv = true;
+
+ $this->_log($person_id, 'updatezgv', array($zgv[0]->zgvpruefung_id, $status));
+
+ $this->outputJsonSuccess(
+ array
+ (
+ 'msg' => 'Erfolgreich gespeichert',
+ 'person_id' => $personInfos->person_id,
+ 'openZgv' => $openZgv
+ )
+ );
+
+ }
+
+ /**
+ * Fügt einen neuen ZGV Status hinzu oder updated einen bestehenden
+ * Falls es erfolgreich war, sendet er die Mail raus
+ */
+ public function zgvRueckfragen()
+ {
+ $prestudent_id = $this->input->post('prestudent_id');
+ $person_id = $this->input->post('person_id');
+
+ if (isEmptyString($prestudent_id) || isEmptyString($person_id))
+ $this->terminateWithJsonError('Prestudentid OR/AND Personid missing');
+
+ $zgv = $this->ZGVPruefungStatusModel->getZgvStatusByPrestudent($prestudent_id);
+
+ $data = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
+ $mail = $data['studiengang_mail'];
+ $typ = $data['studiengang_typ'];
+
+ if (hasData($zgv))
+ {
+ $zgv = getData($zgv);
+
+ if ($zgv[0]->status === 'pruefung_stg')
+ $this->terminateWithJsonError('Bereits in Prüfung');
+
+ $insert = $this->ZGVPruefungStatusModel->insert(
+ array(
+ 'zgvpruefung_id' => $zgv[0]->zgvpruefung_id,
+ 'status' => 'pruefung_stg'
+ )
+ );
+
+ $this->ZGVPruefungModel->update(
+ $zgv[0]->zgvpruefung_id,
+ array(
+ 'updateamum' => date('Y-m-d H:i:s'),
+ 'updatevon' => $this->_uid
+ )
+ );
+
+ $this->_log($person_id, 'updatezgv', array($zgv[0]->zgvpruefung_id, 'pruefung_stg'));
+
+ if (isSuccess($insert))
+ $this->sendZgvMail($mail, $typ);
+ elseif (isError($insert))
+ $this->terminateWithJsonError('Fehler beim Speichern');
+ }else
+ {
+ $insert = $this->ZGVPruefungModel->insert(
+ array(
+ 'prestudent_id' => $prestudent_id,
+ 'insertamum' => date('Y-m-d H:i:s'),
+ 'insertvon' => $this->_uid
+ )
+ );
+
+ if (isSuccess($insert))
+ {
+ $zgvpruefung_id = $this->ZGVPruefungModel->db->insert_id();
+ $result = $this->ZGVPruefungStatusModel->insert(
+ array(
+ 'zgvpruefung_id' => $zgvpruefung_id,
+ 'status' => 'pruefung_stg'
+ )
+ );
+
+ $this->_log($person_id, 'newzgv', array($zgvpruefung_id));
+
+ if (isSuccess($result))
+ $this->sendZgvMail($mail, $typ);
+ elseif (isError($result))
+ $this->terminateWithJsonError('Fehler beim Speichern');
+ }
+ }
+
+ $hold = false;
+ if ($this->personloglib->getOnHoldDate($person_id) !== null)
+ $hold = true;
+
+ $this->outputJsonSuccess(
+ array
+ (
+ 'msg' => 'Erfolgreich gespeichert',
+ 'person_id' => $data['person_id'],
+ 'hold' => $hold
+ )
+ );
+ }
+
/**
* Saves Absage for Prestudent including the reason for the Absage (statusgrund).
* inserts Studiensemester and Ausbildungssemester for the new Absage of (chronologically) last status.
*/
- public function saveAbsage()
+ public function saveAbsage($prestudent_id = null, $statusgrund = null)
{
$json = null;
- $prestudent_id = $this->input->post('prestudent_id');
- $statusgrund = $this->input->post('statusgrund');
+ if (is_null($prestudent_id))
+ $prestudent_id = $this->input->post('prestudent_id');
+
+ if (is_null($statusgrund))
+ $statusgrund = $this->input->post('statusgrund');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
@@ -446,8 +734,10 @@ class InfoCenter extends Auth_Controller
if (hasData($lastStatus) && hasData($statusgrresult))
{
- //check if still Interessent and not freigegeben yet
- if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS && !isset($lastStatus->retval[0]->bestaetigtam))
+ //check if still Interessent
+ if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS
+ || $lastStatus->retval[0]->status_kurzbz === self::BEWERBERSTATUS
+ || $lastStatus->retval[0]->status_kurzbz === self::WARTENDER)
{
$result = $this->PrestudentstatusModel->insert(
array(
@@ -744,6 +1034,13 @@ class InfoCenter extends Auth_Controller
$this->load->view('system/infocenter/logs.php', array('logs' => $logs));
}
+ public function reloadDoks($person_id)
+ {
+ $dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true);
+
+ $this->load->view('system/infocenter/dokNachzureichend.php', array('dokumente_nachgereicht' => $dokumente_nachgereicht->retval));
+ }
+
/**
* Outputs content of an Akte, sends appropriate headers (so the document can be downloaded)
* @param $akte_id
@@ -898,6 +1195,117 @@ class InfoCenter extends Auth_Controller
$this->outputJsonSuccess('success');
}
+ public function saveDocTyp($person_id)
+ {
+ $akte_id = $this->input->post('akte_id');
+ $typ = $this->input->post('typ');
+
+ if (!isset($akte_id) || !isset($typ) || !isset($person_id))
+ $this->terminateWithJsonError("Nicht alle sind Parameter übergeben worden");
+
+ $akte = $this->AkteModel->load($akte_id);
+
+ if (!hasData($akte))
+ $this->terminateWithJsonError("Fehler beim Laden der Akte");
+
+ $result = $this->AkteModel->update($akte_id, array('dokument_kurzbz' => $typ));
+
+ if (!isSuccess($result))
+ $this->terminateWithJsonError("Fehler beim Update aufgetreten");
+
+ $dokument = $this->DokumentModel->load($akte->retval[0]->dokument_kurzbz);
+
+ if (!hasData($dokument))
+ $this->terminateWithJsonError("Fehler beim Laden des Dokumententypes");
+
+ $this->_log(
+ $person_id,
+ 'updatedoctyp',
+ array(
+ isEmptyString($akte->retval[0]->titel) ? $akte->retval[0]->bezeichnung : $akte->retval[0]->titel,
+ isEmptyString($dokument->retval[0]->bezeichnung) ? $dokument->retval[0]->dokument_kurbz : $dokument->retval[0]->bezeichnung
+ )
+ );
+
+ $this->outputJsonSuccess('success');
+ }
+
+ public function saveNachreichung($person_id)
+ {
+ $nachreichungAm = $this->input->post('nachreichungAm');
+ $nachreichungAnmerkung = empty($this->input->post('nachreichungAnmerkung')) ? NULL : $this->input->post('nachreichungAnmerkung');
+ $typ = $this->input->post('typ');
+
+ $allowedTypes = [
+ 'VorlSpB2' => 'SprachB2',
+ 'ZgvBaPre' => 'zgv_bakk',
+ 'ZgvMaPre' => 'zgv_mast'
+ ];
+
+ if (!in_array($typ, array_keys($allowedTypes)))
+ $this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
+
+ if (empty($nachreichungAm))
+ $this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
+
+ if (!preg_match('/^\d{2}\.\d{2}\.(\d{2}|\d{4})$/ ', $nachreichungAm))
+ {
+ $this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
+ }
+ else
+ {
+ $ds = explode('.', $nachreichungAm);
+ if (! checkdate($ds[1], $ds[0], $ds[2]))
+ {
+ $this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
+ }
+ }
+
+ $nachreichungAm = (date_format(date_create($nachreichungAm), 'Y-m-d'));
+
+ $today = date('Y-m-d H:i:s');
+
+ if($nachreichungAm < $today)
+ $this->terminateWithJsonError($this->p->t('infocenter', 'nachreichDatumNichtVergangenheit'));
+
+
+ $akte = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'dokument_kurzbz' => $allowedTypes[$typ]));
+
+ if (hasData($akte)) {
+ $akte = getData($akte)[0];
+ $this->AkteModel->update(
+ $akte->akte_id,
+ array(
+ 'anmerkung' => $nachreichungAnmerkung,
+ 'updateamum' => $today,
+ 'updatevon' => get_uid(),
+ 'nachgereicht' => true,
+ 'nachgereicht_am' => $nachreichungAm
+ )
+ );
+ }
+ else
+ {
+ $this->AkteModel->insert(
+ array(
+ 'dokument_kurzbz' => $allowedTypes[$typ],
+ 'person_id' => $person_id,
+ 'erstelltam' => NULL,
+ 'gedruckt' => false,
+ 'anmerkung' => $nachreichungAnmerkung,
+ 'updateamum' => $today,
+ 'updatevon' => get_uid(),
+ 'insertamum' => $today,
+ 'insertvon' => get_uid(),
+ 'uid' => NULL,
+ 'nachgereicht' => true,
+ 'nachgereicht_am' => $nachreichungAm
+ )
+ );
+ }
+
+ $this->outputJsonSuccess("Done!");
+ }
// -----------------------------------------------------------------------------------------------------------------
// Private methods
@@ -1058,9 +1466,9 @@ class InfoCenter extends Auth_Controller
/**
* Define the navigation menu for the showDetails page
*/
- private function _setNavigationMenuShowDetails()
+ private function _setNavigationMenuShowDetails($page = self::SHOW_DETAILS_PAGE)
{
- $this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.self::SHOW_DETAILS_PAGE));
+ $this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.$page));
$origin_page = $this->input->get(self::ORIGIN_PAGE);
@@ -1073,6 +1481,8 @@ class InfoCenter extends Auth_Controller
{
$link = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
}
+ if ($origin_page === self::ZGV_UBERPRUEFUNG_PAGE)
+ $link = site_url(self::ZGV_UEBERPRUEFUNG_URI);
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
@@ -1358,6 +1768,8 @@ class InfoCenter extends Auth_Controller
|| isset($zgvpruefung->prestudentstatus->bestaetigtam)
|| $zgvpruefung->prestudentstatus->status_kurzbz != self::INTERESSENTSTATUS;
+ $zgvpruefung->abgewiesener = $zgvpruefung->prestudentstatus->status_kurzbz === self::ABGEWIESENERSTATUS;
+
//wether prestudent was freigegeben for RT/Stg
$zgvpruefung->isRtFreigegeben = false;
$zgvpruefung->isStgFreigegeben = false;
@@ -1421,14 +1833,26 @@ class InfoCenter extends Auth_Controller
$zgvpruefung->changedown = $this->PrestudentModel->checkPrioChange($zgvpruefung->prestudent_id, $studiensemester, 1);
}
}
+ $zgvExist = $this->ZGVPruefungModel->loadWhere(array('prestudent_id' => $zgvpruefung->prestudent_id));
- $zgvpruefungen[] = $zgvpruefung;
+ if (isSuccess($zgvExist) && hasData($zgvExist))
+ {
+ $this->ZGVPruefungStatusModel->addOrder('datum', 'DESC');
+ $this->ZGVPruefungStatusModel->addLimit(1);
+
+ $statusZGV = $this->ZGVPruefungStatusModel->loadWhere(array('zgvpruefung_id' => $zgvExist->retval[0]->zgvpruefung_id));
+
+ if (isSuccess($statusZGV) && hasData($statusZGV))
+ $zgvpruefung->statusZGV = $statusZGV->retval[0]->status;
+ }
+
+ $zgvpruefungen[] = $zgvpruefung;
}
$this->_sortPrestudents($zgvpruefungen);
- $abwstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::ABGEWIESENERSTATUS))->retval;
- $intstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::INTERESSENTSTATUS))->retval;
+ $abwstatusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
+ $intstatusgruende = $this->StatusgrundModel->getStatus(self::INTERESSENTSTATUS)->retval;
$data = array (
'zgvpruefungen' => $zgvpruefungen,
@@ -1545,8 +1969,10 @@ class InfoCenter extends Auth_Controller
$person_id = $prestudentdata->person_id;
$studiengang_kurzbz = $prestudentdata->studiengang;
$studiengang_bezeichnung = $prestudentdata->studiengangbezeichnung;
+ $studiengang_mail = $prestudentdata->studiengangmail;
+ $studiengang_typ = $prestudentdata->studiengangtyp;
- return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz, 'studiengang_bezeichnung' => $studiengang_bezeichnung);
+ return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz, 'studiengang_bezeichnung' => $studiengang_bezeichnung, 'studiengang_mail' => $studiengang_mail, 'studiengang_typ' => $studiengang_typ);
}
/**
@@ -1687,4 +2113,45 @@ class InfoCenter extends Auth_Controller
$this->loglib->logError('Studiengang has no mail for sending Freigabe mail');
}
}
+
+ public function getAbsageData()
+ {
+ $this->load->model('organisation/Studiengang_model', 'StudiengangModel');
+
+ $statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
+ $studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
+ $studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(['b', 'm'], $studienSemester);
+
+ $data = array (
+ 'statusgruende' => $statusgruende,
+ 'studiengaenge' => $studiengaenge->retval
+ );
+
+ $this->outputJsonSuccess($data);
+ }
+
+ public function saveAbsageForAll()
+ {
+ $statusgrund = $this->input->post('statusgrund');
+ $studiengang = $this->input->post('studiengang');
+ $personen = $this->input->post('personen');
+ $studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
+
+ if ($statusgrund === 'null' || $studiengang === 'null' || empty($personen))
+ $this->terminateWithJsonError("Bitte Statusgrund, Studiengang und Personen auswählen.");
+
+ foreach($personen as $person)
+ {
+ $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester);
+
+ if(!hasData($prestudent))
+ continue;
+
+ $prestudentData = getData($prestudent);
+
+ $this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund);
+ }
+
+ $this->outputJsonSuccess("Success");
+ }
}
diff --git a/application/controllers/system/infocenter/ZGVUeberpruefung.php b/application/controllers/system/infocenter/ZGVUeberpruefung.php
new file mode 100644
index 000000000..bb0c36b66
--- /dev/null
+++ b/application/controllers/system/infocenter/ZGVUeberpruefung.php
@@ -0,0 +1,55 @@
+ 'lehre/zgvpruefung:r',
+ 'getZgvStatusByPrestudent' => 'lehre/zgvpruefung:r'
+ )
+ );
+ $this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
+ $this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
+
+ $this->load->library('WidgetLib');
+
+ $this->setControllerId();
+ $this->loadPhrases(
+ array(
+ 'infocenter'
+ )
+ );
+ }
+
+ public function index()
+ {
+ $this->load->view('system/infocenter/infocenterZgvUeberpruefung.php');
+ }
+
+ public function getZgvStatusByPrestudent()
+ {
+ $prestudent_id = $this->input->get('prestudent_id');
+
+ $zgvExist = $this->ZGVPruefungModel->loadWhere(array('prestudent_id' => $prestudent_id));
+
+ if (!hasData($zgvExist))
+ $this->terminateWithJsonError('no ZGV exist');
+
+ $status = $this->ZGVPruefungStatusModel->getZgvStatus(getData($zgvExist)[0]->zgvpruefung_id);
+
+ if (!hasData($status))
+ $this->terminateWithJsonError('No status');
+
+ $status = getData($status)[0]->status;
+
+ $this->outputJsonSuccess($status);
+ }
+}
\ No newline at end of file
diff --git a/application/libraries/LDAPLib.php b/application/libraries/LDAPLib.php
index 57c8902b5..195dddc88 100644
--- a/application/libraries/LDAPLib.php
+++ b/application/libraries/LDAPLib.php
@@ -167,7 +167,7 @@ class LDAPLib
}
// LDAP connection
- $ldapConnection = @ldap_connect($ldapConfigs[self::SERVER], $ldapConfigs[self::PORT]);
+ $ldapConnection = @ldap_connect($ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]);
if ($ldapConnection) // if success
{
// Sets the LDAP protocol version
@@ -220,7 +220,9 @@ class LDAPLib
}
else // Connection error
{
- return error(ldap_error($ldapConnection));
+ return error(
+ 'An error occurred while connecting to the LDAP server: '.$ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]
+ );
}
}
}
diff --git a/application/libraries/VariableLib.php b/application/libraries/VariableLib.php
index 2f038531b..a503eb999 100644
--- a/application/libraries/VariableLib.php
+++ b/application/libraries/VariableLib.php
@@ -100,6 +100,18 @@ class VariableLib
return $result;
}
+ public function changeStudengangsTypVar($uid, $name, $change)
+ {
+ $result = error('error when setting variable!');
+
+ if (isEmptyString($uid) || isEmptyString($name) || isEmptyString($change))
+ return $result;
+
+ $result = $this->_ci->VariableModel->setVariable($uid, $name, $change);
+ $this->_setVariable($uid, $name);
+ return $result;
+ }
+
/**
* "Refreshes" variable value with given name by retrieving current value from db and saving it.
* @param $uid
diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php
index 9ffd12cf6..4975af382 100644
--- a/application/models/CL/Messages_model.php
+++ b/application/models/CL/Messages_model.php
@@ -612,9 +612,9 @@ class Messages_model extends CI_Model
if (!isEmptyString($vorlage_kurzbz))
{
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
- $this->VorlagestudiengangModel->addOrder('version','DESC');
+ $this->VorlagestudiengangModel->addOrder('version', 'DESC');
- $getVorlage = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
+ $getVorlage = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz, 'aktiv' => true));
}
return $getVorlage;
diff --git a/application/models/codex/Bisioaufenthaltfoerderung_model.php b/application/models/codex/Bisioaufenthaltfoerderung_model.php
new file mode 100644
index 000000000..7a817d67c
--- /dev/null
+++ b/application/models/codex/Bisioaufenthaltfoerderung_model.php
@@ -0,0 +1,15 @@
+dbTable = 'bis.tbl_bisio_aufenthaltfoerderung';
+ $this->pk = array('bisio_id', 'aufenthaltfoerderung_code');
+ $this->hasSequence = false;
+ }
+}
diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php
index 2e014800c..52ba4d9f3 100644
--- a/application/models/crm/Prestudent_model.php
+++ b/application/models/crm/Prestudent_model.php
@@ -581,4 +581,19 @@ class Prestudent_model extends DB_Model
return $this->execQuery($query, array($person_id));
}
+
+ public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester)
+ {
+ $query = "SELECT ps.prestudent_id
+ FROM public.tbl_prestudentstatus pss
+ JOIN public.tbl_prestudent ps USING(prestudent_id)
+ JOIN public.tbl_studiengang sg USING(studiengang_kz)
+ JOIN lehre.tbl_studienplan sp USING(studienplan_id)
+ WHERE ps.person_id = ?
+ AND UPPER((sg.typ || sg.kurzbz) || ':' || sp.orgform_kurzbz) = ?
+ AND pss.studiensemester_kurzbz = ?
+ ";
+
+ return $this->execQuery($query, array($person, $studiengang, $studienSemester));
+ }
}
diff --git a/application/models/crm/Statusgrund_model.php b/application/models/crm/Statusgrund_model.php
index 4717a7571..7ab17a45b 100644
--- a/application/models/crm/Statusgrund_model.php
+++ b/application/models/crm/Statusgrund_model.php
@@ -11,4 +11,18 @@ class Statusgrund_model extends DB_Model
$this->dbTable = "public.tbl_status_grund";
$this->pk = "statusgrund_id";
}
+
+ public function getStatus($status_kurzbz = null, $aktiv = null)
+ {
+ $this->addOrder('bezeichnung_mehrsprachig');
+ $where = array();
+ if (!is_null($status_kurzbz))
+ $where['status_kurzbz'] = $status_kurzbz;
+ if (!is_null($aktiv))
+ $where['aktiv'] = $aktiv;
+
+ $status = $this->loadWhere($where);
+
+ return success($status->retval);
+ }
}
diff --git a/application/models/crm/ZGVPruefungStatus_model.php b/application/models/crm/ZGVPruefungStatus_model.php
new file mode 100644
index 000000000..5c51e45d8
--- /dev/null
+++ b/application/models/crm/ZGVPruefungStatus_model.php
@@ -0,0 +1,50 @@
+dbTable = 'public.tbl_zgvpruefungstatus_status';
+ $this->pk = 'zgv_pruefung_status_id';
+ $this->hasSequence = true;
+ }
+
+ public function getZgvStatus($zgvpruefung_id)
+ {
+ $this->addOrder('datum', 'DESC');
+ $this->addLimit(1);
+
+ return $this->loadWhere(array('zgvpruefung_id' => $zgvpruefung_id));
+ }
+
+ public function getZgvStatusByPrestudent($prestudent_id)
+ {
+ $this->addJoin('public.tbl_zgvpruefung', 'zgvpruefung_id');
+ $this->addOrder($this->dbTable . '.datum', 'DESC');
+ $this->addLimit(1);
+ return $this->loadWhere(array('prestudent_id' => $prestudent_id));
+ }
+
+ public function getOpenZgvByPerson($person_id, $status)
+ {
+ $query = 'SELECT status.zgvpruefung_id, status.datum, status.status
+ FROM public.tbl_zgvpruefungstatus_status status
+ INNER JOIN
+ (
+ SELECT zgvpruefung_id, max(datum) as MaxDate
+ FROM public.tbl_zgvpruefungstatus_status
+ GROUP BY zgvpruefung_id
+ ) sub ON status.zgvpruefung_id = sub.zgvpruefung_id AND status.datum = sub.MaxDate
+ JOIN public.tbl_zgvpruefung ON status.zgvpruefung_id = public.tbl_zgvpruefung.zgvpruefung_id
+ JOIN public.tbl_prestudent USING (prestudent_id)
+ WHERE person_id = ?
+ AND status.status IN ?';
+
+ return $this->execQuery($query, array($person_id, $status));
+ }
+}
\ No newline at end of file
diff --git a/application/models/crm/ZGVPruefung_model.php b/application/models/crm/ZGVPruefung_model.php
new file mode 100644
index 000000000..f8fd0a9ad
--- /dev/null
+++ b/application/models/crm/ZGVPruefung_model.php
@@ -0,0 +1,17 @@
+dbTable = 'public.tbl_zgvpruefung';
+ $this->pk = 'zgvpruefung_id';
+ $this->hasSequence = true;
+ }
+
+}
\ No newline at end of file
diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php
index 746e4c052..4da88e344 100644
--- a/application/models/education/Projektbetreuer_model.php
+++ b/application/models/education/Projektbetreuer_model.php
@@ -41,4 +41,23 @@ class Projektbetreuer_model extends DB_Model
return error ('Incorrect parameter type');
}
}
+
+ /**
+ * Get Projektbetreuer data by authentification token
+ * @param $zugangstoken
+ * @return object
+ */
+ public function getBetreuerByToken($zugangstoken)
+ {
+ $qry = '
+ SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid
+ FROM lehre.tbl_projektbetreuer
+ JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
+ WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW()
+ ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC
+ LIMIT 1
+ ';
+
+ return $this->execQuery($qry, array($zugangstoken));
+ }
}
diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php
index 8b8be0366..41bdabd11 100644
--- a/application/models/organisation/Studiengang_model.php
+++ b/application/models/organisation/Studiengang_model.php
@@ -481,4 +481,18 @@ class Studiengang_model extends DB_Model
return $this->loadWhere($condition);
}
+
+ public function getStudiengaengeWithOrgForm($typ, $semester)
+ {
+ $query = "SELECT DISTINCT (UPPER(sg.typ || sg.kurzbz || ':' || sp.orgform_kurzbz)) AS Studiengang
+ FROM public.tbl_studiengang sg
+ JOIN lehre.tbl_studienordnung USING (studiengang_kz)
+ JOIN lehre.tbl_studienplan sp USING (studienordnung_id)
+ JOIN lehre.tbl_studienplan_semester spsem USING (studienplan_id)
+ WHERE sp.aktiv = TRUE AND sg.aktiv = TRUE AND sg.typ IN ?
+ AND spsem.studiensemester_kurzbz = ?
+ ORDER BY Studiengang";
+
+ return $this->execQuery($query, array($typ, $semester));
+ }
}
diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php
index c1e76ce38..eff1329a6 100644
--- a/application/models/person/Benutzer_model.php
+++ b/application/models/person/Benutzer_model.php
@@ -13,6 +13,11 @@ class Benutzer_model extends DB_Model
$this->hasSequence = false;
}
+ /**
+ * Gets active Benutzer from person_id
+ * @param $person_id
+ * @return object
+ */
public function getFromPersonId($person_id)
{
return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true));
diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php
index 2e09875d8..fd08cc384 100644
--- a/application/models/person/Notiz_model.php
+++ b/application/models/person/Notiz_model.php
@@ -154,9 +154,11 @@ class Notiz_model extends DB_Model
{
// Join with the table public.tbl_notizzuordnung using notiz_id
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
- $this->addOrder('insertamum', 'DESC');
+ $this->addJoin('public.tbl_prestudent', 'prestudent_id', 'LEFT');
+ $this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
+ $this->addOrder('public.tbl_notiz.insertamum', 'DESC');
- return $this->loadWhere(array('person_id' => $person_id, 'titel LIKE' => $titel));
+ return $this->loadWhere(array('public.tbl_notizzuordnung.person_id' => $person_id, 'titel LIKE' => $titel));
}
/**
diff --git a/application/models/system/Variablenname_model.php b/application/models/system/Variablenname_model.php
index 7b2a2cf88..869a03275 100644
--- a/application/models/system/Variablenname_model.php
+++ b/application/models/system/Variablenname_model.php
@@ -11,7 +11,8 @@ class Variablenname_model extends DB_Model
ORDER BY studienjahr_kurzbz, start
) sem
WHERE start > now()
- LIMIT 1;'
+ LIMIT 1;',
+ 'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1'
);
/**
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
index e87f0945c..521883452 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
@@ -189,7 +189,7 @@ $this->load->view(
-
+
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
index f09eb62a0..92c896ce7 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
@@ -32,7 +32,7 @@ SELECT
erteilt,
akzeptiert,
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -48,7 +48,7 @@ SELECT
)
) AS "bestellt_von",
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -64,7 +64,7 @@ SELECT
)
) AS "erteilt_von",
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -241,7 +241,7 @@ FROM
\'Betreuung\' AS "typ",
(betreuerart_kurzbz || \' \' ||
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
PUBLIC.tbl_person
JOIN PUBLIC.tbl_benutzer USING (person_id)
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
index 88b3eabd0..7c9669ae3 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
@@ -34,7 +34,7 @@ SELECT
erteilt,
akzeptiert,
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -50,7 +50,7 @@ SELECT
)
) AS "bestellt_von",
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -66,7 +66,7 @@ SELECT
)
) AS "erteilt_von",
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -128,7 +128,7 @@ FROM
(
SELECT
/* lehrauftraege also planned with dummies, therefore personalnummer is needed */
- ma.personalnummer,
+ (ma.personalnummer::text),
lema.lehreinheit_id,
lv.lehrveranstaltung_id,
lv.bezeichnung AS "lv_bezeichnung",
@@ -240,7 +240,7 @@ FROM
pa.lehreinheit_id,
lv.lehrveranstaltung_id,
lv.bezeichnung AS "lv_bezeichnung",
- pa.projektarbeit_id AS "projektarbeit_id",
+ (pa.projektarbeit_id::text) AS "projektarbeit_id",
le.studiensemester_kurzbz,
stg.studiengang_kz,
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
@@ -249,7 +249,7 @@ FROM
\'Betreuung\' AS "typ",
(betreuerart_kurzbz || \' \' ||
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
PUBLIC.tbl_person
JOIN PUBLIC.tbl_benutzer USING (person_id)
@@ -268,7 +268,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
- (nachname || \' \' || vorname) AS "lektor",
+ (vorname || \' \' || nachname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
vertrag_id,
diff --git a/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php b/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php
index 54948fb26..a3efb66b3 100644
--- a/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/cancelledLehrauftragData.php
@@ -14,7 +14,7 @@ $query = '
datum AS "storniert",
(
SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftragData.php b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
index aea7d5181..1ccfc55a4 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
@@ -65,7 +65,7 @@ SELECT
erteilt,
akzeptiert,
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -81,7 +81,7 @@ SELECT
)
) AS "bestellt_von",
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -97,7 +97,7 @@ SELECT
)
) AS "erteilt_von",
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
public.tbl_person
JOIN public.tbl_benutzer benutzer USING (person_id)
@@ -281,7 +281,7 @@ FROM
\'Betreuung\' AS "typ",
(betreuerart_kurzbz || \' \' ||
(SELECT
- vorname || \' \' || nachname
+ nachname || \' \' || vorname
FROM
PUBLIC.tbl_person
JOIN PUBLIC.tbl_benutzer USING (person_id)
diff --git a/application/views/lehre/pruefungsprotokollUebersicht.php b/application/views/lehre/pruefungsprotokollUebersicht.php
index 35bea7963..c7de8fcd0 100644
--- a/application/views/lehre/pruefungsprotokollUebersicht.php
+++ b/application/views/lehre/pruefungsprotokollUebersicht.php
@@ -48,6 +48,8 @@
name="period" value="today">p->t('ui','heute'); ?>
+
diff --git a/application/views/lehre/pruefungsprotokollUebersichtData.php b/application/views/lehre/pruefungsprotokollUebersichtData.php
index dd247c2eb..ff2caa774 100644
--- a/application/views/lehre/pruefungsprotokollUebersichtData.php
+++ b/application/views/lehre/pruefungsprotokollUebersichtData.php
@@ -19,9 +19,10 @@ FROM
WHERE
vorsitz='".$UID."'
AND (
- '". $PERIOD. "' = 'today' AND datum = NOW()::date OR
- '". $PERIOD. "' = 'lastWeek' AND datum = (NOW() - interval '1 week')::date OR
- '". $PERIOD. "' = 'all' AND datum >= '2020-05-27'
+ ('". $PERIOD. "' = 'today' AND datum = NOW()::date) OR
+ ('". $PERIOD. "' = 'lastWeek' AND datum >= (NOW() - interval '1 week')::date AND datum < NOW()::date) OR
+ ('". $PERIOD. "' = 'upcoming' AND datum > NOW()::date) OR
+ ('". $PERIOD. "' = 'all' AND datum >= '2020-05-27')
)
ORDER BY datum, nachname, vorname
";
diff --git a/application/views/system/infocenter/absageModal.php b/application/views/system/infocenter/absageModal.php
new file mode 100644
index 000000000..00298945e
--- /dev/null
+++ b/application/views/system/infocenter/absageModal.php
@@ -0,0 +1,35 @@
+
+
+
+
+
+
p->t('infocenter', 'absageBestaetigen') ?>
+
+
+ p->t('infocenter', 'absageBestaetigenTxt') ?>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/views/system/infocenter/anmerkungenZurBewerbung.php b/application/views/system/infocenter/anmerkungenZurBewerbung.php
index 85682d2a4..508f041de 100644
--- a/application/views/system/infocenter/anmerkungenZurBewerbung.php
+++ b/application/views/system/infocenter/anmerkungenZurBewerbung.php
@@ -15,6 +15,7 @@
insertamum), 'd.m.Y H:i:s') ?>
+
\ No newline at end of file
diff --git a/application/views/system/infocenter/dokpruefung.php b/application/views/system/infocenter/dokpruefung.php
index 7c431fc46..95e383569 100644
--- a/application/views/system/infocenter/dokpruefung.php
+++ b/application/views/system/infocenter/dokpruefung.php
@@ -6,7 +6,10 @@