diff --git a/application/config/abgabe.php b/application/config/abgabe.php
index beacb2b87..9265c70be 100644
--- a/application/config/abgabe.php
+++ b/application/config/abgabe.php
@@ -7,5 +7,4 @@ $config['turnitin_link'] = 'https://technikum-wien.turnitin.com/sso/sp/redwood/s
$config['old_abgabe_beurteilung_link'] = 'https://moodle.technikum-wien.at/mod/page/view.php?id=1005052';
-//$config['PAABGABE_EMAIL_THRESHOLD_MS'] = 86400000; // 1 day
-$config['PAABGABE_EMAIL_THRESHOLD_MS'] = 864000000; // 10 day
\ No newline at end of file
+$config['PAABGABE_EMAIL_JOB_INTERVAL'] = '1 day';
\ No newline at end of file
diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php
index c3dd3f06d..f25b30e83 100644
--- a/application/controllers/api/frontend/v1/Abgabe.php
+++ b/application/controllers/api/frontend/v1/Abgabe.php
@@ -41,8 +41,9 @@ class Abgabe extends FHCAPI_Controller
'getNoten' => self::PERM_LOGGED,
'getProjektarbeitenForStudiengang' =>array('basis/abgabe_assistenz:rw'),
'getStudiengaenge' => array('basis/abgabe_assistenz:rw'),
- 'getStudentProjektarbeitAbgabeFile' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw'),
- 'notifyStudentMail' => self::PERM_LOGGED
+ 'getStudentProjektarbeitAbgabeFile' => array('basis/abgabe_student:rw', 'basis/abgabe_lektor:rw', 'basis/abgabe_assistenz:rw')
+// 'notifyStudentMail' => self::PERM_LOGGED,
+// 'notifyBetreuerMail' => self::PERM_LOGGED
]);
$this->load->library('PhrasesLib');
@@ -396,6 +397,17 @@ class Abgabe extends FHCAPI_Controller
$this->terminateWithError($this->p->t('abgabetool','c4fehlerAktualitaetProjektarbeit'), 'general');
}
+ // Link to Abgabetool
+ if (defined('CIS4') && CIS4) {
+ $ci3BootstrapFilePath = "cis.php";
+ } else {
+ $ci3BootstrapFilePath = "index.ci.php";
+ }
+ $url = APP_ROOT . $ci3BootstrapFilePath . '/Cis/Abgabetool/Mitarbeiter';
+
+ $this->addMeta('betreuerArray', $resBetr->retval);
+
+ // getProjektbetreuerAnrede fetches distinct on person_id, so there should be one row. zweitbetreuer is handled seperately afterwards
foreach($resBetr->retval as $betreuerRow) {
// query student benutzer view for every betreuer row
@@ -415,7 +427,7 @@ class Abgabe extends FHCAPI_Controller
$maildata['student_anrede'] = $studentUser->anrede;
$maildata['student_voller_name'] = trim($studentUser->titelpre." ".$studentUser->vorname." ".$studentUser->nachname." ".$studentUser->titelpost);
$maildata['abgabetyp'] = $abgabetyp;
- $maildata['parbeituebersichtlink'] = "
Zur Projektarbeitsรผbersicht
";
+ $maildata['parbeituebersichtlink'] = "Zur Projektarbeitsรผbersicht
";
$maildata['bewertunglink'] = $projektarbeitIsCurrent && $paabgabetyp_kurzbz == 'end' ? "Zur Beurteilung der Arbeit
" : "";
$maildata['token'] = "";
@@ -424,38 +436,20 @@ class Abgabe extends FHCAPI_Controller
if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
$this->addMeta('$maildata', $maildata);
- // TODO: dont acutally send the mail but save it somewhere for job to send later?
- $sanchoData = array('ParbeitsbeurteilungEndupload', $maildata, $email, $subject, 'sancho_header_min_bw.jpg', 'sancho_footer_min_bw.jpg', get_uid()."@".DOMAIN);
-
-// $this->logLib->logInfoDB(
-// array(
-// 'zwischenupload',
-// $sanchoData,
-// array(
-// 'abgabedatum' => date('Y-m-d'),
-// 'updatevon' => getAuthUID(),
-// 'updateamum' => date('Y-m-d H:i:s')
-// ),
-// getAuthUID(),
-// getAuthPersonId(),
-// $student_uid
-// )
-// );
+ $mailres = sendSanchoMail(
+ 'ParbeitsbeurteilungEndupload',
+ $maildata,
+ $email,
+ $subject,
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg',
+ get_uid()."@".DOMAIN);
-// $mailres = sendSanchoMail(
-// 'ParbeitsbeurteilungEndupload',
-// $maildata,
-// $email,
-// $subject,
-// 'sancho_header_min_bw.jpg',
-// 'sancho_footer_min_bw.jpg',
-// get_uid()."@".DOMAIN);
-
-// if(!$mailres)
-// {
-// $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
-// }
+ if(!$mailres)
+ {
+ $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
+ }
// 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern
if ($paabgabetyp_kurzbz == 'end')
@@ -468,7 +462,6 @@ class Abgabe extends FHCAPI_Controller
if ($zweitbegutachterRetval && count($zweitbegutachterRetval) > 0)
{
-// $zweitbegutachterResults = $zweitbegutachterRetval[0];
foreach ($zweitbegutachterRetval as $begutachter)
{
@@ -482,56 +475,50 @@ class Abgabe extends FHCAPI_Controller
$begutachterMitTokenRetval = getData($this->ProjektbetreuerModel->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid, $begutachter->person_id));
- $this->addMeta('$begutachterMitTokenRes', $begutachterMitTokenRetval);
+ $this->addMeta('$begutachterMitTokenRetval', $begutachterMitTokenRetval);
-// $begutachterMitTokenRes = $zweitbegutachterMitToken->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid, $begutachter->person_id);
-
if (!$begutachterMitTokenRetval && count($begutachterMitTokenRetval) <= 0)
{
$this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general');
}
-
- // was this check ever necessary?
-// // Email an Zweitbegutachter senden
-// if (isset($zweitbegutachterMitToken->result[0]))
-// {
- $begutachterMitToken = $begutachterMitTokenRetval[0];
-
- $path = $begutachterMitToken->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter';
- $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$path";
- $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid;
- $intern = isset($begutachterMitToken->uid);
- $mail_link = $intern ? $mail_fulllink : $mail_baselink;
-
- $zweitbetmaildata = array();
- $zweitbetmaildata['geehrt'] = "geehrte" . ($begutachterMitToken->anrede == "Herr" ? "r" : "");
- $zweitbetmaildata['anrede'] = $begutachterMitToken->anrede;
- $zweitbetmaildata['betreuer_voller_name'] = $begutachterMitToken->voller_name;
- $zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
- $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
- $zweitbetmaildata['abgabetyp'] = $abgabetyp;
- $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
- $zweitbetmaildata['bewertunglink'] = $projektarbeitIsCurrent ? "Zur Beurteilung der Arbeit
" : "";
- $zweitbetmaildata['token'] = $projektarbeitIsCurrent && isset($begutachterMitToken->zugangstoken) && !$intern ? "Zugangstoken: " . $begutachterMitToken->zugangstoken . "
" : "";
-
- $this->addMeta('$zweitbetmaildata', $zweitbetmaildata);
-
-// TODO: persist email event somehow, let job bundle the updates later?
-// $mailres = sendSanchoMail(
-// 'ParbeitsbeurteilungEndupload',
-// $zweitbetmaildata,
-// $begutachterMitToken->email,
-// $subject,
-// 'sancho_header_min_bw.jpg',
-// 'sancho_footer_min_bw.jpg',
-// get_uid()."@".DOMAIN
-// );
-//
-// if (!$mailres)
-// {
-// $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
-// }
+ $begutachterMitToken = $begutachterMitTokenRetval[0];
+
+ $path = $begutachterMitToken->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter';
+ $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$path";
+ $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid;
+ $intern = isset($begutachterMitToken->uid);
+ $mail_link = $intern ? $mail_fulllink : $mail_baselink;
+
+ $zweitbetmaildata = array();
+ $zweitbetmaildata['geehrt'] = "geehrte" . ($begutachterMitToken->anrede == "Herr" ? "r" : "");
+ $zweitbetmaildata['anrede'] = $begutachterMitToken->anrede;
+ $zweitbetmaildata['betreuer_voller_name'] = $begutachterMitToken->voller_name;
+ $zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
+ $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
+ $zweitbetmaildata['abgabetyp'] = $abgabetyp;
+ $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
+ $zweitbetmaildata['bewertunglink'] = $projektarbeitIsCurrent ? "Zur Beurteilung der Arbeit
" : "";
+ $zweitbetmaildata['token'] = $projektarbeitIsCurrent && isset($begutachterMitToken->zugangstoken) && !$intern ? "Zugangstoken: " . $begutachterMitToken->zugangstoken . "
" : "";
+
+ $this->addMeta('$zweitbetmaildata', $zweitbetmaildata);
+
+// TODO: persist email event somehow, let job bundle the updates later?
+ $mailres = sendSanchoMail(
+ 'ParbeitsbeurteilungEndupload',
+ $zweitbetmaildata,
+ $begutachterMitToken->email,
+ $subject,
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg',
+ get_uid()."@".DOMAIN
+ );
+
+ if (!$mailres)
+ {
+ $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general');
+ }
+
}
}
}
@@ -998,94 +985,171 @@ class Abgabe extends FHCAPI_Controller
}
}
-
-
- // test method for abgabe nightly email job
- public function notifyStudentMail()
- {
- // send all new projektarbeit abgabe since the last job run to the related student
-
-// $this->logInfo('Start job queue scheduler FHC-Core->notifyBetreuerMail');
- $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
- $this->load->model('education/Paabgabe_model', 'PaabgabeModel');
- $this->load->model('crm/Student_model', 'StudentModel');
-
- $milliseconds = $this->config->item('PAABGABE_EMAIL_THRESHOLD_MS');
-
- $result = $this->PaabgabeModel->findAbgabenNewOrUpdatedSince($milliseconds);
- $retval = getData($result);
-
- // group results per projektarbeit/student_uid
- $student_uids = [];
- forEach($retval as $paabgabe) {
- if(!isset($student_uids[$paabgabe->student_uid])) {
- $student_uids[$paabgabe->student_uid] = [];
- }
-
- $student_uids[$paabgabe->student_uid][] = $paabgabe;
- }
-
- foreach ($student_uids as $uid => $abgaben) {
- // $uid is the student's UID
- $result = $this->StudentModel->getEmailAnredeForStudentUID($uid);
- $data = getData($result)[0];
-
- // $abgabe is the array of paabgabe objects
- $anredeFillString = $data->anrede=="Herr"?"r":"";
- $fullFormattedNameString = trim($data->titelpre." ".$data->vorname." ".$data->vornamen." ".$data->nachname." ".$data->titelpost);
-
- // https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.spaceship-op
- // php has spaceships ๐๐๐๐๐
- usort($abgaben, function($a, $b) {
- return strtotime($a->datum) <=> strtotime($b->datum);
- });
-
- $projektarbeit_titel = $abgaben[0]->titel;
- $abgabenString = '
';
- forEach($abgaben as $abgabe) {
- $datetime = new DateTime($abgabe->datum);
- $dateEmailFormatted = $datetime->format('d.m.Y');
-
- $abgabenString .= $dateEmailFormatted.' '.$abgabe->bezeichnung.' '.$abgabe->kurzbz.'
';
- }
-
- // Link to Entschuldigungsmanagement
- if(defined('CIS4') && CIS4) {
- $ci3BootstrapFilePath = "cis.php";
- } else {
- $ci3BootstrapFilePath = "index.ci.php";
- }
- $url = APP_ROOT.$ci3BootstrapFilePath.'/Cis/Abgabetool/Student';
-
-// $linkAbgabetool = '';
- $body_fields = array(
- 'anrede' => $data->anrede,
- 'anredeFillString' => $anredeFillString,
- 'fullFormattedNameString' => $fullFormattedNameString,
- 'paTitel' => $projektarbeit_titel,
- 'abgabenString' => $abgabenString,
- 'linkAbgabetool' => $url
- );
-
- // send email with bundled info
- sendSanchoMail(
- 'paabgabeUpdatesSammelmail',
- $body_fields,
- $uid.'@'.DOMAIN,
- $this->p->t('abgabetool', 'changedAbgabeterminev2')
- );
-
- }
-
- $this->terminateWithSuccess(
- array(
- 'student_uids' => $student_uids,
- 'result' => $result,
- 'body_fields' => $body_fields
- )
- );
-
- }
+// public function notifyBetreuerMail() {
+// // send all new projektarbeit abgabe UPLOADS since the last job run to the related betreuer
+// // this job gathers all new or changed file uploads via field 'abgabedatum', enduploads still
+// // send an email directly after happening since they are kind of important
+//
+//// $this->logInfo('Start job queue scheduler FHC-Core->notifyBetreuerMail');
+// $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
+// $this->load->model('education/Paabgabe_model', 'PaabgabeModel');
+// $this->load->model('crm/Student_model', 'StudentModel');
+//
+// $interval = $this->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
+//
+// $result = $this->PaabgabeModel->findAbgabenNewOrUpdatedSinceByAbgabedatum($interval);
+// $retval = getData($result);
+//
+// // retval are paabgaben joined with projektarbeit and betreuer
+// if(count($retval) == 0) return; // TODO: terminate appropriately
+//
+// // group contents per betreuer person_id
+// $betreuer_uids = [];
+// forEach($retval as $paabgabe) {
+// if(!isset($betreuer_uids[$paabgabe->person_id])) {
+// $betreuer_uids[$paabgabe->person_id] = [];
+// }
+//
+// $betreuer_uids[$paabgabe->person_id][] = $paabgabe;
+// }
+//
+// forEach ($betreuer_uids as $person_id => $abgaben) {
+// // $person_id is from betreuer
+//
+// $result = $this->ProjektarbeitModel->getProjektbetreuerAnrede($person_id);
+// $data = getData($result)[0];
+//
+// // $abgabe is the array of paabgabe objects
+// $anrede = $data->anrede;
+// $anredeFillString = $data->anrede == "Herr" ? "r" : "";
+// $fullFormattedNameString = $data->first;
+//
+// $result = $this->ProjektarbeitModel->getProjektbetreuerEmail($paabgabe->projektarbeit_id);
+// $data = getData($result)[0];
+//
+// // https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.spaceship-op
+// // php has spaceships ๐๐๐๐๐
+// usort($abgaben, function ($a, $b) {
+// return strtotime($a->datum) <=> strtotime($b->datum);
+// });
+//
+// $projektarbeit_titel = $abgaben[0]->titel;
+// $abgabenString = '
';
+// foreach ($abgaben as $abgabe) {
+// $datetime = new DateTime($abgabe->datum);
+// $dateEmailFormatted = $datetime->format('d.m.Y');
+//
+// $datetimeAbgabe = new DateTime($abgabe->abgabedatum);
+// $abgabedatumFormatted = $datetimeAbgabe->format('d.m.Y');
+//
+// $abgabenString .= 'Abgabedatum: '.$abgabedatumFormatted.' Zieldatum: '.$dateEmailFormatted . ' ' . $abgabe->bezeichnung . '
' . $abgabe->kurzbz . '
';
+// }
+//
+// // Link to Abgabetool
+// if (defined('CIS4') && CIS4) {
+// $ci3BootstrapFilePath = "cis.php";
+// } else {
+// $ci3BootstrapFilePath = "index.ci.php";
+// }
+// $url = APP_ROOT . $ci3BootstrapFilePath . '/Cis/Abgabetool/Mitarbeiter';
+//
+// $body_fields = array(
+// 'anrede' => $anrede,
+// 'anredeFillString' => $anredeFillString,
+// 'fullFormattedNameString' => $fullFormattedNameString,
+// 'paTitel' => $projektarbeit_titel,
+// 'abgabenString' => $abgabenString,
+// 'linkAbgabetool' => $url
+// );
+//
+// // send email with bundled info
+// sendSanchoMail(
+// 'paabgabeUpdatesBetSM',
+// $body_fields,
+// $data->private_email,
+// $this->p->t('abgabetool', 'changedAbgabeterminev2')
+// );
+// }
+// }
+//
+// public function notifyStudentMail()
+// {
+// // send all new projektarbeit abgabe since the last job run to the related student
+//
+//// $this->logInfo('Start job queue scheduler FHC-Core->notifyBetreuerMail');
+// $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
+// $this->load->model('education/Paabgabe_model', 'PaabgabeModel');
+// $this->load->model('crm/Student_model', 'StudentModel');
+//
+// $interval = $this->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
+//
+// $result = $this->PaabgabeModel->findAbgabenNewOrUpdatedSince($interval);
+// $retval = getData($result);
+//
+// if(count($retval) == 0) return; // TODO: terminate appropriately
+//
+// // group results per projektarbeit/student_uid
+// $student_uids = [];
+// forEach($retval as $paabgabe) {
+// if(!isset($student_uids[$paabgabe->student_uid])) {
+// $student_uids[$paabgabe->student_uid] = [];
+// }
+//
+// $student_uids[$paabgabe->student_uid][] = $paabgabe;
+// }
+//
+// foreach ($student_uids as $uid => $abgaben) {
+// // $uid is the student's UID
+// $result = $this->StudentModel->getEmailAnredeForStudentUID($uid);
+// $data = getData($result)[0];
+//
+// // $abgabe is the array of paabgabe objects
+// $anredeFillString = $data->anrede=="Herr"?"r":"";
+// $fullFormattedNameString = trim($data->titelpre." ".$data->vorname." ".$data->vornamen." ".$data->nachname." ".$data->titelpost);
+//
+// // https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.spaceship-op
+// // php has spaceships ๐๐๐๐๐
+// usort($abgaben, function($a, $b) {
+// return strtotime($a->datum) <=> strtotime($b->datum);
+// });
+//
+// $projektarbeit_titel = $abgaben[0]->titel;
+// $abgabenString = '
';
+// forEach($abgaben as $abgabe) {
+// $datetime = new DateTime($abgabe->datum);
+// $dateEmailFormatted = $datetime->format('d.m.Y');
+//
+// $abgabenString .= $dateEmailFormatted.' '.$abgabe->bezeichnung.' '.$abgabe->kurzbz.'
';
+// }
+//
+// // Link to Entschuldigungsmanagement
+// if(defined('CIS4') && CIS4) {
+// $ci3BootstrapFilePath = "cis.php";
+// } else {
+// $ci3BootstrapFilePath = "index.ci.php";
+// }
+// $url = APP_ROOT.$ci3BootstrapFilePath.'/Cis/Abgabetool/Student';
+//
+//// $linkAbgabetool = '';
+// $body_fields = array(
+// 'anrede' => $data->anrede,
+// 'anredeFillString' => $anredeFillString,
+// 'fullFormattedNameString' => $fullFormattedNameString,
+// 'paTitel' => $projektarbeit_titel,
+// 'abgabenString' => $abgabenString,
+// 'linkAbgabetool' => $url
+// );
+//
+// // send email with bundled info
+// sendSanchoMail(
+// 'paabgabeUpdatesSammelmail',
+// $body_fields,
+// $uid.'@'.DOMAIN,
+// $this->p->t('abgabetool', 'changedAbgabeterminev2')
+// );
+//
+// }
+// }
private function checkAbgabeSignatur($abgabe, $projektarbeit) {
if($abgabe->paabgabetyp_kurzbz != 'end') {
diff --git a/application/controllers/jobs/AbgabetoolJob.php b/application/controllers/jobs/AbgabetoolJob.php
index 24c32db11..17eff0f74 100644
--- a/application/controllers/jobs/AbgabetoolJob.php
+++ b/application/controllers/jobs/AbgabetoolJob.php
@@ -15,76 +15,117 @@ class AbgabetoolJob extends JOB_Controller
$this->_ci =& get_instance();
$this->_ci->load->helper('hlp_sancho_helper');
-
+
$this->_ci->load->model('education/Projektarbeit_model', 'ProjektarbeitModel');
$this->_ci->load->model('education/Paabgabe_model', 'PaabgabeModel');
-
- // signatur fehlt mail
$this->_ci->load->model('crm/Student_model', 'StudentModel');
- $this->_ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
-
-
- // 2. begutachter mail
- $this->_ci->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel');
$this->loadPhrases([
'abgabetool'
]);
-
-// $this->_ci->load->model('extensions/FHC-Core-Anwesenheiten/QR_model', 'QRModel');
-// $this->_ci->load->config('extensions/FHC-Core-Anwesenheiten/qrsettings');
}
- public function notifyBetreuerMail()
- {
- // send all new projektarbeit abgabe since the lat job run to the related betreuer
-
-// $this->logInfo('Start job queue scheduler FHC-Core->notifyBetreuerMail');
+ public function notifyBetreuerMail() {
+ // send all new projektarbeit abgabe UPLOADS since the last job run to the related betreuer
+ // this job gathers all new or changed file uploads via field 'abgabedatum', enduploads still
+ // send an email directly after happening since they are kind of important
- $milliseconds = $this->_ci->config->item('PAABGABE_UPDATEAMUM_EMAIL_THRESHOLD_MILLISECONDS');
+ $this->_ci->logInfo('Start job queue scheduler FHC-Core->notifyBetreuerMail');
- $result = $this->PaabgabeModel->findAbgabenNewOrUpdatedSince($milliseconds);
+ $interval = $this->_ci->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
+
+ $result = $this->_ci->PaabgabeModel->findAbgabenNewOrUpdatedSinceByAbgabedatum($interval);
$retval = getData($result);
- // group results per projektarbeit/student_uid
- $student_uids = [];
+ // retval are paabgaben joined with projektarbeit and betreuer
+ if(count($retval) == 0) return; // TODO: terminate appropriately
+
+ // group contents per betreuer person_id
+ $betreuer_uids = [];
forEach($retval as $paabgabe) {
- if(!in_array($paabgabe->student_uid, $student_uids, true)) {
- $student_uids[$paabgabe->student_uid] = [$paabgabe];
- } else {
- $student_uids[$paabgabe->student_uid][] = $paabgabe;
+ if(!isset($betreuer_uids[$paabgabe->person_id])) {
+ $betreuer_uids[$paabgabe->person_id] = [];
}
+
+ $betreuer_uids[$paabgabe->person_id][] = $paabgabe;
}
-
-
-
- // send emails with bundled info
-
-// $rows_affected = $this->QRModel->db->affected_rows();
-//
-// if (isError($result))
-// {
-// $this->logError(getError($result), $milliseconds);
-// } else {
-// $this->logInfo($rows_affected." QR Codes deleted.");
-// }
-//
-// $this->logInfo('End job queue scheduler FHC-Core->notifyBetreuerMail');
+
+ forEach ($betreuer_uids as $person_id => $abgaben) {
+ // $person_id is from betreuer
+
+ $result = $this->_ci->ProjektarbeitModel->getProjektbetreuerAnrede($person_id);
+ $data = getData($result)[0];
+
+ // $abgabe is the array of paabgabe objects
+ $anrede = $data->anrede;
+ $anredeFillString = $data->anrede == "Herr" ? "r" : "";
+ $fullFormattedNameString = $data->first;
+
+ $result = $this->_ci->ProjektarbeitModel->getProjektbetreuerEmail($paabgabe->projektarbeit_id);
+ $data = getData($result)[0];
+
+ // https://www.php.net/manual/en/migration70.new-features.php#migration70.new-features.spaceship-op
+ // php has spaceships ๐๐๐๐๐
+ usort($abgaben, function ($a, $b) {
+ return strtotime($a->datum) <=> strtotime($b->datum);
+ });
+
+ $projektarbeit_titel = $abgaben[0]->titel;
+ $abgabenString = '
';
+ foreach ($abgaben as $abgabe) {
+ $datetime = new DateTime($abgabe->datum);
+ $dateEmailFormatted = $datetime->format('d.m.Y');
+
+ $datetimeAbgabe = new DateTime($abgabe->abgabedatum);
+ $abgabedatumFormatted = $datetimeAbgabe->format('d.m.Y');
+
+ $abgabenString .= 'Abgabedatum: '.$abgabedatumFormatted.' Zieldatum: '.$dateEmailFormatted . ' ' . $abgabe->bezeichnung . '
' . $abgabe->kurzbz . '
';
+ }
+
+ // Link to Abgabetool
+ if (defined('CIS4') && CIS4) {
+ $ci3BootstrapFilePath = "cis.php";
+ } else {
+ $ci3BootstrapFilePath = "index.ci.php";
+ }
+ $url = APP_ROOT . $ci3BootstrapFilePath . '/Cis/Abgabetool/Mitarbeiter';
+
+ $body_fields = array(
+ 'anrede' => $anrede,
+ 'anredeFillString' => $anredeFillString,
+ 'fullFormattedNameString' => $fullFormattedNameString,
+ 'paTitel' => $projektarbeit_titel,
+ 'abgabenString' => $abgabenString,
+ 'linkAbgabetool' => $url
+ );
+
+ // send email with bundled info
+ sendSanchoMail(
+ 'paabgabeUpdatesBetSM',
+ $body_fields,
+ $data->private_email,
+ $this->p->t('abgabetool', 'changedAbgabeterminev2')
+ );
+ }
+
+ $this->_ci->logInfo('End job queue scheduler FHC-Core->notifyBetreuerMail');
}
public function notifyStudentMail()
{
// send all new projektarbeit abgabe since the last job run to the related student
- $this->logInfo('Start job queue scheduler FHC-Core->notifyStudentMail');
+ $this->_ci->logInfo('Start job queue scheduler FHC-Core->notifyStudentMail');
- $milliseconds = $this->_ci->config->item('PAABGABE_EMAIL_THRESHOLD_MS');
+ $interval = $this->_ci->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
- $result = $this->_ci->PaabgabeModel->findAbgabenNewOrUpdatedSince($milliseconds);
+ $result = $this->_ci->PaabgabeModel->findAbgabenNewOrUpdatedSince($interval);
$retval = getData($result);
+ if(count($retval) == 0) return; // TODO: terminate appropriately
+
// group results per projektarbeit/student_uid
$student_uids = [];
forEach($retval as $paabgabe) {
diff --git a/application/models/education/Paabgabe_model.php b/application/models/education/Paabgabe_model.php
index e2ccfaaca..9edfc68ac 100644
--- a/application/models/education/Paabgabe_model.php
+++ b/application/models/education/Paabgabe_model.php
@@ -61,9 +61,9 @@ class Paabgabe_model extends DB_Model
return $this->execReadOnlyQuery($qry, array($person_id));
}
- public function findAbgabenNewOrUpdatedSince($milliseconds)
+ public function findAbgabenNewOrUpdatedSince($interval)
{
- $interval = $milliseconds . ' milliseconds';
+
$query = "SELECT projektarbeit_id, paabgabe_id, paabgabetyp_kurzbz, fixtermin, datum, kurzbz, campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabe.abgabedatum,
campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum,
campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel
@@ -77,4 +77,23 @@ class Paabgabe_model extends DB_Model
return $this->execQuery($query, [$interval, $interval]);
}
+
+ public function findAbgabenNewOrUpdatedSinceByAbgabedatum($interval) {
+
+ $query = "SELECT projektarbeit_id, paabgabe_id, paabgabetyp_kurzbz, fixtermin, datum, kurzbz, campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabe.abgabedatum,
+ campus.tbl_paabgabe.insertvon, campus.tbl_paabgabe.insertamum, campus.tbl_paabgabe.updatevon, campus.tbl_paabgabe.updateamum,
+ campus.tbl_paabgabe.note, upload_allowed, beurteilungsnotiz, student_uid, tbl_projektarbeit.note, lehre.tbl_projektarbeit.titel,
+ lehre.tbl_projektbetreuer.betreuerart_kurzbz, lehre.tbl_projektbetreuer.person_id
+ FROM campus.tbl_paabgabe
+ JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
+ JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
+ JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
+
+ WHERE campus.tbl_paabgabe.abgabedatum IS NOT NULL
+ AND campus.tbl_paabgabe.abgabedatum >= NOW() - INTERVAL ?
+ ORDER BY abgabedatum DESC
+ ";
+
+ return $this->execQuery($query, [$interval]);
+ }
}
diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php
index 9def13ddb..bd1a06b60 100644
--- a/application/models/education/Projektarbeit_model.php
+++ b/application/models/education/Projektarbeit_model.php
@@ -204,12 +204,9 @@ class Projektarbeit_model extends DB_Model
}
public function getProjektbetreuerAnrede($bperson_id) {
- $qry_betr="SELECT DISTINCT trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first,
- public.tbl_mitarbeiter.mitarbeiter_uid, anrede
- FROM public.tbl_person JOIN lehre.tbl_projektbetreuer ON(lehre.tbl_projektbetreuer.person_id=public.tbl_person.person_id)
- LEFT JOIN public.tbl_benutzer ON(public.tbl_benutzer.person_id=public.tbl_person.person_id)
- LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_benutzer.uid=public.tbl_mitarbeiter.mitarbeiter_uid)
- WHERE public.tbl_person.person_id= ?";
+ $qry_betr="SELECT DISTINCT ON(public.tbl_person.person_id) trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first, anrede
+ FROM public.tbl_person JOIN lehre.tbl_projektbetreuer ON(lehre.tbl_projektbetreuer.person_id=public.tbl_person.person_id)
+ WHERE public.tbl_person.person_id= ?";
return $this->execReadOnlyQuery($qry_betr, [$bperson_id]);
}