From 83351e7329cba5147b73cb6529e0179742fa6889 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Thu, 9 Jun 2022 20:05:46 +0200 Subject: [PATCH] Manager Gruppenadministration: first version of adding Benutzer to Gruppe --- .../organisation/Gruppenadministration.php | 67 ++++++---- .../organisation/Benutzergruppe_model.php | 14 -- .../gruppenadministration/benutzergruppe.php | 50 +++++++- public/js/organisation/benutzergruppe.js | 121 ++++++++++++++++++ 4 files changed, 210 insertions(+), 42 deletions(-) delete mode 100644 application/models/organisation/Benutzergruppe_model.php create mode 100644 public/js/organisation/benutzergruppe.js diff --git a/application/controllers/organisation/Gruppenadministration.php b/application/controllers/organisation/Gruppenadministration.php index 68d4b9771..342e93a67 100644 --- a/application/controllers/organisation/Gruppenadministration.php +++ b/application/controllers/organisation/Gruppenadministration.php @@ -18,12 +18,14 @@ class Gruppenadministration extends Auth_Controller array( 'index' => 'admin:r', 'showBenutzergruppe' => 'admin:r', - 'saveBPK' => 'admin:rw', + 'getAllBenutzer' => 'admin:r', + 'addBenutzer' => 'admin:rw', ) ); // Loads models - $this->load->model('organisation/benutzergruppe_model', 'BenutzergruppeModel'); + $this->load->model('person/benutzer_model', 'BenutzerModel'); + $this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel'); $this->load->library('WidgetLib'); $this->loadPhrases( @@ -69,7 +71,12 @@ class Gruppenadministration extends Auth_Controller $this->BenutzergruppeModel->addSelect('uid, vorname, nachname'); $this->BenutzergruppeModel->addJoin('public.tbl_benutzer', 'uid'); $this->BenutzergruppeModel->addJoin('public.tbl_person', 'person_id'); - $benutzer = $this->BenutzergruppeModel->loadWhere(array('gruppe_kurzbz' => $gruppe_kurzbz)); + $benutzerRes = $this->BenutzergruppeModel->loadWhere(array('gruppe_kurzbz' => $gruppe_kurzbz)); + + if (isError($benutzerRes)) + show_error(getError($benutzerRes)); + + $benutzer = hasData($benutzerRes) ? getData($benutzerRes) : array(); $this->load->view( 'organisation/gruppenadministration/benutzergruppe.php', @@ -78,27 +85,41 @@ class Gruppenadministration extends Auth_Controller } /** - * Saves a ZGV for a prestudent, includes Ort, Datum, Nation for bachelor and master + * Gets all Benutzer for assignment to Gruppe + */ + public function getAllBenutzer() + { + $this->BenutzerModel->addSelect('uid, vorname, nachname'); + $this->BenutzerModel->addJoin('public.tbl_person', 'person_id'); + $benutzerRes = $this->BenutzerModel->loadWhere( + array('tbl_benutzer.aktiv' => true) + ); + $this->outputJson($benutzerRes); + } + + /** + * Adds a Benutzer to Gruppe */ - // public function saveBPK() - // { - // $person_id = $this->input->post('person_id'); - // $bpk = $this->input->post('bpk'); - // - // if (isEmptyString($person_id)) - // $result = error('PersonID missing'); - // else - // { - // $result = $this->PersonModel->update( - // $person_id, - // array( - // 'bpk' => $bpk, - // 'updateamum' => date('Y-m-d H:i:s') - // ) - // ); - // redirect('person/BPKWartung/index'); - // } - // } + public function addBenutzer() + { + $uid = $this->input->post('uid'); + $gruppe_kurzbz = $this->input->post('gruppe_kurzbz'); + + if (isEmptyString($uid)) + $result = error('Uid missing'); + else + { + $result = $this->BenutzergruppeModel->insert( + array( + 'uid' => $uid, + 'gruppe_kurzbz' => $gruppe_kurzbz, + 'insertamum' => date('Y-m-d H:i:s') + ) + ); + } + + $this->outputJson($result); + } // ----------------------------------------------------------------------------------------------------------------- // Private methods diff --git a/application/models/organisation/Benutzergruppe_model.php b/application/models/organisation/Benutzergruppe_model.php deleted file mode 100644 index b99ddc35e..000000000 --- a/application/models/organisation/Benutzergruppe_model.php +++ /dev/null @@ -1,14 +0,0 @@ -dbTable = 'public.tbl_benutzergruppe'; - $this->pk = array('uid', 'gruppe_kurzbz'); - } -} diff --git a/application/views/organisation/gruppenadministration/benutzergruppe.php b/application/views/organisation/gruppenadministration/benutzergruppe.php index db706e510..be7e02fc6 100644 --- a/application/views/organisation/gruppenadministration/benutzergruppe.php +++ b/application/views/organisation/gruppenadministration/benutzergruppe.php @@ -10,13 +10,14 @@ 'sbadmintemplate' => true, 'tablesorter' => true, 'ajaxlib' => true, + 'dialoglib' => true, 'filterwidget' => true, 'navigationwidget' => true, 'phrases' => array( 'ui' => array('bitteEintragWaehlen') ), 'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css', - 'customJSs' => array('public/js/bootstrapper.js') + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', 'public/js/organisation/benutzergruppe.js') ) ); ?> @@ -31,13 +32,52 @@
-
- +
+
+
+
+ + + + + + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + +
Uidp->t('global', 'vorname')); ?>p->t('global', 'nachname')); ?>p->t('ui', 'loeschen')); ?>
uid; ?>vorname; ?>nachname; ?> + +
+
diff --git a/public/js/organisation/benutzergruppe.js b/public/js/organisation/benutzergruppe.js new file mode 100644 index 000000000..c7bdd3580 --- /dev/null +++ b/public/js/organisation/benutzergruppe.js @@ -0,0 +1,121 @@ +/** + * Javascript file for benutzergruppe management page + */ + +var Benutzergruppe = { + getAllBenutzer: function() + { + FHC_AjaxClient.ajaxCallGet( + 'organisation/Gruppenadministration/getAllBenutzer', + null, + { + successCallback: function(data, textStatus, jqXHR) { + if (FHC_AjaxClient.hasData(data)) + { + benutzerArr = []; + + // save loaded data + let benutzerData = FHC_AjaxClient.getData(data); + + for (let i = 0; i < benutzerData.length; i++) + { + let ben = benutzerData[i]; + + benutzerArr.push( + { + vorname: ben.vorname, + nachname: ben.nachname, + uid: ben.uid, + label: ben.nachname + " " + ben.vorname + " (" + ben.uid + ")", + id: ben.uid + } + ); + } + + // callback for searching source mitarbeiter array correctly + let sourceCallback = function(request, response) + { + // case insensitive matcher + let matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); + + // match vorname nachname OR nachname vorname OR uid + response($.grep(benutzerArr, function (value) { + return matcher.test(value.nachname + ' '+value.vorname + ' ' + value.nachname) + || matcher.test(value.uid); + })); + } + + // fill autocomplete field with benutzer data + Benutzergruppe._fillAutocomplete( + 'teilnehmerSelect', + 'teilnehmer_uid', + sourceCallback + ); + } + }, + errorCallback: function(jqXHR, textStatus, errorThrown) { + FHC_DialogLib.alertError(textStatus); + } + } + ); + }, + addBenutzer: function(uid, gruppe_kurzbz) + { + FHC_AjaxClient.ajaxCallPost( + 'organisation/Gruppenadministration/addBenutzer', + { + uid: uid, + gruppe_kurzbz: gruppe_kurzbz + }, + { + successCallback: function(data, textStatus, jqXHR) { + if (FHC_AjaxClient.hasData(data)) + { + let addBenutzerRes = FHC_AjaxClient.getData(data); + console.log(addBenutzerRes); + } + }, + errorCallback: function(jqXHR, textStatus, errorThrown) { + FHC_DialogLib.alertError(textStatus); + } + } + ); + }, + _fillAutocomplete: function(autocompleteId, idFieldId, source) + { + // jQuery ui autocomplete for benutzer + $("#"+autocompleteId).autocomplete( + { + // custom matcher + source: source, + autoFocus: true, + select: function(event, ui) + { + // when autocmplete entry selected, display label text in autocomplete, fill hidden value field + $("#"+autocompleteId).val(ui.item.label); + $("#"+idFieldId).val(ui.item.id); + return false; + } + } + ); + } +}; + +/** + * When JQuery is up + */ +$(document).ready(function() { + + Benutzergruppe.getAllBenutzer(); + Tablesort.addTablesorter( + "benutzer-table", [[0,0], [2,0]], ['filter'], 2 + ) + + $("#teilnehmerHinzufuegen").click( + function(){ + let uid = $("#teilnehmer_uid").val(); + let gruppe_kurzbz = $("#gruppe_kurzbz").val(); + Benutzergruppe.addBenutzer(uid, gruppe_kurzbz); + } + ); +});