From 2056150917b376fc5ddfb5cb1e5feaef8dc08f02 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 7 Sep 2022 12:18:27 +0200 Subject: [PATCH] Code quality improvements --- .../controllers/jobs/ReihungstestJob.php | 150 ++++++++++++------ application/models/CL/Messages_model.php | 60 ++++--- application/models/crm/Reihungstest_model.php | 24 ++- 3 files changed, 159 insertions(+), 75 deletions(-) diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php index 446f084b1..16a231575 100644 --- a/application/controllers/jobs/ReihungstestJob.php +++ b/application/controllers/jobs/ReihungstestJob.php @@ -1,6 +1,26 @@ . + */ + if (!defined('BASEPATH')) exit('No direct script access allowed'); +use \stdClass as stdClass; +use \DateTime as DateTime; + class ReihungstestJob extends JOB_Controller { const OU_SENDER_TEST_REMINDER = 'infocenter'; @@ -26,7 +46,6 @@ class ReihungstestJob extends JOB_Controller // Loads CLMessagesModel $this->load->model('CL/Messages_model', 'CLMessagesModel'); - } /** @@ -70,7 +89,8 @@ class ReihungstestJob extends JOB_Controller 'ReihungstestJob', $content_data_arr, MAIL_INFOCENTER, - 'Support für die Reihungstest-Verwaltung'); + 'Support für die Reihungstest-Verwaltung' + ); } } @@ -119,6 +139,8 @@ class ReihungstestJob extends JOB_Controller foreach ($reachedRegistration_rt_arr as $reihungstest) { + $reihungstestDatum = date_format(date_create($reihungstest->datum), 'd.m.Y'); + $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTestForCronjob($reihungstest->reihungstest_id); if (hasData($applicants)) @@ -159,14 +181,22 @@ class ReihungstestJob extends JOB_Controller } if ($applicantCounter == 0) { - $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; - $mailcontent .= '

Für den Studiengang '.$studiengang_kuerzel.' nehmen keine InteressentInnen an diesem Reihungstest teil

'; + $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . + $reihungstestDatum . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + + $mailcontent .= '

Für den Studiengang '. + $studiengang_kuerzel. + ' nehmen keine InteressentInnen an diesem Reihungstest teil

'; } else { - $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . + $reihungstestDatum . + ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + $mailcontent .= ' -

' . $applicantCounter . ' InteressentIn(nen) des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:

+

' . $applicantCounter . ' InteressentIn(nen) des Studiengangs ' . + $studiengang_kuerzel . ' nehmen daran teil:

Liste der Anmeldungen @@ -182,12 +212,13 @@ class ReihungstestJob extends JOB_Controller 'Sancho_ReihungstestteilnehmerJob', $mailcontent_data_arr, $bachelorStudiengang->email, - 'Anmeldeschluss Reihungstest ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' ' . $reihungstest->uhrzeit . ' Uhr', + 'Anmeldeschluss Reihungstest ' . $reihungstestDatum . ' ' . $reihungstest->uhrzeit . ' Uhr', 'sancho_header_min_bw.jpg', 'sancho_footer_min_bw.jpg', $from, '', - $bcc); + $bcc + ); } } } @@ -235,7 +266,6 @@ class ReihungstestJob extends JOB_Controller } $studiengang = ''; - $mailReceipients = ''; // String with all mailadresses $mailcontent_data_arr = array(); $headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"'; $rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"'; @@ -254,10 +284,10 @@ class ReihungstestJob extends JOB_Controller $mailcontent .= $applicants_list; $mailcontent .= ''; $mailcontent .= '

- - Liste der Anmeldungen - -

'; + + Liste der Anmeldungen + +

'; $mailcontent_data_arr['table'] = $mailcontent; sendSanchoMail( 'Sancho_ReihungstestteilnehmerJob', @@ -268,12 +298,15 @@ class ReihungstestJob extends JOB_Controller 'sancho_footer_min_bw.jpg', $from, '', - $bcc); + $bcc + ); $applicants_list = ''; $mailcontent_data_arr = array(); } - $mailcontent = '

Folgende InteressentInnen wurden nach der Anmeldefrist zu einem Reihungstest hinzugefügt.
Details siehe Link

'; + $mailcontent = '

+ Folgende InteressentInnen wurden nach der Anmeldefrist zu einem Reihungstest hinzugefügt.
Details siehe Link +

'; $mailcontent .= ' @@ -289,7 +322,6 @@ class ReihungstestJob extends JOB_Controller } $studiengang = $applicant->studiengang_kz; - $mailReceipients .= $applicant->email . ';'; $applicants_list .= ' @@ -305,10 +337,10 @@ class ReihungstestJob extends JOB_Controller $mailcontent .= $applicants_list; $mailcontent .= '
' . date_format(date_create($applicant->datum), 'd.m.Y') . '
'; $mailcontent .= '

