From aee25c52525ee57ff9451cf32e3a492b7014582c Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Mon, 3 Oct 2022 19:25:32 +0200 Subject: [PATCH] moved issue resolvers to #own resolvers folder, created first resolver CORE_INOUT_0007 for plausichecks --- .../controllers/jobs/IssueResolver.php | 3 +- application/core/IssueResolver_Controller.php | 107 +++++++++--------- .../libraries/issues/PlausicheckLib.php | 2 +- .../issues/PlausicheckProducerLib.php | 6 +- .../IncomingHeimatNationOesterreich.php | 2 +- .../{ => resolvers}/CORE_INOUT_0001.php | 0 .../{ => resolvers}/CORE_INOUT_0002.php | 0 .../{ => resolvers}/CORE_INOUT_0003.php | 0 .../{ => resolvers}/CORE_INOUT_0004.php | 0 .../{ => resolvers}/CORE_INOUT_0005.php | 0 .../{ => resolvers}/CORE_INOUT_0006.php | 0 .../issues/resolvers/CORE_INOUT_0007.php | 33 ++++++ .../issues/{ => resolvers}/CORE_ZGV_0001.php | 0 .../issues/{ => resolvers}/CORE_ZGV_0002.php | 0 .../issues/{ => resolvers}/CORE_ZGV_0003.php | 0 .../issues/{ => resolvers}/CORE_ZGV_0004.php | 0 .../issues/{ => resolvers}/CORE_ZGV_0005.php | 0 17 files changed, 94 insertions(+), 59 deletions(-) rename application/libraries/issues/{ => resolvers}/CORE_INOUT_0001.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_INOUT_0002.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_INOUT_0003.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_INOUT_0004.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_INOUT_0005.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_INOUT_0006.php (100%) create mode 100644 application/libraries/issues/resolvers/CORE_INOUT_0007.php rename application/libraries/issues/{ => resolvers}/CORE_ZGV_0001.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_ZGV_0002.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_ZGV_0003.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_ZGV_0004.php (100%) rename application/libraries/issues/{ => resolvers}/CORE_ZGV_0005.php (100%) diff --git a/application/controllers/jobs/IssueResolver.php b/application/controllers/jobs/IssueResolver.php index 17c4cb9ce..c2ab87710 100755 --- a/application/controllers/jobs/IssueResolver.php +++ b/application/controllers/jobs/IssueResolver.php @@ -22,7 +22,8 @@ class IssueResolver extends IssueResolver_Controller 'CORE_INOUT_0003' => 'CORE_INOUT_0003', 'CORE_INOUT_0004' => 'CORE_INOUT_0004', 'CORE_INOUT_0005' => 'CORE_INOUT_0005', - 'CORE_INOUT_0006' => 'CORE_INOUT_0006' + 'CORE_INOUT_0006' => 'CORE_INOUT_0006', + 'CORE_INOUT_0007' => 'CORE_INOUT_0007' ); } } diff --git a/application/core/IssueResolver_Controller.php b/application/core/IssueResolver_Controller.php index d6eda8afb..d325c4e59 100755 --- a/application/core/IssueResolver_Controller.php +++ b/application/core/IssueResolver_Controller.php @@ -5,7 +5,8 @@ */ abstract class IssueResolver_Controller extends JOB_Controller { - const ISSUES_FOLDER = 'issues'; + const CI_PATH = 'application'; + const ISSUES_FOLDER = 'issues/resolvers'; const CHECK_ISSUE_RESOLVED_METHOD_NAME = 'checkIfIssueIsResolved'; protected $_codeLibMappings; @@ -47,64 +48,64 @@ abstract class IssueResolver_Controller extends JOB_Controller foreach ($openIssues as $issue) { - if (isset($this->_codeLibMappings[$issue->fehlercode])) + // ignore if Fehlercode is not in libmappings (shouldn't be checked) + if (!isset($this->_codeLibMappings[$issue->fehlercode])) continue; + + $libName = $this->_codeLibMappings[$issue->fehlercode]; + + // add person id and oe kurzbz automatically as params, merge it with additional params + // decode bewerbung_parameter into assoc array + $params = array_merge( + array('issue_id' => $issue->issue_id, 'issue_person_id' => $issue->person_id, 'issue_oe_kurzbz' => $issue->oe_kurzbz), + isset($issue->behebung_parameter) ? json_decode($issue->behebung_parameter, true) : array() + ); + + // if called from extension (extension name set), path includes extension names, otherwise it is the core library folder + $libRootPath = isset($this->_extensionName) ? 'extensions/' . $this->_extensionName . '/' : ''; + $issuesLibPath = $libRootPath . self::ISSUES_FOLDER . '/'; + $issuesLibFilePath = DOC_ROOT . self::CI_PATH . '/' . $libRootPath . 'libraries/' . self::ISSUES_FOLDER . '/' . $libName . '.php'; + + // check if library file exists + if (!file_exists($issuesLibFilePath)) { - $libName = $this->_codeLibMappings[$issue->fehlercode]; + // log error and continue with next issue if not + $this->logError("Issue library file " . $issuesLibFilePath . " does not exist"); + continue; + } - // add person id and oe kurzbz automatically as params, merge it with additional params - // decode bewerbung_parameter into assoc array - $params = array_merge( - array('issue_id' => $issue->issue_id, 'issue_person_id' => $issue->person_id, 'issue_oe_kurzbz' => $issue->oe_kurzbz), - isset($issue->behebung_parameter) ? json_decode($issue->behebung_parameter, true) : array() - ); + // load library connected to fehlercode + $this->load->library($issuesLibPath . $libName); - // if called from extension (extension name set), path includes extension names, otherwise it is the core library folder - $libRootPath = isset($this->_extensionName) ? 'extensions/' . $this->_extensionName . '/' : ''; - $issuesLibPath = $libRootPath . self::ISSUES_FOLDER . '/'; - $issuesLibFilePath = DOC_ROOT . 'application/' . $libRootPath . 'libraries/' . self::ISSUES_FOLDER . '/' . $libName . '.php'; + $lowercaseLibName = mb_strtolower($libName); - // check if library file exists - if (!file_exists($issuesLibFilePath)) + // check if method is defined in library class + if (!is_callable(array($this->{$lowercaseLibName}, self::CHECK_ISSUE_RESOLVED_METHOD_NAME))) + { + // log error and continue with next issue if not + $this->logError("Method " . self::CHECK_ISSUE_RESOLVED_METHOD_NAME . " is not defined in library $lowercaseLibName"); + continue; + } + + // call the function for checking for issue resolution + $issueResolvedRes = $this->{$lowercaseLibName}->{self::CHECK_ISSUE_RESOLVED_METHOD_NAME}($params); + + if (isError($issueResolvedRes)) + { + $this->logError(getError($issueResolvedRes)); + } + else + { + $issueResolvedData = getData($issueResolvedRes); + + if ($issueResolvedData === true) { - // log error and continue with next issue if not - $this->logError("Issue library file " . $issuesLibFilePath . " does not exist"); - continue; - } + // set issue to resolved if needed + $behobenRes = $this->issueslib->setBehoben($issue->issue_id, null); - // load library connected to fehlercode - $this->load->library($issuesLibPath . $libName); - - $lowercaseLibName = mb_strtolower($libName); - - // check if method is defined in library class - if (!is_callable(array($this->{$lowercaseLibName}, self::CHECK_ISSUE_RESOLVED_METHOD_NAME))) - { - // log error and continue with next issue if not - $this->logError("Method " . self::CHECK_ISSUE_RESOLVED_METHOD_NAME . " is not defined in library $lowercaseLibName"); - continue; - } - - // call the function for checking for issue resolution - $issueResolvedRes = $this->{$lowercaseLibName}->{self::CHECK_ISSUE_RESOLVED_METHOD_NAME}($params); - - if (isError($issueResolvedRes)) - { - $this->logError(getError($issueResolvedRes)); - } - else - { - $issueResolvedData = getData($issueResolvedRes); - - if ($issueResolvedData === true) - { - // set issue to resolved if needed - $behobenRes = $this->issueslib->setBehoben($issue->issue_id, null); - - if (isError($behobenRes)) - $this->logError(getError($behobenRes)); - else - $this->logInfo("Issue " . $issue->issue_id . " successfully resolved"); - } + if (isError($behobenRes)) + $this->logError(getError($behobenRes)); + else + $this->logInfo("Issue " . $issue->issue_id . " successfully resolved"); } } } diff --git a/application/libraries/issues/PlausicheckLib.php b/application/libraries/issues/PlausicheckLib.php index 60a5ad3d9..40b7976f6 100644 --- a/application/libraries/issues/PlausicheckLib.php +++ b/application/libraries/issues/PlausicheckLib.php @@ -1077,7 +1077,7 @@ class PlausicheckLib $qry = " SELECT - DISTINCT pers.person_id + DISTINCT pers.person_id, status.studiensemester_kurzbz FROM public.tbl_prestudent pre JOIN public.tbl_prestudentstatus status USING(prestudent_id) diff --git a/application/libraries/issues/PlausicheckProducerLib.php b/application/libraries/issues/PlausicheckProducerLib.php index 372642c92..b165a4b76 100644 --- a/application/libraries/issues/PlausicheckProducerLib.php +++ b/application/libraries/issues/PlausicheckProducerLib.php @@ -4,6 +4,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); class PlausicheckProducerLib { + const CI_LIBRARY_PATH = 'application/libraries'; const PLAUSI_ISSUES_FOLDER = 'issues/plausichecks'; const EXECUTE_PLAUSI_CHECK_METHOD_NAME = 'executePlausiCheck'; @@ -36,7 +37,7 @@ class PlausicheckProducerLib 'PrestudentStgUngleichStgStudienplan' => 'PrestudentStgUngleichStgStudienplan', 'StgPrestudentUngleichStgStudent' => 'StgPrestudentUngleichStgStudent', 'StudentstatusNachAbbrecher' => 'StudentstatusNachAbbrecher' - //'StudienplanUngueltig' => 'StudienplanUngueltig', + //'StudienplanUngueltig' => 'StudienplanUngueltig' ); public function __construct() @@ -59,8 +60,7 @@ class PlausicheckProducerLib if (isEmptyString($studiensemester_kurzbz)) $studiensemester_kurzbz = $this->_currentStudiensemester; // get path of library for issue to be produced - $issuesLibPath = DOC_ROOT . 'application/libraries/' . self::PLAUSI_ISSUES_FOLDER . '/'; - //$issuesLibPath = base_url('application/libraries/' . self::PLAUSI_ISSUES_FOLDER . '/'); + $issuesLibPath = DOC_ROOT . self::CI_LIBRARY_PATH . '/' . self::PLAUSI_ISSUES_FOLDER . '/'; $issuesLibFilePath = $issuesLibPath . $libName . '.php'; // check if library file exists diff --git a/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php b/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php index 220eca4a1..51726d969 100644 --- a/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php +++ b/application/libraries/issues/plausichecks/IncomingHeimatNationOesterreich.php @@ -31,7 +31,7 @@ class IncomingHeimatNationOesterreich extends PlausiChecker { $results[] = array( 'person_id' => $person->person_id, - 'resolution_params' => array('person_id' => $person->person_id) + 'resolution_params' => array('person_id' => $person->person_id, 'studiensemester_kurzbz' => $studiensemester_kurzbz) ); } } diff --git a/application/libraries/issues/CORE_INOUT_0001.php b/application/libraries/issues/resolvers/CORE_INOUT_0001.php similarity index 100% rename from application/libraries/issues/CORE_INOUT_0001.php rename to application/libraries/issues/resolvers/CORE_INOUT_0001.php diff --git a/application/libraries/issues/CORE_INOUT_0002.php b/application/libraries/issues/resolvers/CORE_INOUT_0002.php similarity index 100% rename from application/libraries/issues/CORE_INOUT_0002.php rename to application/libraries/issues/resolvers/CORE_INOUT_0002.php diff --git a/application/libraries/issues/CORE_INOUT_0003.php b/application/libraries/issues/resolvers/CORE_INOUT_0003.php similarity index 100% rename from application/libraries/issues/CORE_INOUT_0003.php rename to application/libraries/issues/resolvers/CORE_INOUT_0003.php diff --git a/application/libraries/issues/CORE_INOUT_0004.php b/application/libraries/issues/resolvers/CORE_INOUT_0004.php similarity index 100% rename from application/libraries/issues/CORE_INOUT_0004.php rename to application/libraries/issues/resolvers/CORE_INOUT_0004.php diff --git a/application/libraries/issues/CORE_INOUT_0005.php b/application/libraries/issues/resolvers/CORE_INOUT_0005.php similarity index 100% rename from application/libraries/issues/CORE_INOUT_0005.php rename to application/libraries/issues/resolvers/CORE_INOUT_0005.php diff --git a/application/libraries/issues/CORE_INOUT_0006.php b/application/libraries/issues/resolvers/CORE_INOUT_0006.php similarity index 100% rename from application/libraries/issues/CORE_INOUT_0006.php rename to application/libraries/issues/resolvers/CORE_INOUT_0006.php diff --git a/application/libraries/issues/resolvers/CORE_INOUT_0007.php b/application/libraries/issues/resolvers/CORE_INOUT_0007.php new file mode 100644 index 000000000..925344e34 --- /dev/null +++ b/application/libraries/issues/resolvers/CORE_INOUT_0007.php @@ -0,0 +1,33 @@ +_ci =& get_instance(); // get code igniter instance + + $this->_ci->load->library('issues/PlausicheckLib'); + + // check if issue persists + $checkRes = $this->_ci->plausichecklib->getIncomingHeimatNationOesterreich($params['studiensemester_kurzbz'], null, $params['person_id']); + + if (isError($checkRes)) return $checkRes; + + if (hasData($checkRes)) + return success(false); // not resolved if issue is still present + else + return success(true); // resolved otherwise + } +} + diff --git a/application/libraries/issues/CORE_ZGV_0001.php b/application/libraries/issues/resolvers/CORE_ZGV_0001.php similarity index 100% rename from application/libraries/issues/CORE_ZGV_0001.php rename to application/libraries/issues/resolvers/CORE_ZGV_0001.php diff --git a/application/libraries/issues/CORE_ZGV_0002.php b/application/libraries/issues/resolvers/CORE_ZGV_0002.php similarity index 100% rename from application/libraries/issues/CORE_ZGV_0002.php rename to application/libraries/issues/resolvers/CORE_ZGV_0002.php diff --git a/application/libraries/issues/CORE_ZGV_0003.php b/application/libraries/issues/resolvers/CORE_ZGV_0003.php similarity index 100% rename from application/libraries/issues/CORE_ZGV_0003.php rename to application/libraries/issues/resolvers/CORE_ZGV_0003.php diff --git a/application/libraries/issues/CORE_ZGV_0004.php b/application/libraries/issues/resolvers/CORE_ZGV_0004.php similarity index 100% rename from application/libraries/issues/CORE_ZGV_0004.php rename to application/libraries/issues/resolvers/CORE_ZGV_0004.php diff --git a/application/libraries/issues/CORE_ZGV_0005.php b/application/libraries/issues/resolvers/CORE_ZGV_0005.php similarity index 100% rename from application/libraries/issues/CORE_ZGV_0005.php rename to application/libraries/issues/resolvers/CORE_ZGV_0005.php