update Abfrage und Mail

This commit is contained in:
ma0068
2023-10-17 13:39:23 +02:00
parent 9fb05ad55e
commit e4ec1f2a41
2 changed files with 95 additions and 58 deletions
@@ -47,10 +47,10 @@ class ProjektarbeitJob extends JOB_Controller
$startDate = new DateTime($startDate);
$mailArray = array();
$arrayStg = array();
$countMissedAbgaben = 0;
$countTotal = 0;
$countMails = 0;
$nl = "\n";
$this->logInfo('Start Job Projektarbeit');
@@ -61,6 +61,8 @@ class ProjektarbeitJob extends JOB_Controller
if (!hasData($result))
return $this->logInfo('End Job Projektarbeit Update: 0 Mails sent');
$projektarbeiten = getData($result);
// (1) note auf 7 setzen
@@ -98,11 +100,11 @@ class ProjektarbeitJob extends JOB_Controller
'lehreinheit_id' => $projektarbeit->lehreinheit_id,
'student_uid' => $projektarbeit->student_uid,
'firma_id' => $projektarbeit->firma_id,
'punkte' => null, //TODO(manu) oder $projektarbeit->punkte
'punkte' => null,
'beginn' => null,
'ende' => null,
'faktor' => $projektarbeit->faktor,
'freigegeben' => $projektarbeit->freigegeben, //TODO(manu) besser FALSE?
'freigegeben' => $projektarbeit->freigegeben,
'gesperrtbis' => $projektarbeit->gesperrtbis,
'stundensatz' => $projektarbeit->stundensatz,
'themenbereich' => $projektarbeit->themenbereich,
@@ -112,10 +114,10 @@ class ProjektarbeitJob extends JOB_Controller
'insertamum' => $now->format('c'),
'insertvon' => 'Projektjob',
'ext_id' => $projektarbeit->ext_id,
'gesamtstunden' => null, //TODO(manu) oder $projektarbeit->gesamtstunden?
'gesamtstunden' => null,
'titel_english' => $projektarbeit->titel_english,
'sprache' => $projektarbeit->sprache,
'abgabedatum' => null, //TODO(manu) oder $projektarbeit->abgabedatum
'abgabedatum' => null,
'kontrollschlagwoerter' => $projektarbeit->kontrollschlagwoerter,
'schlagwoerter' => $projektarbeit->schlagwoerter,
'schlagwoerter_en' => $projektarbeit->schlagwoerter_en,
@@ -145,24 +147,50 @@ class ProjektarbeitJob extends JOB_Controller
$projektarbeit_copy = current(getData($result));
$projekt_id_copy = $projektarbeit_copy->projektarbeit_id;
//Start Mailarray
if (!isset($mailArray[$projekt->studiengang_kz]))
//Array Studiengänge
if (!isset($arrayStg[$projekt->studiengang_kz]))
{
$mailArray[$projekt->studiengang_kz] = $countMissedAbgaben;
$result = $this->StudiengangModel->loadWhere([
'studiengang_kz' => $projekt->studiengang_kz
]);
if (isError($result))
$this->logError(getError($result));
elseif (!hasData($result))
{
$this->logInfo('Kein Studiengang für' . $projekt->studiengang_kz . 'gefunden');
}
else
{
$studiengang = current(getData($result));
$email = $studiengang->email;
$arrayStg[$projekt->studiengang_kz] = array(
'countMissedAbgaben' => $countMissedAbgaben,
'email' => $email
);
}
}
$mailArray[$projekt->studiengang_kz] = $mailArray[$projekt->studiengang_kz] + 1;
$arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] = ($arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] + 1);
//Mailarray
$mailArray[] = array(
'studiengang_kz' => $projekt->studiengang_kz,
'projekt_id_alt' => $projekt->projektarbeit_id,
'projekt_id_neu' => $projekt_id_copy,
'student_uid' => $projekt->student_uid,
'vorname' => $projekt->vorname,
'nachname' => $projekt->nachname,
'titel' => $projekt->titel);
}
// (3)Betreuungen kopieren
$result = $this->ProjektbetreuerModel->loadWhere([
'projektarbeit_id' => $projekt->projektarbeit_id
]);
if (isError($result))
{
if (isError($result)) {
$this->logError(getError($result));
continue;
}
elseif (!hasData($result))
{
$this->logInfo('Keine Betreuung für' . $projekt->projektarbeit_id . 'gefunden');
@@ -172,16 +200,14 @@ class ProjektarbeitJob extends JOB_Controller
$betreuung = getData($result);
//error handler, catching also warnings
set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context)
{
throw new ErrorException( $err_msg, 0, $err_severity, $err_file, $err_line );
set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context) {
throw new ErrorException($err_msg, 0, $err_severity, $err_file, $err_line);
}, E_WARNING);
foreach ($betreuung as $bet)
{
foreach ($betreuung as $bet) {
$now = new Datetime();
try{
$result = $this->ProjektbetreuerModel->insert([
try {
$this->ProjektbetreuerModel->insert([
'person_id' => $bet->person_id,
'projektarbeit_id' => $projekt_id_copy,
'note' => null,
@@ -200,8 +226,7 @@ class ProjektarbeitJob extends JOB_Controller
'zugangstoken' => null,
'zugangstoken_gueltigbis' => null
]);
}
catch (ErrorException $e){
} catch (ErrorException $e) {
$this->logError("Error Insert Betreuungen, check projekt_id: " . $projekt_id_copy);
continue;
}
@@ -209,40 +234,50 @@ class ProjektarbeitJob extends JOB_Controller
restore_error_handler();
}
}
array_multisort($mailArray);
//(4)Sancho Mail
foreach ($mailArray as $stg_kz => $anzahlMissedAbgaben)
//(4) Sancho Mail
foreach ($arrayStg as $stg_kz => $item)
{
$result = $this->StudiengangModel->loadWhere([
'studiengang_kz' => $stg_kz
]);
if (isError($result))
$this->logError(getError($result));
elseif (!hasData($result))
$maildata = " <table class='table table-striped'> <thead>
<tr>
<th align=left>UID </th>
<th align=left>Name</th>
<th align=left>Projektarbeit</th>
</tr>
</thead>
<tbody>";
$email = $item['email'];
$anzahlMissedAbgaben = $item['countMissedAbgaben'];
foreach ($mailArray as $m)
{
$this->logInfo('Kein Studiengang für' . $stg_kz . 'gefunden');
}
else
{
$studiengang = current(getData($result));
$email = $studiengang->email;
$betreff = 'Versäumte Abgabe(n) Projektarbeiten / Project Work(s) not uploaded in time';
//TODO(manu) link basisurl?
$data = [
'anzahlMissedAbgaben' => $anzahlMissedAbgaben,
'link' => 'https://vilesci.technikum-wien.at/vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz=' . $stg_kz
];
$countTotal = $countTotal + $anzahlMissedAbgaben;
//send mail
if (sendSanchoMail('Sancho_Mail_Stgl_MissedAbgaben', $data, $email, $betreff)) {
//echo $nl . "Mail an Studiengang " . $stg_kz . " , Anzahl missed PAs: " . $anzahlMissedAbgaben . " email: " . $studiengang->email . $nl;
$countMails++;
if ($stg_kz == $m['studiengang_kz'])
{
$maildata .= "<tr>" .
"<td>". $m['student_uid'] . "</td>".
"<td>". trim($m['vorname'] . " " . $m['nachname']) ."</td>".
"<td>". $m['titel'] . "</td></tr>";
}
}
$maildata .= "</tbody></table>";
$betreff = 'Versäumte Abgabe(n) Projektarbeiten / Project Work(s) not uploaded in time';
$data = [
'anzahlMissedAbgaben' => $anzahlMissedAbgaben,
'link' => APP_ROOT. '/vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz=' . $stg_kz,
'table' => $maildata
];
$countTotal = $countTotal + $anzahlMissedAbgaben;
//send mail
if (sendSanchoMail('Sancho_Mail_Stgl_MissedAbgaben', $data, $email, $betreff))
{
$countMails++;
}
}
$this->logInfo($countTotal . ' projektarbeiten not uploaded in time, ' . $countMails . ' sent mails.');
$this->logInfo('End Job Projektarbeit');
}
@@ -74,7 +74,7 @@ class Projektarbeit_model extends DB_Model
/**
* Gets all Projektarbeiten not uploaded in Time
* @param String $startDate project works before this date will be ignored (in Dateformat: 'YYYY'-'mm'-'dd')
* @param String $startDate project works before this date will be ignored (in Dateformat: 'Y'-'m'-'d')
* @return object
*/
public function getAllProjektarbeitenNotUploadedInTime($startDate = null)
@@ -83,13 +83,15 @@ class Projektarbeit_model extends DB_Model
$now = new DateTime();
$this->db->distinct();
$this->addSelect($this->dbTable.'.projektarbeit_id');
$this->addSelect($this->dbTable.'.titel');
$this->addSelect($this->dbTable.'.student_uid');
$this->addSelect($this->dbTable.'.note');
$this->addSelect('p' . '.person_id');
$this->addSelect('le' . '.lehreinheit_id');
$this->addSelect('sg' . '.studiengang_kz');
$this->addSelect($this->dbTable. '.projektarbeit_id');
$this->addSelect($this->dbTable. '.titel');
$this->addSelect($this->dbTable. '.student_uid');
$this->addSelect($this->dbTable. '.note');
$this->addSelect('p'. '.person_id');
$this->addSelect('p'. '.nachname');
$this->addSelect('p'. '.vorname');
$this->addSelect('le'. '.lehreinheit_id');
$this->addSelect('sg'. '.studiengang_kz');
$this->addJoin('campus.tbl_paabgabe pa', 'projektarbeit_id');
$this->addJoin('lehre.tbl_projektbetreuer pb', 'projektarbeit_id');
@@ -104,7 +106,7 @@ class Projektarbeit_model extends DB_Model
if($startDate)
$this->db->where('pa.datum >', $startDate);
$this->db->where($this->dbTable. '.note', null); //TODO(MANU) check if note null: ausreichend?
$this->db->where($this->dbTable. '.note', null);
return $this->loadWhere([
'pa.fixtermin' => 'true',