mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-03 20:09:29 +00:00
WIP
This commit is contained in:
@@ -7,7 +7,7 @@ $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_JOB_INTERVAL'] = '1 day';
|
||||
$config['PAABGABE_EMAIL_JOB_INTERVAL'] = '2 day';
|
||||
// used as APP_ROOT.URL_STUDENTS -> cis4
|
||||
$config['URL_STUDENTS'] = 'cis.php/Cis/Abgabetool/Student';
|
||||
// used as APP_ROOT.URL_MITARBEITER -> old cis
|
||||
|
||||
@@ -1169,7 +1169,7 @@ class Abgabe extends FHCAPI_Controller
|
||||
}
|
||||
|
||||
// for each projektarbeit fetch their betreuer and save them in their own dictionary to avoid too many mails
|
||||
$betreuer = [];
|
||||
$betreuerMap = [];
|
||||
forEach($projektarbeiten as $projektarbeit_id => $abgaben) {
|
||||
$betreuerResult = $this->_ci->ProjektbetreuerModel->getAllBetreuerOfProjektarbeit($projektarbeit_id);
|
||||
|
||||
@@ -1177,22 +1177,110 @@ class Abgabe extends FHCAPI_Controller
|
||||
// $projektarbeit->betreuer = $betreuerResult;
|
||||
forEach($betreuerResult->retval as $betreuerRow) {
|
||||
|
||||
}
|
||||
if (isset($betreuerResult->projektarbeit_id)) {
|
||||
$projektarbeitId = $newOrChangedAbgabe->projektarbeit_id;
|
||||
|
||||
// If the 'projektarbeit_id' is not yet a key in $projektarbeiten,
|
||||
// initialize it as an empty array.
|
||||
if (!isset($projektarbeiten[$projektarbeitId])) {
|
||||
$projektarbeiten[$projektarbeitId] = [];
|
||||
if (!isset($betreuerMap[$betreuerRow->person_id])) {
|
||||
$betreuerMap[$betreuerRow->person_id] = [];
|
||||
}
|
||||
|
||||
|
||||
// Add the current row to the array associated with its 'projektarbeit_id'.
|
||||
$projektarbeiten[$projektarbeitId][] = $newOrChangedAbgabe;
|
||||
$betreuerMap[$betreuerRow->person_id][] = [$projektarbeit_id, $betreuerRow];
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
// now iterate over the betreuerMap and build 1 email about all projektarbeiten and their new/changed termine
|
||||
|
||||
// $tupel = [$projektarbeit_id, $betreuerRow], each betreuer has 0..n [projektarbeit_id, changedAbgaben] tupel
|
||||
forEach($betreuerMap as $betreuer_person_id => $tupelArr) {
|
||||
|
||||
$abgabenString = '<br /><br />';
|
||||
|
||||
// $betreuerRow = $tupel[1];
|
||||
$result = $this->_ci->ProjektarbeitModel->getProjektbetreuerAnrede($betreuer_person_id);
|
||||
$data = getData($result)[0];
|
||||
|
||||
$anrede = $data->anrede;
|
||||
$anredeFillString = $data->anrede == "Herr" ? "r" : "";
|
||||
$fullFormattedNameString = $data->first;
|
||||
|
||||
forEach($tupelArr as $tupel) {
|
||||
$projektarbeit_id = $tupel[0];
|
||||
$betreuerRow = $tupel[1];
|
||||
|
||||
|
||||
|
||||
$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_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) {
|
||||
return $abgabetermin;
|
||||
}
|
||||
});
|
||||
|
||||
if(count($relevantAbgaben) == 0) {
|
||||
break; // skip that projektarbeit if only changes originate from the betreuer in question
|
||||
}
|
||||
|
||||
$projektarbeit_titel = $relevantAbgaben[0]->titel ?? 'Kein Titel vergeben';
|
||||
// $abgabenString = '<br /><br />';
|
||||
$abgabenString .= 'Projektarbeit: '.$projektarbeit_titel.' ('.$betreuerRow->betreuerart_kurzbz.') ID:'.$projektarbeit_id.'<br/>';
|
||||
$abgabeString .= 'Stg: '.$stgtyp.$stgkz.'<br/>';
|
||||
foreach ($relevantAbgaben 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 .= ' Zieldatum: '.$dateEmailFormatted . ' ' . $abgabe->bezeichnung . ' <br /> ';
|
||||
if($abgabe->kurzbz != '') {
|
||||
$abgabenString .= $abgabe->kurzbz . '<br />';
|
||||
}
|
||||
}
|
||||
|
||||
$abgabenString .= '<br/><br/>';
|
||||
|
||||
|
||||
}
|
||||
|
||||
// done with building the change list, now send it
|
||||
$betreuerRow = $tupelArr[0][1];
|
||||
|
||||
|
||||
$path = $this->_ci->config->item('URL_MITARBEITER');
|
||||
$url = APP_ROOT.$path;
|
||||
|
||||
$body_fields = array(
|
||||
'anrede' => $anrede,
|
||||
'anredeFillString' => $anredeFillString,
|
||||
'fullFormattedNameString' => $fullFormattedNameString,
|
||||
'abgabenString' => $abgabenString,
|
||||
'linkAbgabetool' => $url
|
||||
);
|
||||
|
||||
// if(count($tupelArr) <= 2) break; // testing code
|
||||
|
||||
// send email with bundled info
|
||||
sendSanchoMail(
|
||||
'PAAChangesBetSM',
|
||||
$body_fields,
|
||||
$betreuerRow->private_email,
|
||||
$this->p->t('abgabetool', 'changedAbgabeterminev2')
|
||||
);
|
||||
|
||||
$count++;
|
||||
}
|
||||
|
||||
$this->addMeta('$projektarbeiten', $projektarbeiten);
|
||||
$this->addMeta('$betreuerMap', $betreuerMap);
|
||||
// $result = $this->_ci->PaabgabeModel->findNewOrChangedTermineByOtherUsersSince($interval);
|
||||
|
||||
|
||||
|
||||
@@ -101,7 +101,6 @@ class AbgabetoolJob extends JOB_Controller
|
||||
$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;
|
||||
|
||||
@@ -64,16 +64,20 @@ class Paabgabe_model extends DB_Model
|
||||
public function findAbgabenNewOrUpdatedSince($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
|
||||
FROM campus.tbl_paabgabe
|
||||
JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
|
||||
WHERE campus.tbl_paabgabe.insertamum >= NOW() - INTERVAL ?
|
||||
OR campus.tbl_paabgabe.updateamum >= NOW() - INTERVAL ?
|
||||
";
|
||||
$query = "SELECT projektarbeit_id, paabgabe_id, paabgabetyp_kurzbz, fixtermin, datum, campus.tbl_paabgabe.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,
|
||||
UPPER(tbl_studiengang.typ) as stgtyp, UPPER(tbl_studiengang.kurzbz) as stgkz
|
||||
FROM campus.tbl_paabgabe
|
||||
JOIN campus.tbl_paabgabetyp USING (paabgabetyp_kurzbz)
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang on(lehre.tbl_lehrveranstaltung.studiengang_kz=public.tbl_studiengang.studiengang_kz)
|
||||
|
||||
|
||||
WHERE campus.tbl_paabgabe.insertamum >= NOW() - INTERVAL ?
|
||||
OR campus.tbl_paabgabe.updateamum >= NOW() - INTERVAL ?";
|
||||
|
||||
return $this->execQuery($query, [$interval, $interval]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user