diff --git a/application/controllers/api/frontend/v1/stv/Kontakt.php b/application/controllers/api/frontend/v1/stv/Kontakt.php index b344baf85..e75802727 100644 --- a/application/controllers/api/frontend/v1/stv/Kontakt.php +++ b/application/controllers/api/frontend/v1/stv/Kontakt.php @@ -28,7 +28,8 @@ class Kontakt extends FHCAPI_Controller 'getStandorte' => ['admin:r', 'assistenz:r'], 'getStandorteByFirma' => ['admin:r', 'assistenz:r'], 'getKontakte' => ['admin:r', 'assistenz:r'], - 'getBankverbindung' => ['mitarbeiter/bankdaten:r', 'student/bankdaten:r'] + 'getBankverbindung' => ['mitarbeiter/bankdaten:r', 'student/bankdaten:r'], + 'getAllFirmen' => ['admin:r', 'assistenz:r'] ]); // Load Libraries @@ -673,6 +674,7 @@ class Kontakt extends FHCAPI_Controller $iban = $this->input->post('iban'); $typ = $this->input->post('typ'); $verrechnung = $this->input->post('verrechnung'); + $uid = getAuthUID(); $result = $this->BankverbindungModel->insert( [ @@ -683,7 +685,7 @@ class Kontakt extends FHCAPI_Controller 'iban' => $iban, 'blz' => $blz, 'kontonr' => $kontonr, - 'insertvon' => 'uid', + 'insertvon' => $uid, 'insertamum' => date('c'), 'typ' => $typ, 'verrechnung' => $verrechnung, @@ -800,4 +802,25 @@ class Kontakt extends FHCAPI_Controller return $this->GemeindeModel->checkLocation($_POST['plz'], $_POST['gemeinde'], $_POST['ort']); } + + /* + * returns list of all companies + * as key value list to be used in select or autocomplete + */ + public function getAllFirmen() + { + $sql = " + SELECT + f.firma_id, f.name, + f.name AS label + FROM public.tbl_firma f + ORDER BY f.name ASC"; + + $result = $this->FirmaModel->execReadOnlyQuery($sql); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + } diff --git a/public/js/api/factory/stv/kontakt/address.js b/public/js/api/factory/stv/kontakt/address.js index 78027835f..4402b50d6 100644 --- a/public/js/api/factory/stv/kontakt/address.js +++ b/public/js/api/factory/stv/kontakt/address.js @@ -67,5 +67,11 @@ export default { method: 'get', url: 'api/frontend/v1/stv/address/getNations/' }; + }, + getAllFirmen(){ + return { + method: 'get', + url: 'api/frontend/v1/stv/kontakt/getAllFirmen/' + } } }; \ No newline at end of file diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js index 9e579351c..a69c34b3f 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js @@ -208,11 +208,12 @@ export default{ nations: [], adressentypen: [], firmen: [], + listFirmen: [], filteredFirmen: [], + selectedFirma: null, abortController: { suggestions: null, - places: null, - firmen: null + places: null }, } }, @@ -231,6 +232,9 @@ export default{ uid() { this.reload(); }, + selectedFirma(newVal) { + this.addressData.firma_id = newVal?.firma_id || ''; + } }, methods:{ actionNewAdress() { @@ -243,7 +247,7 @@ export default{ if(this.addressData.adresse_id) { this.addressData.address.plz = this.addressData.plz; - // delete this.addressData.plz; + // delete this.addressData.plz; this.loadPlaces(this.addressData.address.plz); this.$refs.adressModal.show(); @@ -324,18 +328,13 @@ export default{ this.places = result.data; }); }, - search(event) { - if (this.abortController.firmen) { - this.abortController.firmen.abort(); - } + filterFirmen(event) { + const query = event?.query?.toLowerCase()?.trim() || ""; - this.abortController.firmen = new AbortController(); - - return this.$api - .call(ApiStvCompany.get(event.query)) - .then(result => { - this.filteredFirmen = result.data.retval; - }); + this.filteredFirmen = this.listFirmen.filter(item => { + const label = (item.label || "").toLowerCase(); + return label.includes(query); + }); }, hideModal(modalRef) { this.$refs[modalRef].hide(); @@ -372,10 +371,17 @@ export default{ this.adressentypen = result.data; }) .catch(this.$fhcAlert.handleSystemError); + + this.$api + .call(ApiStvAddress.getAllFirmen()) + .then(result => { + this.listFirmen = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); }, template: `
- +