- - Liste der Anmeldungen - -

'; + + Liste der Anmeldungen + +

'; $mailcontent_data_arr['table'] = $mailcontent; sendSanchoMail( 'Sancho_ReihungstestteilnehmerJob', @@ -319,7 +351,8 @@ class ReihungstestJob extends JOB_Controller 'sancho_footer_min_bw.jpg', $from, '', - $bcc); + $bcc + ); } } @@ -364,7 +397,8 @@ class ReihungstestJob extends JOB_Controller $testsOndate = array(); // Deduct days till 2 working days are reached - for ($i = 1; ; $i++) + // NOTE: the condition is to avoid a never ending loop + for ($i = 1; $workingdays < 10; $i++) { if (isDateWorkingDay($testDates->datum, $i) === true) { @@ -413,7 +447,7 @@ class ReihungstestJob extends JOB_Controller show_error(getError($applicants)); } - if(!empty($applicants_arr)) + if (!empty($applicants_arr)) { foreach ($applicants_arr as $applicant) { @@ -435,7 +469,7 @@ class ReihungstestJob extends JOB_Controller $sender_id = $this->config->item('system_person_id'); - $sendMessage = $this->CLMessagesModel->sendExplicitTemplateSenderId( + $this->CLMessagesModel->sendExplicitTemplateSenderId( $sender_id, $applicant->prestudent_id, self::OU_SENDER_TEST_REMINDER, @@ -504,7 +538,7 @@ class ReihungstestJob extends JOB_Controller person_id, tbl_reihungstest.studiensemester_kurzbz, tbl_reihungstest.reihungstest_id, - (SELECT(tbl_reihungstest.datum::text || \' \' || tbl_reihungstest.uhrzeit::text)::timestamp) AS reihungstest_timestamp + (SELECT(tbl_reihungstest.datum::text || \' \' || tbl_reihungstest.uhrzeit::text)::timestamp) as reihungstest_timestamp '); $this->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz'); $this->PrestudentModel->addJoin('public.tbl_studiengangstyp', 'typ'); @@ -550,11 +584,9 @@ class ReihungstestJob extends JOB_Controller } // Sort by STG. This is important to send the mails clustered by STG to the different STG assistances. - usort($result_arr, function ($a, $b) - { - if ($a->studiengang_kz == $b->studiengang_kz) { - return 0; - } + usort($result_arr, function ($a, $b) { + if ($a->studiengang_kz == $b->studiengang_kz) return 0; + return ($a->studiengang_kz < $b->studiengang_kz) ? -1 : 1; }); @@ -697,6 +729,7 @@ class ReihungstestJob extends JOB_Controller } // Set associative array with the prepared HTML tables and URL be used by the template's variables + $content_data_arr = array(); $content_data_arr['studienplan_list'] = $studienplan_list; $content_data_arr['freie_plaetze_list'] = $freie_plaetze_list; $content_data_arr['link'] = site_url('/organisation/Reihungstest'); @@ -719,7 +752,9 @@ class ReihungstestJob extends JOB_Controller $counter++; } + $content_data_arr = array(); $content_data_arr['link'] = $content; + return $content_data_arr; } @@ -818,13 +853,13 @@ class ReihungstestJob extends JOB_Controller return; } - $qry = "WITH prst AS ( + $qry = "WITH prst as ( SELECT DISTINCT - get_rolle_prestudent (tbl_prestudent.prestudent_id, ?) AS laststatus, + get_rolle_prestudent (tbl_prestudent.prestudent_id, ?) as laststatus, tbl_prestudentstatus.studiensemester_kurzbz, - tbl_prestudentstatus.datum AS prestudenstatus_datum, + tbl_prestudentstatus.datum as prestudenstatus_datum, tbl_prestudent.*, - tbl_studiengang.typ AS studiengang_typ + tbl_studiengang.typ as studiengang_typ FROM PUBLIC.tbl_person JOIN PUBLIC.tbl_prestudent USING (person_id) JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) @@ -837,11 +872,21 @@ class ReihungstestJob extends JOB_Controller ) SELECT * FROM prst WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - 1) - AND (studiengang_typ = 'b' OR (studiengang_typ = 'm' AND EXISTS (SELECT 1 /* Master Studiengänge berücksichtigen wenn auch Bachelor im gleichen Semester */ - FROM prst prstb - WHERE studiengang_typ = 'b' - AND laststatus != 'Abgewiesener' - AND prstb.person_id = prst.person_id ))) + AND ( + studiengang_typ = 'b' + OR + ( + studiengang_typ = 'm' + AND + EXISTS ( + SELECT 1 /* Master Studiengänge berücksichtigen wenn auch Bachelor im gleichen Semester */ + FROM prst prstb + WHERE studiengang_typ = 'b' + AND laststatus != 'Abgewiesener' + AND prstb.person_id = prst.person_id + ) + ) + ) ORDER BY studiengang_kz, laststatus"; // Encode Params @@ -873,12 +918,12 @@ class ReihungstestJob extends JOB_Controller // Alle niedrigeren Prios laden $qryNiedrPrios = " SELECT DISTINCT - get_rolle_prestudent (tbl_prestudent.prestudent_id, '".$row_ps->studiensemester_kurzbz."') AS laststatus, + get_rolle_prestudent (tbl_prestudent.prestudent_id, '".$row_ps->studiensemester_kurzbz."') as laststatus, tbl_studienplan.orgform_kurzbz, tbl_person.nachname, tbl_person.vorname, tbl_prestudent.*, - tbl_studiengang.typ AS studiengang_typ + tbl_studiengang.typ as studiengang_typ FROM PUBLIC.tbl_person JOIN PUBLIC.tbl_prestudent USING (person_id) JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) @@ -1029,12 +1074,12 @@ class ReihungstestJob extends JOB_Controller // Mails senden if (!isEmptyArray($mailArray)) { - foreach ($mailArray AS $stg=>$orgform) + foreach ($mailArray as $stg => $orgform) { $studiengang = $this->StudiengangModel->load($stg); $mailcontent = ''; - foreach ($orgform AS $art=>$value) + foreach ($orgform as $art => $value) { // Orgform nur dazu schreiben, wenn es mehr als Eine gibt if (count($orgform) > 1) @@ -1044,12 +1089,12 @@ class ReihungstestJob extends JOB_Controller if (isset($value['AbgewiesenGesetztWartender']) && !isEmptyArray($value['AbgewiesenGesetztWartender'])) { $mailcontent .= '

