added Plausicheck gui to start plausichecks manually

This commit is contained in:
KarpAlex
2022-10-03 02:32:28 +02:00
parent 5b46722913
commit f8d3337481
3 changed files with 308 additions and 0 deletions
@@ -0,0 +1,146 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Plausichecks extends Auth_Controller
{
private $_uid;
public function __construct()
{
parent::__construct(
array(
'index' => array('system/issues_verwalten:r'),
'runChecks' => array('system/issues_verwalten:r')
)
);
// Load libraries
$this->load->library('issues/PlausicheckProducerLib');
$this->load->library('WidgetLib');
//$this->load->library('IssuesLib');
// Load models
$this->load->model('system/Fehler_model', 'FehlerModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
//~ $this->loadPhrases(
//~ array(
//~ 'global',
//~ 'ui',
//~ 'filter',
//~ 'lehre',
//~ 'person',
//~ 'fehlermonitoring'
//~ )
//~ );
$this->_setAuthUID(); // sets property uid
}
public function index()
{
$filterData = $this->_getFilterData();
$this->load->view('system/issues/plausichecks', $filterData);
}
public function runChecks()
{
$studiensemester_kurzbz = $this->input->get('studiensemester_kurzbz');
$studiengang_kz = $this->input->get('studiengang_kz');
$fehler_kurzbz = $this->input->get('fehler_kurzbz');
// message array for storing info output
$messages = array();
// all fehler kurzbz which are going to be checked
$fehlerKurzbz = !isEmptyString($fehler_kurzbz) ? array($fehler_kurzbz) : $this->plausicheckproducerlib->getFehlerKurzbz();
// set Studiengang to null if not passed
if (isEmptyString($studiengang_kz)) $studiengang_kz = null;
$messages[] = "Plausicheck Lauf gestartet";
// get the data returned by Plausicheck
foreach ($fehlerKurzbz as $fehler_kurzbz)
{
// execute the check
$messages[] = "Prüfe " . $fehler_kurzbz . "...";
$plausicheckRes = $this->plausicheckproducerlib->producePlausicheck($fehler_kurzbz, $studiensemester_kurzbz, $studiengang_kz);
if (isError($plausicheckRes)) $this->terminateWithJsonError(getError($plausicheckRes));
if (hasData($plausicheckRes))
{
$plausicheckData = getData($plausicheckRes);
foreach ($plausicheckData as $plausiData)
{
// get the data needed for issue production
$person_id = isset($plausiData['person_id']) ? $plausiData['person_id'] : null;
$oe_kurzbz = isset($plausiData['oe_kurzbz']) ? $plausiData['oe_kurzbz'] : null;
$fehlertext_params = isset($plausiData['fehlertext_params']) ? $plausiData['fehlertext_params'] : null;
$resolution_params = isset($plausiData['resolution_params']) ? $plausiData['resolution_params'] : null;
// get Text of the Fehler
$this->FehlerModel->addSelect('fehlertext');
$fehlerRes = $this->FehlerModel->loadWhere(array('fehler_kurzbz' => $fehler_kurzbz));
if (isError($fehlerRes)) $this->outputJsonError(getError($fehlerRes));
// optionally replace fehler parameters in text, output the fehlertext
if (hasData($fehlerRes))
{
$fehlerText = getData($fehlerRes)[0]->fehlertext;
$fehlerText = isEmptyArray($fehlertext_params) ? $fehlerText : vsprintf($fehlerText, $fehlertext_params);
$messages[] = $fehlerText;
}
}
}
else
$messages[] = "Nichts gefunden für Fehler $fehler_kurzbz";
}
$messages[] = "Plausicheck Lauf gestoppt";
$this->outputJsonSuccess($messages);
}
private function _getFilterData()
{
$this->StudiensemesterModel->addOrder('start', 'DESC');
$studiensemesterRes = $this->StudiensemesterModel->load();
if (isError($studiensemesterRes)) show_error(getError($studiensemesterRes));
$currSemRes = $this->StudiensemesterModel->getAkt();
if (isError($currSemRes)) show_error(getError($currSemRes));
$this->StudiengangModel->addSelect('studiengang_kz, tbl_studiengang.bezeichnung, tbl_studiengang.typ,
tbl_studiengangstyp.bezeichnung AS typbezeichnung, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel');
$this->StudiengangModel->addJoin('public.tbl_studiengangstyp', 'typ');
$this->StudiengangModel->addOrder('kuerzel, tbl_studiengang.bezeichnung, studiengang_kz');
$studiengaengeRes = $this->StudiengangModel->loadWhere(array('aktiv' => true));
if (isError($studiengaengeRes)) show_error(getError($studiengaengeRes));
$fehlerKurzbz = $this->plausicheckproducerlib->getFehlerKurzbz();
return array(
'semester' => hasData($studiensemesterRes) ? getData($studiensemesterRes) : array(),
'currsemester' => hasData($currSemRes) ? getData($currSemRes) : array(),
'studiengaenge' => hasData($studiengaengeRes) ? getData($studiengaengeRes) : array(),
'fehler' => $fehlerKurzbz
);
}
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
}
@@ -0,0 +1,108 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Plausichecks',
'jquery' => true,
'jqueryui' => true,
'jquerycheckboxes' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'ajaxlib' => true,
'navigationwidget' => true,
'dialoglib' => true,
//~ 'phrases' => array(
//~ 'ui',
//~ 'fehlermonitoring'
//~ ),
//'customCSSs' => array('public/css/issues/issuesZustaendigkeiten.css', 'public/css/sbadmin2/tablesort_bootstrap.css'),
'customJSs' => array('public/js/issues/plausichecks.js')
)
);
?>
<body>
<div id="wrapper">
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
Plausichecks
</h3>
</div>
</div>
<div class="row">
<div class="col-xs-2 form-group">
<label>Studiensemester</label>
<select class="form-control" name="studiensemester" id="studiensemester">
<?php
foreach ($semester as $sem):
$selected = $sem->studiensemester_kurzbz === $currsemester[0]->studiensemester_kurzbz ? ' selected=""' : '';
?>
<option value="<?php echo $sem->studiensemester_kurzbz ?>"<?php echo $selected ?>>
<?php echo $sem->studiensemester_kurzbz ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-xs-4 form-group">
<label>Studiengang</label>
<select class="form-control" name="studiengang_kz" id="studiengang_kz">
<option value="" selected="selected">Alle</option>';
<?php
$typ = '';
foreach ($studiengaenge as $studiengang):
if ($typ != $studiengang->typ || $typ == '')
{
if ($typ != '')
echo '</optgroup>';
echo '<optgroup label = "'.($studiengang->typbezeichnung !== '' ? $studiengang->typbezeichnung : $studiengang).'">';
}
$typ = $studiengang->typ;
?>
<option value="<?php echo $studiengang->studiengang_kz ?>">
<?php echo $studiengang->kuerzel . ' - ' . $studiengang->bezeichnung ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-xs-4 form-group">
<label>Fehler</label>
<select class="form-control" name="fehler_kurzbz" id="fehler_kurzbz">
<option value="" selected="selected">Alle</option>';
<?php foreach ($fehler as $fehler_kurzbz):?>
<option value="<?php echo $fehler_kurzbz ?>">
<?php echo $fehler_kurzbz ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-xs-2 form-group">
<label>&nbsp;</label>
<br />
<button class="btn btn-default" id="plausistart">Plausichecks starten</button>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="well well-sm wellminheight">
<h4 class="text-center">Output:</h4>
<div id="plausioutput" class="panel panel-body">
<div id="plausioutput-text">-</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
+54
View File
@@ -0,0 +1,54 @@
/**
* Javascript file for Plausichecks display
*/
var Plausichecks = {
startPlausichecks: function(studiensemester_kurzbz, studiengang_kz, fehler_kurzbz)
{
FHC_AjaxClient.ajaxCallGet(
'system/issues/Plausichecks/runChecks',
{
studiensemester_kurzbz: studiensemester_kurzbz,
studiengang_kz: studiengang_kz,
fehler_kurzbz: fehler_kurzbz
},
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
{
let messageStr = "";
let messages = FHC_AjaxClient.getData(data);
for (i = 0; i < messages.length; i++)
{
messageStr += messages[i]+"<br />";
}
$("#plausioutput").html(messageStr);
}
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError(textStatus);
}
}
);
},
};
/**
* When JQuery is up
*/
$(document).ready(function() {
// set event for adding a new Zuständigkeit
$("#plausistart").click(
function()
{
Plausichecks.startPlausichecks(
$("#studiensemester").val(),
$("#studiengang_kz").val(),
$("#fehler_kurzbz").val(),
);
}
)
});