From 13ad972bd1e2e66a12629fbed0810847fedbc7a8 Mon Sep 17 00:00:00 2001 From: ma0068 Date: Fri, 14 Mar 2025 13:54:24 +0100 Subject: [PATCH] changes for not copied projektarbeiten and due to testing --- application/config/projektarbeit.php | 2 +- .../controllers/jobs/ProjektarbeitJob.php | 78 ++++++++++++++----- .../models/education/Projektarbeit_model.php | 29 +++++-- 3 files changed, 81 insertions(+), 28 deletions(-) diff --git a/application/config/projektarbeit.php b/application/config/projektarbeit.php index 391688107..3365278f5 100644 --- a/application/config/projektarbeit.php +++ b/application/config/projektarbeit.php @@ -6,7 +6,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); * before this date projektarbeiten failed do upload in time will be ignored * @var string string formated as Date */ -$config['projektarbeitjob_start'] = '2023-09-01'; +$config['projektarbeitjob_start'] = '2023-06-01'; /** * projektarbeiten bachelor will not be copied anymore after this amount of already existing diff --git a/application/controllers/jobs/ProjektarbeitJob.php b/application/controllers/jobs/ProjektarbeitJob.php index 7b7bedf8c..2016181ec 100644 --- a/application/controllers/jobs/ProjektarbeitJob.php +++ b/application/controllers/jobs/ProjektarbeitJob.php @@ -49,11 +49,13 @@ class ProjektarbeitJob extends JOB_Controller $mailArray = array(); $arrayStg = array(); $countMissedAbgaben = 0; + $countNotCopied = 0; $countTotal = 0; $countMails = 0; $projektarbeiten = []; $this->logInfo('Start Job Projektarbeit'); + //print_r( PHP_EOL . "Start Job Projektarbeit" . PHP_EOL); //get all Projektarbeiten not Uploaded in Time $resultNotUploaded = $this->ProjektarbeitModel->getAllProjektarbeitenNotUploadedInTime($startDate->format('c')); @@ -84,14 +86,15 @@ class ProjektarbeitJob extends JOB_Controller if (!hasData($resultNotUploaded) && !hasData($resultNegative || $resultNotUploaded) == [] && $resultNegative == []) - return $this->logInfo('End Job Projektarbeit Update: 0 Mails sent'); + return print_r('End Job Projektarbeit Update: 0 Mails sent'); + // return $this->logInfo('End Job Projektarbeit Update: 0 Mails sent'); if (is_array($projektarbeitenNotUploaded) && is_array($projektarbeitenNegative)) { $projektarbeiten = array_merge($projektarbeitenNotUploaded, $projektarbeitenNegative); } - // (1) set mark to 5 + // (1) set mark to 7 foreach ($projektarbeiten as $projekt) { $this->db->where('projektarbeit_id', $projekt->projektarbeit_id); @@ -101,7 +104,7 @@ class ProjektarbeitJob extends JOB_Controller $result = $this->ProjektarbeitModel->update([ 'projektarbeit_id' => $projekt->projektarbeit_id ], [ - 'note' => 5 + 'note' => 7 ]); if (isError($result)) { @@ -109,13 +112,9 @@ class ProjektarbeitJob extends JOB_Controller } } -/* else //log not necessary: always the case for negative marks - { - $this->logInfo('Note für Projektarbeit für projektarbeit_id ' . $projekt->projektarbeit_id . 'bereits vorhanden'); - }*/ - // (2) copy Projektarbeit //no more copying if count bakk >= 6 or count_diplom >= 3 + $end_of_copy_bachelor = $this->config->item('projektarbeitjob_finishCopy_bachelor') ? $this->config->item('projektarbeitjob_finishCopy_bachelor') : 6; $end_of_copy_master = $this->config->item('projektarbeitjob_finishCopy_diplom') ? $this->config->item('projektarbeitjob_finishCopy_diplom') : 3; @@ -126,6 +125,31 @@ class ProjektarbeitJob extends JOB_Controller ); if ($maxCountReached) { + $countNotCopied++; + $result = $this->StudiengangModel->loadWhere([ + 'studiengang_kz' => $projekt->studiengang_kz + ]); + if (isError($result)) + { + $this->logError(getError($result)); + } + + if (!hasData($result)) + { + //print_r('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found'); + + $this->logInfo('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found'); + } + $studiengang = current(getData($result)); + $email = $studiengang->email; + + $arrayStg[$projekt->studiengang_kz] = array( + 'countNotCopied' => $countNotCopied, + 'email' => $email, + 'countMissedAbgaben' => $countMissedAbgaben, + ); +/* print_r("Max count of enduploads reached: " . $projekt->student_uid . ",id:" . $projekt->projektarbeit_id . " " . $projekt->studiengang_kz . PHP_EOL); + print_r("Count of not copied: " . $countNotCopied . PHP_EOL);*/ continue; } @@ -137,6 +161,7 @@ class ProjektarbeitJob extends JOB_Controller } if (!hasData($result2)) { + //print_r('No Projektarbeit found for projektarbeit_id ' . $projekt->projektarbeit_id); $this->logInfo('No Projektarbeit found for projektarbeit_id ' . $projekt->projektarbeit_id); continue; } @@ -190,6 +215,7 @@ class ProjektarbeitJob extends JOB_Controller } elseif (!hasData($result)) { + //print_r('No projektarbeit_id for studentId ' . $projektarbeit->student_uid . ' found'); $this->logInfo('No projektarbeit_id for studentId ' . $projektarbeit->student_uid . ' found'); continue; } @@ -209,22 +235,24 @@ class ProjektarbeitJob extends JOB_Controller $this->logError(getError($result)); } - elseif (!hasData($result)) + if (!hasData($result)) { + //print_r('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found'); + $this->logInfo('No Studiengang for studiengang_kz ' . $projekt->studiengang_kz . ' found'); } - else - { - $studiengang = current(getData($result)); - $email = $studiengang->email; + $studiengang = current(getData($result)); + $email = $studiengang->email; - $arrayStg[$projekt->studiengang_kz] = array( - 'countMissedAbgaben' => $countMissedAbgaben, - 'email' => $email - ); - } + $arrayStg[$projekt->studiengang_kz] = array( + 'countMissedAbgaben' => $countMissedAbgaben++, + 'email' => $email, + 'countNotCopied' => $countNotCopied, + ); + } + else { + $arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] = $countMissedAbgaben++; } - $arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] = ($arrayStg[$projekt->studiengang_kz]['countMissedAbgaben'] + 1); //Mailarray $reason = $projekt->reason ? $projekt->reason : null; @@ -251,6 +279,8 @@ class ProjektarbeitJob extends JOB_Controller } elseif (!hasData($result)) { + //print_r('No Betreuung found for projektarbeit_id ' . $projekt->projektarbeit_id); + $this->logInfo('No Betreuung found for projektarbeit_id ' . $projekt->projektarbeit_id); } else @@ -309,7 +339,11 @@ class ProjektarbeitJob extends JOB_Controller "; $email = $item['email']; + + //TODO(Manu) Total counts + //change to counts / STG or keep mailtext countfree $anzahlMissedAbgaben = $item['countMissedAbgaben']; + $anzahlNichtKopierteProjektarbeiten = $item['countNotCopied']; foreach ($mailArray as $m) { @@ -326,7 +360,8 @@ class ProjektarbeitJob extends JOB_Controller $betreff = 'Kopierte Projektarbeiten / Project Work(s) copied'; $data = [ - 'anzahlMissedAbgaben' => $anzahlMissedAbgaben, +/* 'anzahlMissedAbgaben' => $anzahlMissedAbgaben, + 'anzahlNichtKopierteProjektarbeiten' => $anzahlNichtKopierteProjektarbeiten,*/ 'link' => APP_ROOT. '/vilesci/lehre/abgabe_assistenz_frameset.php?stg_kz=' . $stg_kz, 'table' => $maildata ]; @@ -340,6 +375,9 @@ class ProjektarbeitJob extends JOB_Controller } } +/* print_r( PHP_EOL. $countTotal . ' projektarbeiten copied, ' . $countMails . ' sent mails.' . PHP_EOL); + print_r('End Job Projektarbeit' . PHP_EOL);*/ + $this->logInfo($countTotal . ' projektarbeiten copied, ' . $countMails . ' sent mails.'); $this->logInfo('End Job Projektarbeit'); } diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php index 4f0ae3013..5ed1593d6 100644 --- a/application/models/education/Projektarbeit_model.php +++ b/application/models/education/Projektarbeit_model.php @@ -109,16 +109,18 @@ class Projektarbeit_model extends DB_Model $this->db->where($this->dbTable. '.note', null); + //TODO(Manu) remove comments for testdata sg.studiengang_kz $result = $this->loadWhere([ + 'ben.aktiv' => 'true', 'pa.fixtermin' => 'true', 'pa.paabgabetyp_kurzbz' => 'end', 'pa.abgabedatum' => null, 'pa.datum < ' => $now->format('c'), +/* 'sg.studiengang_kz' => 255*/ ]); - $query = $this->db->last_query(); - var_dump($query); - if ($result) + //Testausgaben +/* if ($result) { echo "(UPDATE lehre.tbl_projektarbeit pa SET note = NULL @@ -133,7 +135,8 @@ class Projektarbeit_model extends DB_Model echo ")\n"; } - } + }*/ + return $result; } @@ -176,10 +179,12 @@ class Projektarbeit_model extends DB_Model $this->db->where('NOT EXISTS (SELECT 1 FROM lehre.tbl_projektarbeit AS sub WHERE sub.student_uid = lehre.tbl_projektarbeit.student_uid AND sub.note IN (1, 2, 3, 4))', null, false); $this->db->where('ben.aktiv', true); + //TODO(Manu) remove comments for Testdata 'sg.studiengang_kz' => 331 $result = $this->loadWhere([ 'pa.fixtermin' => 'true', 'pa.paabgabetyp_kurzbz' => 'end', 'pa.datum < ' => $now->format('c'), +/* 'sg.studiengang_kz' => 255*/ ]); return $result; @@ -193,16 +198,20 @@ class Projektarbeit_model extends DB_Model */ public function checkifCountMaxProjektarbeiten($student_uid, $end_of_copy_bachelor, $end_of_copy_master) { - $qry = "SELECT COUNT(*), projekttyp_kurzbz - FROM lehre.tbl_projektarbeit AS sub - WHERE sub.student_uid = ? + FROM lehre.tbl_projektarbeit + WHERE student_uid = ? GROUP BY projekttyp_kurzbz"; $params = array($student_uid); $result = $this->execQuery($qry, $params); + //TODO(Manu) wait for final logic or adaptions quality gates + //meanwhile copying of all enduploads with fixed entries + //counting after each step: example for testdata with student_uid where 1 project is copied before hitting limit + // if($student_uid == "mr21m015") + if (!empty($result->retval)) { foreach ($result->retval as $row) @@ -211,10 +220,16 @@ class Projektarbeit_model extends DB_Model $projekttyp = $row->projekttyp_kurzbz; if ($projekttyp === 'Bachelor' && $count > $end_of_copy_bachelor) + { + //TODO(Manu) remove comments testdata + //print_r(PHP_EOL . 'LIMIT REACHED Bakk: ' . $student_uid .' Anzahl Abgaben ' . $count . PHP_EOL); return true; + } if ($projekttyp === 'Diplom' && $count > $end_of_copy_master) { + //TODO(Manu) remove comments testdata + //print_r(PHP_EOL . 'LIMIT REACHED Dipl: ' . $student_uid .' Anzahl Abgaben ' . $count . PHP_EOL); return true; } }