- Folgende Personen auf der Warteliste wurden in einem höher priorisierten Studiengang aufgenommen und haben deshalb einen Status "Abgewiesen" erhalten:

'; + Folgende Personen auf der Warteliste wurden in einem höher priorisierten Studiengang aufgenommen und haben deshalb einen Status "Abgewiesen" erhalten: +

'; $mailcontent .= ''; - //$mailcontent .= ''; $mailcontent .= ' '; sort($value['AbgewiesenGesetztWartender']); - foreach ($value['AbgewiesenGesetztWartender'] AS $key=>$bewerber) + foreach ($value['AbgewiesenGesetztWartender'] as $key => $bewerber) { $mailcontent .= ''; } @@ -1060,10 +1105,9 @@ class ReihungstestJob extends JOB_Controller $mailcontent .= '

Folgende Aufgenommene wurden in einem höher priorisierten Studiengang aufgenommen:

'; $mailcontent .= '
Zuvor Warteliste
'.$bewerber.'
'; - //$mailcontent .= ''; $mailcontent .= ' '; sort($value['AufnahmeHoeherePrio']); - foreach ($value['AufnahmeHoeherePrio'] AS $key=>$bewerber) + foreach ($value['AufnahmeHoeherePrio'] as $key => $bewerber) { $mailcontent .= ''; } @@ -1076,7 +1120,7 @@ class ReihungstestJob extends JOB_Controller $mailcontent .= '
Aufgenommene
'.$bewerber.'
'; $mailcontent .= ' '; sort($value['AbgewiesenHoeherePrio']); - foreach ($value['AbgewiesenHoeherePrio'] AS $key=>$bewerber) + foreach ($value['AbgewiesenHoeherePrio'] as $key => $bewerber) { $mailcontent .= ''; } @@ -1087,10 +1131,9 @@ class ReihungstestJob extends JOB_Controller $mailcontent .= '

