mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
Merge branch 'feature-11970/AnrechnungJob_MailToSTGL' into feature/Anrechnungen_NEU
This commit is contained in:
@@ -15,6 +15,7 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class AnrechnungJob extends JOB_Controller
|
||||
{
|
||||
const APPROVE_ANRECHNUNG_URI = '/lehre/anrechnung/ApproveAnrechnungUebersicht';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@@ -23,6 +24,11 @@ class AnrechnungJob extends JOB_Controller
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->model('education/Zeugnisnote_model', 'ZeugnisnoteModel');
|
||||
$this->load->model('education/Anrechnung_model', 'AnrechnungModel');
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$this->load->helper('url');
|
||||
$this->load->helper('hlp_sancho_helper');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,4 +90,140 @@ class AnrechnungJob extends JOB_Controller
|
||||
}
|
||||
$this->logInfo('End Anrechnung Grades Job', array('Number of Grades added'=>$cnt));
|
||||
}
|
||||
|
||||
// Send Sancho mail to STGL with yesterdays new Anrechnungen
|
||||
public function sendMailToSTGL()
|
||||
{
|
||||
$this->logInfo('Start AnrechnungJob to send emails to STGL about yesterdays new Anrechnungen.');
|
||||
|
||||
// Get all yesterdays Anrechnungen
|
||||
$this->AnrechnungModel->addSelect('anrechnung_id, studiensemester_kurzbz, lv.studiengang_kz, lv.bezeichnung, vorname, nachname');
|
||||
$this->AnrechnungModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_student student', 'prestudent_id');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_benutzer benutzer', 'ON (benutzer.uid = student.student_uid)');
|
||||
$this->AnrechnungModel->addJoin('public.tbl_person person', 'person_id');
|
||||
$this->AnrechnungModel->addOrder('lv.studiengang_kz, lv.bezeichnung');
|
||||
|
||||
$result = $this->AnrechnungModel->loadWhere(
|
||||
'(lehre.tbl_anrechnung.insertamum)::date = (NOW() - INTERVAL \'1 DAY\')::DATE'
|
||||
);
|
||||
|
||||
// Exit if there are no Anrechnungen
|
||||
if (!$anrechnungen = getData($result)) {
|
||||
$this->logInfo('ABORTED: Sending emails to STGL about yesterdays new Anrechnungen aborted - No new Anrechnungen found.');
|
||||
exit;
|
||||
}
|
||||
|
||||
$unique_studiengang_kz_arr = array_unique(array_column($anrechnungen, 'studiengang_kz'));
|
||||
|
||||
foreach ($unique_studiengang_kz_arr as $studiengang_kz)
|
||||
{
|
||||
// Get STG bezeichnung
|
||||
$this->StudiengangModel->addSelect('UPPER( typ || kurzbz ) AS "stg_bezeichnung"');
|
||||
$studiengang_bezeichnung = $this->StudiengangModel->load($studiengang_kz)->retval[0]->stg_bezeichnung;
|
||||
|
||||
// Get STGL mail address
|
||||
list ($to, $vorname) = self::_getSTGLMailAddress($studiengang_kz);
|
||||
|
||||
// Get HTML table with new Anrechnungen of that STG plus amount of them
|
||||
list ($anrechnungen_amount, $anrechnungen_table) = self::_getSTGLMailDataTable($studiengang_kz, $anrechnungen);
|
||||
|
||||
// Link to Antrag genehmigen dashboard
|
||||
$url =
|
||||
CIS_ROOT. 'cis/index.php?menu='.
|
||||
CIS_ROOT. 'cis/menu.php?content_id=&content='.
|
||||
CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI;
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'vorname' => $vorname,
|
||||
'studiengang' => $studiengang_bezeichnung,
|
||||
'anzahl' => $anrechnungen_amount,
|
||||
'datentabelle' => $anrechnungen_table,
|
||||
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
|
||||
);
|
||||
|
||||
// Send mail
|
||||
sendSanchoMail(
|
||||
'AnrechnungAntragStellen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt'
|
||||
);
|
||||
}
|
||||
|
||||
$this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.');
|
||||
}
|
||||
|
||||
// Get STGL mail address
|
||||
private function _getSTGLMailAddress($studiengang_kz)
|
||||
{
|
||||
$result = $this->StudiengangModel->getLeitung($studiengang_kz);
|
||||
|
||||
// Get STGL mail address
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->uid. '@'. DOMAIN,
|
||||
$result->retval[0]->vorname
|
||||
);
|
||||
}
|
||||
// If not available, get assistance mail address
|
||||
else
|
||||
{
|
||||
$result = $this->StudiengangModel->load($studiengang_kz);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->email,
|
||||
''
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build HTML table with yesterdays new Anrechnungen of the given STG
|
||||
private function _getSTGLMailDataTable($studiengang_kz, $anrechnungen)
|
||||
{
|
||||
$html = '';
|
||||
$lv_bezeichnung = '';
|
||||
|
||||
// Filter Anrechnungen of given STG
|
||||
$anrechnungen = array_filter(
|
||||
$anrechnungen,
|
||||
function ($anrechnung) use (&$studiengang_kz) {
|
||||
return $anrechnung->studiengang_kz == $studiengang_kz;
|
||||
});
|
||||
|
||||
// Amount of Anrechnungen
|
||||
$amount = count($anrechnungen);
|
||||
|
||||
// HTML table body
|
||||
$html .= '
|
||||
<table style="width: 60%; border-collapse: collapse;" border="1" cellpadding="5">
|
||||
<tbody>
|
||||
';
|
||||
|
||||
foreach ($anrechnungen as $anrechnung)
|
||||
{
|
||||
// Head line for each LV bezeichnung
|
||||
if ($anrechnung->bezeichnung != $lv_bezeichnung)
|
||||
{
|
||||
$html .= '<tr><td><span><strong>' . $anrechnung->bezeichnung . '</strong></span></td></tr>';
|
||||
}
|
||||
|
||||
$lv_bezeichnung = $anrechnung->bezeichnung;
|
||||
|
||||
// Row for each Anrechnung / student
|
||||
$html .= '<tr><td><span>'. $anrechnung->vorname. ' '. $anrechnung->nachname. '</span></td></tr>';
|
||||
}
|
||||
|
||||
$html .= '
|
||||
</tbody>
|
||||
</table>
|
||||
';
|
||||
|
||||
return array($amount, $html);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,21 +200,8 @@ class requestAnrechnung extends Auth_Controller
|
||||
$this->db->trans_rollback();
|
||||
show_error($result->msg, EXIT_ERROR);
|
||||
}
|
||||
|
||||
// Send mail to STGL
|
||||
$mail_params = array(
|
||||
'studiengang_kz' => $prestudent->studiengang_kz,
|
||||
'lehrveranstaltung_id' => $lehrveranstaltung_id
|
||||
);
|
||||
|
||||
if(!$this->_sendSanchoMail($mail_params))
|
||||
{
|
||||
show_error('Failed sending mail');
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect(site_url(). self::REQUEST_ANRECHNUNG_URI. '?studiensemester='. $studiensemester_kurzbz. '&lv_id='. $lehrveranstaltung_id);
|
||||
}
|
||||
|
||||
redirect(site_url(). self::REQUEST_ANRECHNUNG_URI. '?studiensemester='. $studiensemester_kurzbz. '&lv_id='. $lehrveranstaltung_id);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -330,80 +317,4 @@ class requestAnrechnung extends Auth_Controller
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mail to STGL (if not available, send to STGL assistance)
|
||||
* @param $mail_params
|
||||
*/
|
||||
private function _sendSanchoMail($mail_params)
|
||||
{
|
||||
// Get STGL mail address, if available, otherwise get assistance mail address
|
||||
list ($to, $vorname) = $this->_getSTGLMailAddress($mail_params['studiengang_kz']);
|
||||
|
||||
// Get full name of student
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
if (!$student_name = getData($this->PersonModel->getFullName($this->_uid)))
|
||||
{
|
||||
show_error ('Failed retrieving person');
|
||||
}
|
||||
|
||||
// Get lehrveranstaltung bezeichnung
|
||||
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
if (!$lehrveranstaltung = getData($this->LehrveranstaltungModel->load($mail_params['lehrveranstaltung_id']))[0])
|
||||
{
|
||||
show_error ('Failed retrieving person');
|
||||
}
|
||||
|
||||
// Link to Antrag genehmigen
|
||||
$url =
|
||||
CIS_ROOT. 'cis/index.php?menu='.
|
||||
CIS_ROOT. 'cis/menu.php?content_id=&content='.
|
||||
CIS_ROOT. index_page(). self::APPROVE_ANRECHNUNG_URI;
|
||||
|
||||
// Prepare mail content
|
||||
$body_fields = array(
|
||||
'vorname' => $vorname,
|
||||
'student_name' => $student_name,
|
||||
'lehrveranstaltung_bezeichnung' => $lehrveranstaltung->bezeichnung,
|
||||
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
|
||||
);
|
||||
|
||||
sendSanchoMail(
|
||||
'AnrechnungAntragStellen',
|
||||
$body_fields,
|
||||
$to,
|
||||
'Anerkennung nachgewiesener Kenntnisse: Neuer Antrag wurde gestellt'
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Get STGL mail address, if available, otherwise get assistance mail address
|
||||
private function _getSTGLMailAddress($stg_kz)
|
||||
{
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$result = $this->StudiengangModel->getLeitung($stg_kz);
|
||||
|
||||
// Get STGL mail address, if available
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->uid. '@'. DOMAIN,
|
||||
$result->retval[0]->vorname
|
||||
);
|
||||
}
|
||||
// ...otherwise get assistance mail address
|
||||
else
|
||||
{
|
||||
$result = $this->StudiengangModel->load($stg_kz);
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
return array(
|
||||
$result->retval[0]->email,
|
||||
''
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,7 +475,7 @@ class Studiengang_model extends DB_Model
|
||||
funktion_kurzbz = \'Leitung\'
|
||||
AND ( datum_von <= NOW() OR datum_von IS NULL )
|
||||
AND ( datum_bis >= NOW() OR datum_bis IS NULL )
|
||||
AND studiengang_kz = ' . $this->db->escape($studiengang_kz, FHC_INTEGER)
|
||||
AND studiengang_kz = ' . $this->db->escape($studiengang_kz)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ header("Content-type: application/vnd.mozilla.xul+xml");
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
require_once('../../config/global.config.inc.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/phrasen.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$rechte = new benutzerberechtigung();
|
||||
@@ -38,6 +39,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
// Vertragsdetails: Anzeige wird über config Eintrag bestimmt
|
||||
$is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') || FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN == true) ? 'false' : 'true';
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
?>
|
||||
|
||||
<overlay id="LehrveranstaltungDetailOverlay"
|
||||
@@ -239,12 +242,12 @@ $is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') |
|
||||
</grid>
|
||||
|
||||
<vbox flex="1">
|
||||
<label value=" Anmerkung" />
|
||||
<label value="<?php echo $p->t('lehrveranstaltung/DetailAnmerkung'); ?>" />
|
||||
<textbox id="lehrveranstaltung-detail-textbox-anmerkung" rows="5" multiline="true" disabled="true"/>
|
||||
|
||||
<hbox>
|
||||
<spacer flex="1" />
|
||||
<button id="lehrveranstaltung-detail-button-save" label="speichern" oncommand="LeDetailSave();" disabled="true"/>
|
||||
<spacer flex="1" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
@@ -435,7 +438,7 @@ $is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') |
|
||||
<vbox>
|
||||
<groupbox>
|
||||
<caption label="LektorInnendaten" />
|
||||
<vbox flex="1" style="padding: 10px;">
|
||||
<hbox flex="1" style="padding: 10px;">
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-lehreinheit_id" hidden="true"/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-mitarbeiter_uid" hidden="true"/>
|
||||
<grid align="end" flex="1"
|
||||
@@ -446,6 +449,8 @@ $is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') |
|
||||
<column flex="1"/>
|
||||
<column />
|
||||
<column flex="1"/>
|
||||
<column />
|
||||
<column flex="1"/>
|
||||
</columns>
|
||||
|
||||
<rows>
|
||||
@@ -472,6 +477,8 @@ $is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') |
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" value="<?php echo $p->t('lehrveranstaltung/LehreinheitmitarbeiterAnmerkung'); ?>"/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" disabled="true" maxlength="255" width="300" oninput="LeMitarbeiterValueChanged();"/>
|
||||
</row>
|
||||
<row>
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-semesterstunden" control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden" value="Semesterstunden: "/>
|
||||
@@ -482,26 +489,22 @@ $is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') |
|
||||
<row>
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-stundensatz" control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz" value="Stundensatz: "/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-stundensatz" disabled="true" maxlength="6" flex="1" oninput="LeMitarbeiterValueChanged();LeMitarbeiterGesamtkosten()"/>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-faktor" hidden="true" value="Faktor: "/>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-faktor" hidden="true" value="Faktor: "/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-faktor" hidden="true" disabled="true" maxlength="3" flex="1" oninput="LeMitarbeiterValueChanged();LeMitarbeiterGesamtkosten()"/>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden" value="BIS-Melden: "/>
|
||||
<checkbox id="lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden" disabled="true" flex="1" oncommand="LeMitarbeiterValueChanged();"/>
|
||||
</row>
|
||||
<row>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" value="Anmerkung: "/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" disabled="true" maxlength="256" flex="1" oninput="LeMitarbeiterValueChanged();"/>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden" value="BIS-Melden: "/>
|
||||
<checkbox id="lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden" disabled="true" flex="1" oncommand="LeMitarbeiterValueChanged();"/>
|
||||
<label value='Gesamtkosten:' />
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-gesamtkosten" value='' />
|
||||
<spacer />
|
||||
<button label="Speichern" disabled="true" id="lehrveranstaltung-lehreinheitmitarbeiter-button-save" oncommand="LeMitarbeiterSave();"/>
|
||||
<spacer />
|
||||
<spacer />
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<hbox flex="1">
|
||||
<!--<spacer flex="1" />-->
|
||||
<hbox flex="1">
|
||||
<label value='Gesamtkosten:' />
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-gesamtkosten" value='' />
|
||||
</hbox>
|
||||
<button label="Speichern" disabled="true" id="lehrveranstaltung-lehreinheitmitarbeiter-button-save" oncommand="LeMitarbeiterSave();"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
</vbox>
|
||||
|
||||
@@ -509,11 +512,11 @@ $is_hidden = (!defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') |
|
||||
<vbox>
|
||||
<groupbox id="lehrveranstaltung-lehreinheitmitarbeiter-groupbox-vertragsdetails" hidden="<?php echo $is_hidden ?>">
|
||||
<caption label="Vertragsdetails" />
|
||||
<grid style="overflow:auto; padding:10px;" flex="1">
|
||||
<grid style="overflow:auto; padding:10px;" >
|
||||
<columns>
|
||||
<column flex="1"/>
|
||||
<column flex="1"/>
|
||||
<column flex="1"/>
|
||||
<column/>
|
||||
<column/>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-vertrag_id" hidden="true" value=""/>
|
||||
|
||||
@@ -596,10 +596,17 @@ class lvregel extends basis_db
|
||||
|
||||
// Ausbildungssemester aus dem Status holen
|
||||
$prestudent = new prestudent();
|
||||
$studiensemester = new studiensemester();
|
||||
$prev_studiensemester_kurzbz = $studiensemester->getPrevious();
|
||||
|
||||
if($prestudent->getLastStatus($student->prestudent_id, $studiensemester_kurzbz))
|
||||
{
|
||||
$this->cache[$uid][$studiensemester_kurzbz]=$prestudent->ausbildungssemester;
|
||||
}
|
||||
else if($prestudent->getLastStatus($student->prestudent_id, $prev_studiensemester_kurzbz))
|
||||
{
|
||||
$this->cache[$uid][$studiensemester_kurzbz]=$prestudent->ausbildungssemester + 1;
|
||||
}
|
||||
}
|
||||
$ausbildungssemester = $this->cache[$uid][$studiensemester_kurzbz];
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
$this->phrasen['lehrveranstaltung/DetailAnmerkung']='Anmerkung:';
|
||||
$this->phrasen['lehrveranstaltung/LehreinheitmitarbeiterAnmerkung']='Anmerkung:';
|
||||
|
||||
?>
|
||||
@@ -40,7 +40,7 @@ $this->phrasen['tools/zahlungsbestaetigung']='Zahlungsbestätigung';
|
||||
$this->phrasen['tools/bestaetigungDrucken']='Bestaetigung drucken';
|
||||
$this->phrasen['tools/offen']='offen';
|
||||
$this->phrasen['tools/keineZahlungenVorhanden']='Derzeit sind keine Zahlungen vorhanden';
|
||||
$this->phrasen['tools/zahlungenHinweis']='Bitte beachten Sie, dass es bis zu 3 Werktage dauern kann bis der Zahlungseingang hier aufscheint.';
|
||||
$this->phrasen['tools/zahlungenHinweis']='Bitte beachten Sie, dass es bis zu 5 Werktage dauern kann bis der Zahlungseingang hier aufscheint.';
|
||||
|
||||
//Ampeln
|
||||
$this->phrasen['tools/ampelsystem']='Ampelsystem';
|
||||
|
||||
@@ -40,7 +40,7 @@ $this->phrasen['tools/zahlungsbestaetigung']='Confirmation of payment ';
|
||||
$this->phrasen['tools/bestaetigungDrucken']='Print Confirmation';
|
||||
$this->phrasen['tools/offen']='outstanding';
|
||||
$this->phrasen['tools/keineZahlungenVorhanden']='Currently there are no payments';
|
||||
$this->phrasen['tools/zahlungenHinweis']='Please note that it can take up to 3 working days for the receipt of payment to appear here.';
|
||||
$this->phrasen['tools/zahlungenHinweis']='Please note that it can take up to 5 working days for the receipt of payment to appear here.';
|
||||
|
||||
//Ampeln
|
||||
$this->phrasen['tools/ampelsystem']='Notification System';
|
||||
|
||||
Reference in New Issue
Block a user