diff --git a/application/controllers/jobs/AbgabetoolJob.php b/application/controllers/jobs/AbgabetoolJob.php
index a4c576093..420379f72 100644
--- a/application/controllers/jobs/AbgabetoolJob.php
+++ b/application/controllers/jobs/AbgabetoolJob.php
@@ -28,6 +28,7 @@ class AbgabetoolJob extends JOB_Controller
}
public function notifyBetreuerAboutChangedAbgaben() {
+
$this->_ci->logInfo('Start job FHC-Core->notifyBetreuerAboutChangedAbgaben');
$interval = $this->_ci->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
@@ -40,6 +41,8 @@ class AbgabetoolJob extends JOB_Controller
return;
}
+ // TODO: student name in abgabenstring hinzufügen
+
// group changed/new abgaben for projektarbeiten
$projektarbeiten = [];
foreach($retval as $newOrChangedAbgabe) {
@@ -79,8 +82,9 @@ class AbgabetoolJob extends JOB_Controller
// $tupel = [$projektarbeit_id, $betreuerRow], each betreuer has 0..n [projektarbeit_id, changedAbgaben] tupel
forEach($betreuerMap as $betreuer_person_id => $tupelArr) {
- $abgabenString = '
';
-
+ // start the container
+ $abgabenString = '
';
+
$result = $this->_ci->ProjektarbeitModel->getProjektbetreuerAnrede($betreuer_person_id);
$data = getData($result)[0];
@@ -94,10 +98,7 @@ class AbgabetoolJob extends JOB_Controller
$changedAbgaben = $projektarbeiten[$projektarbeit_id];
- // filter for abgaben which where not inserted by the current betreuer iteration if there is no updateamum
- // or not changed by the betreuer if there is updateamum
$relevantAbgaben = array_values(array_filter($changedAbgaben, function($abgabetermin) use ($betreuerRow) {
- // new termin not created by that betreuer
if($abgabetermin->updatevon == null && $abgabetermin->insertvon != $betreuerRow->uid) {
return $abgabetermin;
} else if($abgabetermin->updatevon != null && $abgabetermin->updatevon != $betreuerRow->uid) {
@@ -106,35 +107,59 @@ class AbgabetoolJob extends JOB_Controller
}));
if(count($relevantAbgaben) == 0) {
- break; // skip that projektarbeit if only changes originate from the betreuer in question
+ continue; // Changed break to continue to allow checking other projects in the tuple
}
$projektarbeit_titel = $relevantAbgaben[0]->titel ?? 'Kein Titel vergeben';
- $abgabenString .= 'Projektarbeit: '.$projektarbeit_titel.' ('.$betreuerRow->betreuerart_kurzbz.') ID:'.$projektarbeit_id.'
';
- $abgabenString .= 'Stg: '.$relevantAbgaben[0]->stgtyp.$relevantAbgaben[0]->stgkz.' Semester: '.$relevantAbgaben[0]->studiensemester_kurzbz.'
';
+
+ // --- Start Project Header Section ---
+ $abgabenString .= "
+
+ Projekt: {$projektarbeit_titel}
+
+ ID: {$projektarbeit_id} | Rolle: {$betreuerRow->betreuerart_kurzbz} |
+ Studiengang: {$relevantAbgaben[0]->stgtyp}{$relevantAbgaben[0]->stgkz} ({$relevantAbgaben[0]->studiensemester_kurzbz})
+
+
";
+
+ // --- Start Table ---
+ $abgabenString .= '
+
+
+
+ | Zieldatum |
+ Bezeichnung |
+ Abgabe bis |
+
+
+ ';
+
foreach ($relevantAbgaben as $abgabe) {
- $datetime = new DateTime($abgabe->datum);
- $dateEmailFormatted = $datetime->format('d.m.Y');
+ $dateEmailFormatted = (new DateTime($abgabe->datum))->format('d.m.Y');
+ $abgabedatumFormatted = (new DateTime($abgabe->abgabedatum))->format('d.m.Y');
- $datetimeAbgabe = new DateTime($abgabe->abgabedatum);
- $abgabedatumFormatted = $datetimeAbgabe->format('d.m.Y');
+ $kurzbzLine = !empty($abgabe->kurzbz) ? "
{$abgabe->kurzbz}" : "";
- $abgabenString .= ' Zieldatum: '.$dateEmailFormatted . ' ' . $abgabe->bezeichnung . '
';
- if($abgabe->kurzbz != '') {
- $abgabenString .= $abgabe->kurzbz . '
';
- }
+ $abgabenString .= "
+
+ | {$dateEmailFormatted} |
+
+ {$abgabe->bezeichnung}{$kurzbzLine}
+ |
+ {$abgabedatumFormatted} |
+
";
}
- $abgabenString .= '
';
-
-
+ $abgabenString .= '
';
}
+ $abgabenString .= '
'; // Close container
+
// done with building the change list, now send it
$betreuerRow = $tupelArr[0][1];
$path = $this->_ci->config->item('URL_MITARBEITER');
- $url = APP_ROOT.$path;
+ $url = CIS_ROOT.$path;
$body_fields = array(
'anrede' => $anrede,
@@ -173,8 +198,6 @@ class AbgabetoolJob extends JOB_Controller
$result = $this->_ci->PaabgabeModel->findAbgabenNewOrUpdatedSinceByAbgabedatum($interval);
$retval = getData($result);
- var_dump($retval);
-
// retval are paabgaben joined with projektarbeit and betreuer
if(count($retval) == 0) {
$this->logInfo("Keine Emails über neue Paabgaben an Betreuer versandt");
@@ -202,9 +225,6 @@ class AbgabetoolJob extends JOB_Controller
$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 🚀🚀🚀🚀🚀
@@ -214,19 +234,41 @@ class AbgabetoolJob extends JOB_Controller
});
$projektarbeit_titel = $abgaben[0]->titel;
- $abgabenString = '
';
+
+ // initialize the table and headers
+ $abgabenString = '
+
+
+
+ | Zieldatum |
+ Bezeichnung |
+ Abgabe bis |
+
+
+ ';
+
foreach ($abgaben as $abgabe) {
- $datetime = new DateTime($abgabe->datum);
- $dateEmailFormatted = $datetime->format('d.m.Y');
+ // format dates inline for cleaner code
+ $dateEmailFormatted = (new DateTime($abgabe->datum))->format('d.m.Y');
+ $abgabedatumFormatted = (new DateTime($abgabe->abgabedatum))->format('d.m.Y');
- $datetimeAbgabe = new DateTime($abgabe->abgabedatum);
- $abgabedatumFormatted = $datetimeAbgabe->format('d.m.Y');
+ // handle the optional Kurzbezeichnung
+ $kurzbzLine = !empty($abgabe->kurzbz) ? "
{$abgabe->kurzbz}" : "";
- $abgabenString .= 'Abgabedatum: '.$abgabedatumFormatted.' Zieldatum: '.$dateEmailFormatted . ' ' . $abgabe->bezeichnung . '
' . $abgabe->kurzbz . '
';
+ $abgabenString .= "
+
+ | {$dateEmailFormatted} |
+
+ {$abgabe->bezeichnung}{$kurzbzLine}
+ |
+ {$abgabedatumFormatted} |
+
";
}
+
+ $abgabenString .= '
';
$path = $this->_ci->config->item('URL_MITARBEITER');
- $url = APP_ROOT.$path;
+ $url = CIS_ROOT.$path;
$body_fields = array(
'anrede' => $anrede,
@@ -237,13 +279,14 @@ class AbgabetoolJob extends JOB_Controller
'linkAbgabetool' => $url
);
- // TODO: get this guys uid safely
-// $email = $betreuerRow->uid ? $betreuerRow->uid."@".DOMAIN : $betreuerRow->private_email;
-
+ $result = $this->_ci->ProjektbetreuerModel->getBetreuerOfProjektarbeit($paabgabe->projektarbeit_id, $paabgabe->betreuerart_kurzbz);
+ $data = getData($result)[0];
+
+ $email = $data->uid ? $data->uid."@".DOMAIN : $data->private_email;
// send email with bundled info
sendSanchoMail(
- 'PaabgabeUpdatesBetSM',
+ 'paabgabeUpdatesBetSM',
$body_fields,
$email,
$this->p->t('abgabetool', 'changedAbgabeterminev2')
@@ -262,7 +305,7 @@ class AbgabetoolJob extends JOB_Controller
$this->_ci->logInfo('Start job FHC-Core->notifyStudentMail');
- $interval = $this->_ci->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
+ $interval = '10 days';//$this->_ci->config->item('PAABGABE_EMAIL_JOB_INTERVAL');
$result = $this->_ci->PaabgabeModel->findAbgabenNewOrUpdatedSince($interval);
$retval = getData($result);
@@ -299,16 +342,39 @@ class AbgabetoolJob extends JOB_Controller
});
$projektarbeit_titel = $abgaben[0]->titel;
- $abgabenString = '
';
- forEach($abgaben as $abgabe) {
- $datetime = new DateTime($abgabe->datum);
- $dateEmailFormatted = $datetime->format('d.m.Y');
+
+ // initialize the table and headers
+ $abgabenString = '
+
+
+
+ | Datum |
+ Bezeichnung / Hinweis |
+
+
+ ';
- $abgabenString .= $dateEmailFormatted.' '.$abgabe->bezeichnung.' '.$abgabe->kurzbz.'
';
+ foreach ($abgaben as $abgabe) {
+ $dateEmailFormatted = (new DateTime($abgabe->datum))->format('d.m.Y');
+
+ // handle the optional Kurzbezeichnung
+ $kurzbzLine = !empty($abgabe->kurzbz) ? "
{$abgabe->kurzbz}" : "";
+
+ $abgabenString .= "
+
+ |
+ {$dateEmailFormatted}
+ |
+
+ {$abgabe->bezeichnung}{$kurzbzLine}
+ |
+
";
}
+
+ $abgabenString .= '
';
$route = $this->_ci->config->item('URL_STUDENTS');
- $url = APP_ROOT.$route;
+ $url = CIS_ROOT.$route;
$body_fields = array(
'anrede' => $data->anrede,
@@ -321,7 +387,7 @@ class AbgabetoolJob extends JOB_Controller
// send email with bundled info
sendSanchoMail(
- 'PaabgabeUpdatesSammelmail',
+ 'paabgabeUpdatesSammelmail',
$body_fields,
$uid.'@'.DOMAIN,
$this->p->t('abgabetool', 'changedAbgabeterminev2')
diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js
index 8f9b77312..8deb689c6 100644
--- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js
+++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js
@@ -140,7 +140,7 @@ export const AbgabeStudentDetail = {
return false;
}
- if(termin.bezeichnung === 'Endupload') {
+ if(termin.bezeichnung?.paabgabetyp_kurzbz === 'end') {
// open endupload form modal for further inputs
this.enduploadTermin = termin
this.$refs.modalContainerEnduploadZusatzdaten.show()