Folgende BewerberInnen wurden zu Abgewiesenen gemacht:

'; $mailcontent .= '
'.$bewerber.'
'; - //$mailcontent .= ''; $mailcontent .= ' '; sort($value['AbgewiesenWeilBewerber']); - foreach ($value['AbgewiesenWeilBewerber'] AS $key => $bewerber) + foreach ($value['AbgewiesenWeilBewerber'] as $key => $bewerber) { $mailcontent .= ''; } @@ -1098,6 +1141,7 @@ class ReihungstestJob extends JOB_Controller } } + $mailcontent_data_arr = array(); $mailcontent_data_arr['table'] = $mailcontent; // Send email in Sancho design @@ -1112,9 +1156,11 @@ class ReihungstestJob extends JOB_Controller 'sancho_footer_min_bw.jpg', $from, '', - $bcc); + $bcc + ); } } } } } + diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php index cff5d1285..da17eb5f9 100644 --- a/application/models/CL/Messages_model.php +++ b/application/models/CL/Messages_model.php @@ -1,4 +1,23 @@ . + */ + +use \stdClass as stdClass; +use \DateTime as DateTime; /** * Messages GUI logic @@ -27,6 +46,7 @@ class Messages_model extends CI_Model const TYPE_PRESTUDENTS = 'prestudents'; const ALT_OE = 'infocenter'; // alternative organisation unit when no one is found for a presetudent + const SYSTEM_SENDER_NAME = 'System sender'; /** * Constructor @@ -52,7 +72,6 @@ class Messages_model extends CI_Model $this->load->model('person/Benutzer_model', 'BenutzerModel'); // Loads model Studiengang_model $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - } //------------------------------------------------------------------------------------------------------------------ @@ -283,7 +302,7 @@ class Messages_model extends CI_Model if (isError($srmsbtResult)) show_error(getError($srmsbtResult)); // Sender name - $sender = 'System sender'; // default fallback + $sender = self::SYSTEM_SENDER_NAME; // default fallback // If the sender is a person if (isEmptyString($message->oe_kurzbz)) @@ -495,11 +514,11 @@ class Messages_model extends CI_Model // Get the senders uid (if user is an active employee) $this->BenutzerModel->addSelect('uid'); $this->BenutzerModel->addJoin('public.tbl_mitarbeiter ma', 'ma.mitarbeiter_uid = uid'); - if (!$result = getData($this->BenutzerModel->getFromPersonId($sender_id))) - { - show_error('No sender_uid found'); - } - $sender_uid = $result[0]->uid; + $benutzerResult = $this->BenutzerModel->getFromPersonId($sender_id); + if (isError($benutzerResult)) show_error(getError($benutzerResult)); + if (!hasData($benutzerResult)) show_error('No sender uid found'); + + $sender_uid = getData($benutzerResult)[0]->uid; // Adds the organisation unit to each prestudent if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData)) @@ -552,8 +571,6 @@ class Messages_model extends CI_Model if (isError($senderResult)) show_error(getError($senderResult)); if (!hasData($senderResult)) show_error('No sender information found'); - $sender = getData($senderResult)[0]; // Found sender data - $messageResult = $this->MessageTokenModel->getMessageByToken($token); if (isError($messageResult)) show_error(getError($messageResult)); // Security check! It is possible to reply only to a received message!! @@ -783,7 +800,10 @@ class Messages_model extends CI_Model { return sprintf( self::REPLY_BODY_FORMAT, - date_format(date_create($sentDate), 'd.m.Y H:i'), $receiverName, $receiverSurname, $body + date_format(date_create($sentDate), 'd.m.Y H:i'), + $receiverName, + $receiverSurname, + $body ); } @@ -948,18 +968,20 @@ class Messages_model extends CI_Model if (!is_object($otherMsgVarsDataObj)) show_error('Must pass an object to merge with data of logged in user'); // If it is a return object, extract the simple data object - if (isSuccess($otherMsgVarsDataObj)) - { - $otherMsgVarsDataObj = getData($otherMsgVarsDataObj)[0]; - } + if (isSuccess($otherMsgVarsDataObj)) $otherMsgVarsDataObj = getData($otherMsgVarsDataObj)[0]; // Retrieve message vars data of the logged in user - if (!$msgVarsDataLoggedInUser = getData($this->MessageModel->getMsgVarsDataByLoggedInUser($uid))[0]) - { - return success(array($otherMsgVarsDataObj)); // If failed, return at least given object as expected success object - } + $msgVarsDataLoggedInUserResult = $this->MessageModel->getMsgVarsDataByLoggedInUser($uid); + if (isError($msgVarsDataLoggedInUserResult)) show_error(getError($msgVarsDataLoggedInUserResult)); - return success(array((object)(array_merge((array) $otherMsgVarsDataObj, (array) $msgVarsDataLoggedInUser)))); + // If no data have been found return only the given otherMsgVarsDataObj + if (!hasData($msgVarsDataLoggedInUserResult)) return success(array($otherMsgVarsDataObj)); + // Otherwise get them... + $msgVarsDataLoggedInUser = getData($this->MessageModel->getMsgVarsDataByLoggedInUser($uid))[0]; + + // ...and return them merged with the otherMsgVarsDataObj + return success(array((object)(array_merge((array)$otherMsgVarsDataObj, (array)$msgVarsDataLoggedInUser)))); } } + diff --git a/application/models/crm/Reihungstest_model.php b/application/models/crm/Reihungstest_model.php index 22f503506..3d6c229b4 100644 --- a/application/models/crm/Reihungstest_model.php +++ b/application/models/crm/Reihungstest_model.php @@ -1,4 +1,20 @@ . + */ class Reihungstest_model extends DB_Model { @@ -432,10 +448,10 @@ class Reihungstest_model extends DB_Model } /** - * Loads all applicants of a placement test - * @param integer $reihungstest_id ID of placement test - * @return array Returns object array with data of applicants. - */ + * Loads all applicants of a placement test + * @param integer $reihungstest_id ID of placement test + * @return array Returns object array with data of applicants. + */ public function getApplicantsOfPlacementTest($reihungstest_id) { $query = '
Aufgenommene
'.$bewerber.'