diff --git a/application/controllers/jobs/AnrechnungJob.php b/application/controllers/jobs/AnrechnungJob.php
index 2868a8052..98c85d592 100644
--- a/application/controllers/jobs/AnrechnungJob.php
+++ b/application/controllers/jobs/AnrechnungJob.php
@@ -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 .= '
+
+
+ ';
+
+ foreach ($anrechnungen as $anrechnung)
+ {
+ // Head line for each LV bezeichnung
+ if ($anrechnung->bezeichnung != $lv_bezeichnung)
+ {
+ $html .= '
-
+
-
-
-
+
+
+
diff --git a/include/lvregel.class.php b/include/lvregel.class.php
index 97e3a68fe..b5a109988 100644
--- a/include/lvregel.class.php
+++ b/include/lvregel.class.php
@@ -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];
diff --git a/locale/de-AT/lehrveranstaltung.php b/locale/de-AT/lehrveranstaltung.php
new file mode 100644
index 000000000..73268d207
--- /dev/null
+++ b/locale/de-AT/lehrveranstaltung.php
@@ -0,0 +1,5 @@
+phrasen['lehrveranstaltung/DetailAnmerkung']='Anmerkung:';
+$this->phrasen['lehrveranstaltung/LehreinheitmitarbeiterAnmerkung']='Anmerkung:';
+
+?>
diff --git a/locale/de-AT/tools.php b/locale/de-AT/tools.php
index 89bd25caa..8b5095075 100644
--- a/locale/de-AT/tools.php
+++ b/locale/de-AT/tools.php
@@ -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';
diff --git a/locale/en-US/tools.php b/locale/en-US/tools.php
index 4139c1c20..6fd6af8f7 100644
--- a/locale/en-US/tools.php
+++ b/locale/en-US/tools.php
@@ -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';