This commit is contained in:
Paolo
2018-02-27 18:37:51 +01:00
24 changed files with 1259 additions and 542 deletions
@@ -69,7 +69,6 @@ class InfoCenter extends VileSci_Controller
// Loads libraries
$this->load->library('DmsLib');
$this->load->library('PersonLogLib');
$this->load->library('MailLib');
$this->load->library('WidgetLib');
$this->_setAuthUID(); // sets property uid
@@ -195,6 +194,26 @@ class InfoCenter extends VileSci_Controller
redirect(self::URL_PREFIX.'/showDetails/'.$person_id.'#DokPruef');
}
/**
* Gets prestudent that was last modified in json format, for ZGV übernehmen
* @param $person_id
*/
public function getLastPrestudentWithZgvJson($person_id)
{
$prestudent = $this->PrestudentModel->getLastPrestudent($person_id, true);
if (isError($prestudent))
{
show_error($prestudent->retval);
}
$jsonoutput = count($prestudent->retval) > 0 ? $prestudent->retval[0] : null;
$this->output
->set_content_type('application/json')
->set_output(json_encode($jsonoutput));
}
/**
* Saves a zgv for a prestudent. includes Ort, Datum, Nation for bachelor and master.
* @param $prestudent_id
@@ -226,7 +245,8 @@ class InfoCenter extends VileSci_Controller
'zgvmas_code' => $zgvmas_code,
'zgvmaort' => $zgvmaort,
'zgvmadatum' => $zgvmadatum,
'zgvmanation' => $zgvmanation_code
'zgvmanation' => $zgvmanation_code,
'updateamum' => date('Y-m-d H:i:s')
)
);
@@ -250,7 +270,6 @@ class InfoCenter extends VileSci_Controller
*/
public function saveAbsage($prestudent_id)
{
//TODO email messaging
$statusgrund = $this->input->post('statusgrund');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
@@ -336,6 +355,8 @@ class InfoCenter extends VileSci_Controller
show_error($result->retval);
}
$this->_sendFreigabeMail($prestudent_id);
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->_log($logdata['person_id'], 'freigegeben', array($prestudent_id, $logdata['studiengang_kurzbz']));
@@ -652,15 +673,18 @@ class InfoCenter extends VileSci_Controller
$zgvpruefungen[] = $zgvpruefung;
}
// Interessenten come first
usort($zgvpruefungen, function ($a, $b)
{
// Interessenten come first, otherwise by bewerbungsdatum desc, then by prestudent_id desc
usort($zgvpruefungen, function ($a, $b) {
$bewdatesort = strcmp($b->prestudentstatus->bewerbung_abgeschicktamum, $a->prestudentstatus->bewerbung_abgeschicktamum);
$defaultsort = $bewdatesort === 0 ? (int)$b->prestudent_id - (int)$a->prestudent_id : $bewdatesort;
if (!isset($a->prestudentstatus->status_kurzbz) || !isset($b->prestudentstatus->status_kurzbz))
return 0;
return $defaultsort;
elseif ($a->prestudentstatus->status_kurzbz === 'Interessent' && $b->prestudentstatus->status_kurzbz === 'Interessent')
{
//infoonly Interessenten come after new Interessenten
if ($a->infoonly)
if ($a->infoonly === $b->infoonly)
return $defaultsort;
elseif ($a->infoonly)
return 1;
elseif ($b->infoonly)
return -1;
@@ -670,7 +694,7 @@ class InfoCenter extends VileSci_Controller
elseif ($b->prestudentstatus->status_kurzbz === 'Interessent')
return 1;
else
return 0;
return $defaultsort;
});
$statusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Abgewiesener'))->retval;
@@ -741,9 +765,86 @@ class InfoCenter extends VileSci_Controller
$this->uid
);
}
/*
private function _sendFreigabeMail()
/**
* Sends infomail with prestudent and person data when Prestudent is freigegeben
* @param $prestudent_id
*/
private function _sendFreigabeMail($prestudent_id)
{
$this->maillib->send('alex@alex-ThinkCentre-M900', 'karpen_ko@hotmail.com', 'test', 'test');
}*/
//get data
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id)->retval[0];
$prestudentstatus = $prestudent->prestudentstatus;
$person_id = $prestudent->person_id;
$person = $this->PersonModel->getPersonStammdaten($person_id, true)->retval;
//fill mail variables
$interessentbez = $person->geschlecht == 'm' ? 'Ein Interessent' : 'Eine Interessentin';
$sprache = $prestudentstatus->sprachedetails->bezeichnung[0];
$orgform = $prestudentstatus->orgform != '' ? ' ('.$prestudentstatus->orgform.')' : '';
$geschlecht = $person->geschlecht == 'm' ? 'männlich' : 'weiblich';
$geburtsdatum = date('d.m.Y', strtotime($person->gebdatum));
$notizenBewerbung = $this->NotizModel->getNotizByTitel($person_id, 'Anmerkung zur Bewerbung')->retval;
$notizentext = '';
$lastElement = end($notizenBewerbung);
foreach ($notizenBewerbung as $notiz)
{
$notizentext .= $notiz->text;
if ($notiz != $lastElement)
$notizentext .= ' | ';
}
$mailadresse = '';
foreach ($person->kontakte as $kontakt)
{
if ($kontakt->kontakttyp === 'email')
{
$mailadresse = $kontakt->kontakt;
break;
}
}
$data = array
(
'interessentbez' => $interessentbez,
'studiengangbez' => $prestudent->studiengangbezeichnung,
'studiengangtypbez' => $prestudent->studiengangtyp_bez,
'orgform' => $orgform,
'studiensemester' => $prestudentstatus->studiensemester_kurzbz,
'sprache' => $sprache,
'geschlecht' => $geschlecht,
'vorname' => $person->vorname,
'nachname' => $person->nachname,
'gebdatum' => $geburtsdatum,
'mailadresse' => $mailadresse,
'prestudentid' => $prestudent_id,
'notizentext' => $notizentext
);
$this->load->library('parser');
$this->load->library('MailLib');
$this->load->library('LogLib');
//parse freigabe html email template, wordwrap wraps text so no display errors
$email = wordwrap($this->parser->parse('templates/mailtemplates/interessentFreigabe', $data, true), 70);
$subject = ($person->geschlecht == 'm' ? 'Interessent ' : 'Interessentin ').$person->vorname.' '.$person->nachname.' freigegeben';
$receiver = $prestudent->studiengangmail;
if (!empty($receiver))
{
//Freigabeinformationmail sent from default system mail to studiengang mail(s)
$sent = $this->maillib->send('', $receiver, $subject, $email);
if (!$sent)
$this->loglib->logError('Error when sending Freigabe mail');
}
else
{
$this->loglib->logError('Studiengang has no mail for sending Freigabe mail');
}
}
}
+1 -1
View File
@@ -640,7 +640,7 @@ class MessageLib
}
// Using a template for the plain text email body
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
$vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT');
if(hasData($vorlage))
{
$altBody = $this->ci->parser->parse_string(
+31 -6
View File
@@ -201,10 +201,12 @@ class Prestudent_model extends DB_Model
*/
public function getPrestudentWithZgv($prestudent_id)
{
$this->addSelect('tbl_prestudent.*, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish, tbl_studiengang.typ as studiengangtyp,
tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvort, tbl_prestudent.zgvdatum, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez,
tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmaort, tbl_prestudent.zgvmadatum, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez');
$this->addSelect('tbl_prestudent.*, tbl_studiengang.studiengang_kz, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish,
tbl_studiengang.email as studiengangmail, tbl_studiengang.typ as studiengangtyp, tbl_studiengangstyp.bezeichnung as studiengangtyp_bez,
tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez,
tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez');
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
$this->addJoin('public.tbl_studiengangstyp', 'typ', 'LEFT');
$this->addJoin('bis.tbl_zgv', 'zgv_code', 'LEFT');
$this->addJoin('bis.tbl_zgvmaster', 'zgvmas_code', 'LEFT');
$this->addJoin('bis.tbl_nation zgvnat', 'zgvnation = zgvnat.nation_code', 'LEFT');
@@ -223,13 +225,13 @@ class Prestudent_model extends DB_Model
return error($lastStatus->retval);
}
if(count($lastStatus->retval) > 0)
if (count($lastStatus->retval) > 0)
{
$this->load->model('system/sprache_model', 'SpracheModel');
$language = $this->SpracheModel->load($lastStatus->retval[0]->sprache);
if($language->error)
if ($language->error)
return error($language->retval);
if(count($language->retval) > 0)
if (count($language->retval) > 0)
$lastStatus->retval[0]->sprachedetails = $language->retval[0];
$prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0];
}
@@ -237,4 +239,27 @@ class Prestudent_model extends DB_Model
return success($prestudent->retval);
}
/**
* gets the prestudent edited last.
* if no updateamum, sort by insertamum
* @param $person_id
* @param bool $withzgv if true, only prestudenten with zgv_code are taken
* @return array|null
*/
public function getLastPrestudent($person_id, $withzgv = false)
{
$qry = 'SELECT * FROM public.tbl_prestudent
WHERE person_id = ?
%s
ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST
LIMIT 1';
$zgvwhere = $withzgv === true ? 'AND zgv_code IS NOT NULL' : '';
$qry = sprintf($qry, $zgvwhere);
$parametersArray = array($person_id);
return $this->execQuery($qry, $parametersArray);
}
}
+13
View File
@@ -144,6 +144,19 @@ class Notiz_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id));
}
/**
* gets all Notizen for a person with a specific title
* @param $person_id
* @param $titel
*/
public function getNotizByTitel($person_id, $titel)
{
// Join with the table public.tbl_notizzuordnung using notiz_id
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
return $this->loadWhere(array('person_id' => $person_id, 'titel' => $titel));
}
// ------------------------------------------------------------------------------------------------------
}
@@ -64,9 +64,23 @@
AND tbl_studiengang.typ in(\'b\')
LIMIT 1
) AS "AnzahlAbgeschickt",
array_to_string(
(
SELECT array_agg(tbl_studiengang.kurzbzlang)
FROM
public.tbl_prestudentstatus pss
INNER JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE pss.status_kurzbz = \'Interessent\'
AND pss.bewerbung_abgeschicktamum IS NOT NULL
AND ps.person_id = p.person_id
AND tbl_studiengang.typ in(\'b\')
LIMIT 1
),\',\'
) AS "StgAbgeschickt",
pl.zeitpunkt AS "LockDate"
FROM public.tbl_person p
LEFT JOIN (SELECT person_id, zeitpunkt FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id)
LEFT JOIN (SELECT person_id, zeitpunkt FROM system.tbl_person_lock WHERE app = \''.$APP.'\') pl USING(person_id)
WHERE
EXISTS(
SELECT 1
@@ -36,6 +36,7 @@
?>
<div id="page-wrapper">
<div class="container-fluid">
<input type="hidden" id="hiddenpersonid" value="<?php echo $stammdaten->person_id ?>">
<div class="row<?php if($lockedbyother) echo ' alert-danger' ?>">
<div class="col-lg-8">
<h3 class="page-header">
@@ -76,7 +76,7 @@
echo $this->widgetlib->widget(
'Zgv_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code),
array('name' => 'zgv', 'id' => 'zgv')
array('name' => 'zgv', 'id' => 'zgv_'.$zgvpruefung->prestudent_id)
); ?>
</div>
</div>
@@ -89,21 +89,23 @@
?>
<input type="text" class="form-control"
value="<?php echo $zgvpruefung->zgvort ?>"
name="zgvort">
name="zgvort" id="zgvort_<?php echo $zgvpruefung->prestudent_id ?>">
<?php endif; ?>
</div>
</div>
<div class="col-lg-<?php echo $columns[2] ?>">
<div class="form-group">
<label>ZGV Datum: </label>
<?php if ($infoonly):
echo date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y');
<?php
$zgvdatum = empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y');
if ($infoonly):
echo $zgvdatum;
else:
?>
<input type="text"
class="dateinput form-control"
value="<?php echo empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y') ?>"
name="zgvdatum">
value="<?php echo $zgvdatum ?>"
name="zgvdatum" id="zgvdatum_<?php echo $zgvpruefung->prestudent_id ?>">
<?php endif; ?>
</div>
</div>
@@ -116,7 +118,7 @@
echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code),
array('name' => 'zgvnation', 'id' => 'zgvnation')
array('name' => 'zgvnation', 'id' => 'zgvnation_'.$zgvpruefung->prestudent_id)
); ?>
</div>
</div>
@@ -153,13 +155,15 @@
<div class="col-lg-<?php echo $columns[2] ?>">
<div class="form-group">
<label>ZGV Master Datum: </label>
<?php if ($infoonly):
echo date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y');
<?php
$zgvmadatum = empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y');
if ($infoonly):
echo $zgvmadatum;
else:
?>
<input type="text"
class="dateinput form-control"
value="<?php echo empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y') ?>"
value="<?php echo $zgvmadatum ?>"
name="zgvmadatum">
<?php endif; ?>
</div>
@@ -183,7 +187,12 @@
<?php endif; ?>
<?php if (!$infoonly): ?>
<div class="row">
<div class="col-lg-12 text-right">
<div class="col-lg-6 text-left">
<button type="button" class="btn btn-default zgvUebernehmen" id="zgvUebernehmen_<?php echo $zgvpruefung->prestudent_id ?>">
Letzte ZGV &uuml;bernehmen
</button>
</div>
<div class="col-lg-6 text-right">
<button type="submit" class="btn btn-default">
Speichern
</button>
@@ -203,7 +212,7 @@
<div class="form-inline">
<form method="post"
action="../saveAbsage/<?php echo $zgvpruefung->prestudent_id ?>">
<div class="input-group" id="statusgrselect">
<div class="input-group" id="statusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
<select name="statusgrund"
class="d-inline float-right"
required>
@@ -216,15 +225,15 @@
<?php endforeach ?>
</select>
<span class="input-group-btn">
<button id="absageBtn" type="button"
class="btn btn-default"
data-toggle="modal"
data-target="#absageModal">
Absage
</button>
</span>
<button id="absageBtn" type="button"
class="btn btn-default"
data-toggle="modal"
data-target="#absageModal_<?php echo $zgvpruefung->prestudent_id ?>">
Absage
</button>
</span>
</div>
<div class="modal fade" id="absageModal"
<div class="modal fade absageModal" id="absageModal_<?php echo $zgvpruefung->prestudent_id ?>"
tabindex="-1"
role="dialog"
aria-labelledby="absageModalLabel"
@@ -280,12 +289,12 @@
<div>
<button type="button" class="btn btn-default"
data-toggle="modal"
data-target="#freigabeModal">
data-target="#freigabeModal_<?php echo $zgvpruefung->prestudent_id ?>">
Freigabe an Studiengang
</button>
</div>
</div>
<div class="modal fade" id="freigabeModal" tabindex="-1"
<div class="modal fade" id="freigabeModal_<?php echo $zgvpruefung->prestudent_id ?>" tabindex="-1"
role="dialog"
aria-labelledby="freigabeModalLabel"
aria-hidden="true">
@@ -0,0 +1,54 @@
<html>
<head>
<title>Interessentenfreigabe mail</title>
</head>
<body>
<div class="container">
{interessentbez} wurde freigegeben.
<br><br>
<table style="font-size:small">
<tbody>
<tr>
<td><b>Studiengang</b></td>
<td>{studiengangbez}&nbsp;{studiengangtypbez} {orgform} {sprache}</td>
</tr>
<tr>
<td><b>Studiensemester</b></td>
<td>{studiensemester}</td>
</tr>
<tr>
<td><b>Geschlecht</b></td>
<td>{geschlecht}</td>
</tr>
<tr>
<td><b>Vorname</b></td>
<td>{vorname}</td>
</tr>
<tr>
<td><b>Nachname</b></td>
<td>{nachname}</td>
</tr>
<tr>
<td><b>Geburtsdatum</b></td>
<td>{gebdatum}</td>
</tr>
<tr>
<td><b>E-Mail Adresse</b></td>
<td>{mailadresse}</td>
</tr>
<tr>
<td><b>Prestudent ID</b></td>
<td>{prestudentid}</td>
</tr>
<tr>
<td valign="top"><b>Anmerkungen zur Bewerbung</b></td>
<td>{notizentext}</td>
</tr>
</tbody>
</table>
<br>
Für mehr Details verwenden Sie die Personenansicht im FAS.
</div>
</body>
</html>