Added job to send mail to STGL with yesterdays new Anrechnungen

. added AnrechnungJob sendMailToSTGL()
. removed functions to send mail from CTRL

Signed-off-by: cris-technikum <hainberg@technikum-wien.at>
This commit is contained in:
Cris
2021-03-16 17:42:46 +01:00
committed by cris-technikum
parent 5da754c9db
commit 7340564d1e
3 changed files with 145 additions and 92 deletions
@@ -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)
;
}