mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
Merge branch 'feature-30660/FHC4_StudierendenGUI_Prototyp' of github.com:FH-Complete/FHC-Core into feature-30660/FHC4_StudierendenGUI_Prototyp
This commit is contained in:
@@ -28,7 +28,6 @@ class Favorites extends FHCAPI_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
// TODO(chris): access!
|
||||
parent::__construct([
|
||||
'index' => self::PERM_LOGGED,
|
||||
'set' => self::PERM_LOGGED
|
||||
@@ -58,10 +57,8 @@ class Favorites extends FHCAPI_Controller
|
||||
|
||||
$this->form_validation->set_rules('favorites', 'Favorites', 'required');
|
||||
|
||||
if ($this->form_validation->run() == false) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_BAD_REQUEST);
|
||||
return $this->outputJson($this->form_validation->error_array());
|
||||
}
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
$favorites = $this->input->post('favorites');
|
||||
|
||||
|
||||
@@ -134,9 +134,9 @@ class Student extends FHCAPI_Controller
|
||||
$result = $this->udflib->getCiValidations($this->PersonModel, $this->input->post());
|
||||
|
||||
//TODO(Manu) check with Chris: input number not allowed
|
||||
$fieldValidations = $this->getDataOrTerminateWithError($result);
|
||||
$field_validations = $this->getDataOrTerminateWithError($result);
|
||||
|
||||
$this->form_validation->set_rules($fieldvalidations);
|
||||
$this->form_validation->set_rules($field_validations);
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
@@ -259,9 +259,7 @@ class Student extends FHCAPI_Controller
|
||||
{
|
||||
$this->load->library('form_validation');
|
||||
|
||||
$this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'callback_isValidDate', [
|
||||
'isValidDate' => $this->p->t('ui', 'error_invalid_date')
|
||||
]);
|
||||
$this->form_validation->set_rules('gebdatum', 'Geburtsdatum', 'is_valid_date');
|
||||
|
||||
if (!$this->form_validation->run())
|
||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||
|
||||
@@ -145,7 +145,7 @@ class Verband extends FHCAPI_Controller
|
||||
$this->StudiengangModel->addSelect("CONCAT(UPPER(CONCAT(typ, kurzbz)), '-', semester, (SELECT CASE WHEN bezeichnung IS NULL OR bezeichnung='' THEN ''::TEXT ELSE CONCAT(' (', bezeichnung, ')') END FROM public.tbl_lehrverband WHERE studiengang_kz=v.studiengang_kz AND semester=v.semester ORDER BY verband, gruppe LIMIT 1)) AS name", false);
|
||||
|
||||
$this->StudiengangModel->addSelect('semester');
|
||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . ' AS stg_kz', false);
|
||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
||||
|
||||
$this->StudiengangModel->addOrder('semester');
|
||||
|
||||
@@ -223,7 +223,7 @@ class Verband extends FHCAPI_Controller
|
||||
|
||||
$this->GruppeModel->addSelect('sort');
|
||||
$this->GruppeModel->addSelect('gruppe_kurzbz');
|
||||
$this->GruppeModel->addSelect($this->GruppeModel->escape($studiengang_kz) . ' AS stg_kz', false);
|
||||
$this->GruppeModel->addSelect($this->GruppeModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
||||
|
||||
$this->GruppeModel->addOrder('sort');
|
||||
$this->GruppeModel->addOrder('gruppe_kurzbz');
|
||||
@@ -299,7 +299,7 @@ class Verband extends FHCAPI_Controller
|
||||
$this->StudiengangModel->addSelect("TRUE AS leaf", false);
|
||||
|
||||
$this->StudiengangModel->addSelect('gruppe');
|
||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . ' AS stg_kz', false);
|
||||
$this->StudiengangModel->addSelect($this->StudiengangModel->escape($studiengang_kz) . '::integer AS stg_kz', false);
|
||||
|
||||
$this->StudiengangModel->addOrder('gruppe');
|
||||
|
||||
@@ -343,6 +343,8 @@ class Verband extends FHCAPI_Controller
|
||||
$studiensemester = $this->getDataOrTerminateWithError($result);
|
||||
$result = [];
|
||||
|
||||
$studiengang_kz = (int)$studiengang_kz;
|
||||
|
||||
foreach ($studiensemester as $sem) {
|
||||
$semlink = $link . $sem->studiensemester_kurzbz;
|
||||
$intlink = $semlink . '/interessenten';
|
||||
|
||||
@@ -168,55 +168,6 @@ class Students extends FHC_Controller
|
||||
|
||||
$stdsemEsc = $this->PrestudentModel->escape($studiensemester_kurzbz);
|
||||
|
||||
$this->PrestudentModel->addJoin('public.tbl_person p', 'person_id');
|
||||
#$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $this->PrestudentModel->escape($studiensemester_kurzbz) . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id');
|
||||
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')', 'LEFT');
|
||||
// TODO(chris): check what functions are returning when no entry exists
|
||||
|
||||
$this->PrestudentModel->addSelect('p.person_id');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.prestudent_id');
|
||||
$this->PrestudentModel->addSelect("'' AS uid");
|
||||
$this->PrestudentModel->addSelect('titelpre');
|
||||
$this->PrestudentModel->addSelect('titelpost');
|
||||
$this->PrestudentModel->addSelect('vorname');
|
||||
$this->PrestudentModel->addSelect('wahlname');
|
||||
$this->PrestudentModel->addSelect('vornamen');
|
||||
$this->PrestudentModel->addSelect('geschlecht');
|
||||
$this->PrestudentModel->addSelect('nachname');
|
||||
$this->PrestudentModel->addSelect('gebdatum');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmerkung');
|
||||
$this->PrestudentModel->addSelect('ersatzkennzeichen');
|
||||
$this->PrestudentModel->addSelect('svnr');
|
||||
$this->PrestudentModel->addSelect("'' AS matrikelnr");
|
||||
$this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen');
|
||||
$this->PrestudentModel->addSelect("'' AS semester");
|
||||
$this->PrestudentModel->addSelect("'' AS verband");
|
||||
$this->PrestudentModel->addSelect("'' AS gruppe");
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz');
|
||||
$this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz');
|
||||
$this->PrestudentModel->addSelect('mentor');
|
||||
$this->PrestudentModel->addSelect('FALSE AS bnaktiv');
|
||||
$this->PrestudentModel->addSelect(
|
||||
"(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS email_privat",
|
||||
false
|
||||
);
|
||||
$this->PrestudentModel->addSelect(
|
||||
"(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=s.prestudent_id) AS punkte",
|
||||
false
|
||||
);
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.dual');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.reihungstest_id');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmeldungreihungstest');
|
||||
$this->PrestudentModel->addSelect('p.matr_nr');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.gsstudientyp_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.priorisierung');
|
||||
$this->PrestudentModel->addSelect('p.zugangscode');
|
||||
$this->PrestudentModel->addSelect('p.bpk');
|
||||
|
||||
$this->PrestudentModel->addOrder('nachname');
|
||||
$this->PrestudentModel->addOrder('vorname');
|
||||
|
||||
$where = [];
|
||||
if ($orgform_kurzbz) {
|
||||
$where['ps.orgform_kurzbz'] = $orgform_kurzbz;
|
||||
@@ -322,6 +273,55 @@ class Students extends FHC_Controller
|
||||
break;
|
||||
}
|
||||
|
||||
$this->PrestudentModel->addJoin('public.tbl_person p', 'person_id');
|
||||
#$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $this->PrestudentModel->escape($studiensemester_kurzbz) . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id');
|
||||
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus ps', 'ps.status_kurzbz=public.get_rolle_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.prestudent_id=tbl_prestudent.prestudent_id AND ps.studiensemester_kurzbz=public.get_stdsem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ') AND ps.ausbildungssemester=public.get_absem_prestudent(tbl_prestudent.prestudent_id, ' . $stdsemEsc . ')', 'LEFT');
|
||||
// TODO(chris): check what functions are returning when no entry exists
|
||||
|
||||
$this->PrestudentModel->addSelect('p.person_id');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.prestudent_id');
|
||||
$this->PrestudentModel->addSelect("'' AS uid");
|
||||
$this->PrestudentModel->addSelect('titelpre');
|
||||
$this->PrestudentModel->addSelect('titelpost');
|
||||
$this->PrestudentModel->addSelect('vorname');
|
||||
$this->PrestudentModel->addSelect('wahlname');
|
||||
$this->PrestudentModel->addSelect('vornamen');
|
||||
$this->PrestudentModel->addSelect('geschlecht');
|
||||
$this->PrestudentModel->addSelect('nachname');
|
||||
$this->PrestudentModel->addSelect('gebdatum');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmerkung');
|
||||
$this->PrestudentModel->addSelect('ersatzkennzeichen');
|
||||
$this->PrestudentModel->addSelect('svnr');
|
||||
$this->PrestudentModel->addSelect("'' AS matrikelnr");
|
||||
$this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen');
|
||||
$this->PrestudentModel->addSelect("'' AS semester");
|
||||
$this->PrestudentModel->addSelect("'' AS verband");
|
||||
$this->PrestudentModel->addSelect("'' AS gruppe");
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz');
|
||||
$this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz');
|
||||
$this->PrestudentModel->addSelect('mentor');
|
||||
$this->PrestudentModel->addSelect('FALSE AS bnaktiv');
|
||||
$this->PrestudentModel->addSelect(
|
||||
"(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS email_privat",
|
||||
false
|
||||
);
|
||||
$this->PrestudentModel->addSelect(
|
||||
"(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=s.prestudent_id) AS punkte",
|
||||
false
|
||||
);
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.dual');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.reihungstest_id');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmeldungreihungstest');
|
||||
$this->PrestudentModel->addSelect('p.matr_nr');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.gsstudientyp_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.priorisierung');
|
||||
$this->PrestudentModel->addSelect('p.zugangscode');
|
||||
$this->PrestudentModel->addSelect('p.bpk');
|
||||
|
||||
$this->PrestudentModel->addOrder('nachname');
|
||||
$this->PrestudentModel->addOrder('vorname');
|
||||
|
||||
$this->addFilter($studiensemester_kurzbz);
|
||||
|
||||
$this->outputJson([]);
|
||||
|
||||
@@ -291,128 +291,129 @@ export default{
|
||||
})
|
||||
.catch(this.$fhcAlert.handleSystemError)
|
||||
},
|
||||
// TODO(chris): use Form Component
|
||||
template: `
|
||||
<div class="stv-list h-100 pt-3">
|
||||
<div class="stv-details-kontakt-address h-100 pt-3">
|
||||
|
||||
<!--Modal: Add Address-->
|
||||
<BsModal ref="newAdressModal">
|
||||
<bs-modal ref="newAdressModal">
|
||||
<template #title>{{$p.t('person', 'adresse_new')}}</template>
|
||||
<form class="row g-3" ref="addressData">
|
||||
<div class="row mb-3">
|
||||
<label for="adressentyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select id="adressentyp" class="form-select" v-model="addressData.typ">
|
||||
<option v-for="typ in adressentypen" :key="typ.adressentyp_kurzbz" :value="typ.adressentyp_kurzbz" >{{typ.bezeichnung}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<form class="row g-3" ref="addressData">
|
||||
<div class="row mb-3">
|
||||
<label for="adressentyp" class="form-label col-sm-4">{{$p.t('global', 'typ')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select id="adressentyp" class="form-select" v-model="addressData.typ">
|
||||
<option v-for="typ in adressentypen" :key="typ.adressentyp_kurzbz" :value="typ.adressentyp_kurzbz" >{{typ.bezeichnung}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="strasse" class="form-label col-sm-4">{{$p.t('person', 'strasse')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="strasse" v-model="addressData['strasse']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="nation" class="form-label col-sm-4">{{$p.t('person', 'nation')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select id="nation" class="form-select" v-model="addressData.nation">
|
||||
<option v-for="nation in nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="plz" class="required form-label col-sm-4" >{{$p.t('person', 'plz')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" required v-model="addressData['plz']" @input="loadPlaces" >
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="strasse" class="form-label col-sm-4">{{$p.t('person', 'strasse')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="strasse" v-model="addressData['strasse']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="gemeinde" class="form-label col-sm-4">{{$p.t('person', 'gemeinde')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="addressData[gemeinde]" class="form-select" v-model="addressData['gemeinde']">
|
||||
<option v-if="!gemeinden.length" disabled>Bitte gültige PLZ wählen</option>
|
||||
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
|
||||
</select>
|
||||
<input v-else type="text" class="form-control" v-model="addressData['gemeinde']">
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="nation" class="form-label col-sm-4">{{$p.t('person', 'nation')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select id="nation" class="form-select" v-model="addressData.nation">
|
||||
<option v-for="nation in nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="plz" class="required form-label col-sm-4" >{{$p.t('person', 'plz')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" required v-model="addressData['plz']" @input="loadPlaces" >
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="gemeinde" class="form-label col-sm-4">{{$p.t('person', 'gemeinde')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="addressData[gemeinde]" class="form-select" v-model="addressData['gemeinde']">
|
||||
<option v-if="!gemeinden.length" disabled>Bitte gültige PLZ wählen</option>
|
||||
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
|
||||
</select>
|
||||
<input v-else type="text" class="form-control" v-model="addressData['gemeinde']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="Ort" class="form-label col-sm-4">{{$p.t('person', 'ort')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="address[ort]" class="form-select" v-model="addressData['ort']">
|
||||
<option v-if="!orte.length" disabled>Bitte gültige Gemeinde wählen</option>
|
||||
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
|
||||
</select>
|
||||
<input v-else type="text" name="ort" class="form-control" v-model="addressData['ort']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="heimatadresse" class="form-label col-sm-4">{{$p.t('person', 'heimatadresse')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="form-check">
|
||||
<input id="heimatadresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['heimatadresse']">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="Ort" class="form-label col-sm-4">{{$p.t('person', 'ort')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="address[ort]" class="form-select" v-model="addressData['ort']">
|
||||
<option v-if="!orte.length" disabled>Bitte gültige Gemeinde wählen</option>
|
||||
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
|
||||
</select>
|
||||
<input v-else type="text" name="ort" class="form-control" v-model="addressData['ort']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="heimatadresse" class="form-label col-sm-4">{{$p.t('person', 'heimatadresse')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="form-check">
|
||||
<input id="heimatadresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['heimatadresse']">
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="zustelladresse" class="form-label col-sm-4">{{$p.t('person', 'zustelladresse')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="form-check">
|
||||
<input id="zustelladresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['zustelladresse']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="zustelladresse" class="form-label col-sm-4">{{$p.t('person', 'zustelladresse')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="form-check">
|
||||
<input id="zustelladresse" type="checkbox" class="form-check-input" value="1" v-model="addressData['zustelladresse']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="co_name" class="form-label col-sm-4">{{$p.t('person', 'co_name')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" id="co_name" class="form-control" v-model="addressData['co_name']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="rechnungsadresse" class="form-label col-sm-4">{{$p.t('person', 'rechnungsadresse')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="form-check">
|
||||
<input id="rechnungsadresse" type="checkbox" class="form-check-input" v-model="addressData['rechnungsadresse']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="co_name" class="form-label col-sm-4">{{$p.t('person', 'co_name')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" id="co_name" class="form-control" v-model="addressData['co_name']">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="firma_name" class="form-label col-sm-4">{{$p.t('person', 'firma')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<PvAutoComplete v-model="addressData['firma']" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="rechnungsadresse" class="form-label col-sm-4">{{$p.t('person', 'rechnungsadresse')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<div class="form-check">
|
||||
<input id="rechnungsadresse" type="checkbox" class="form-check-input" v-model="addressData['rechnungsadresse']">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="name" class="form-label col-sm-4">{{$p.t('person', 'firma_zusatz')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="name" v-model="addressData['name']">
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="firma_name" class="form-label col-sm-4">{{$p.t('person', 'firma')}}</label>
|
||||
<div class="col-sm-3">
|
||||
<PvAutoComplete v-model="addressData['firma']" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="name" class="form-label col-sm-4">{{$p.t('person', 'firma_zusatz')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="name" v-model="addressData['name']">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="anmerkung" v-model="addressData['anmerkung']">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="anmerkung" class="form-label col-sm-4">{{$p.t('global', 'anmerkung')}}</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" class="form-control" id="anmerkung" v-model="addressData['anmerkung']">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<template #footer>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{$p.t('ui', 'abbrechen')}}</button>
|
||||
<button type="button" class="btn btn-primary" @click="addNewAddress()">OK</button>
|
||||
</template>
|
||||
</BsModal>
|
||||
</bs-modal>
|
||||
|
||||
<!--Modal: Edit Address-->
|
||||
<BsModal ref="editAdressModal">
|
||||
<bs-modal ref="editAdressModal">
|
||||
<template #title>{{$p.t('person', 'adresse_edit')}}</template>
|
||||
<form class="row g-3" ref="addressData">
|
||||
<div class="row mb-3">
|
||||
@@ -448,28 +449,28 @@ export default{
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="gemeinde" class="form-label col-sm-4">{{$p.t('person', 'gemeinde')}}</label>
|
||||
<div v-if="addressData['gemeinde']" class="col-sm-6">
|
||||
<input type="text" class="form-control" v-model="addressData['gemeinde']">
|
||||
</div>
|
||||
<div v-else class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="addressData[gemeinde]" class="form-select" v-model="addressData['gemeinde']">
|
||||
<option v-if="!gemeinden.length" disabled>{{$p.t('person', 'plz_waehlen')}}</option>
|
||||
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div v-if="addressData['gemeinde']" class="col-sm-6">
|
||||
<input type="text" class="form-control" v-model="addressData['gemeinde']">
|
||||
</div>
|
||||
<div v-else class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="addressData[gemeinde]" class="form-select" v-model="addressData['gemeinde']">
|
||||
<option v-if="!gemeinden.length" disabled>{{$p.t('person', 'plz_waehlen')}}</option>
|
||||
<option v-for="gemeinde in gemeinden" :key="gemeinde.name" :value="gemeinde.name">{{gemeinde.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="Ort" class="form-label col-sm-4">{{$p.t('person', 'ort')}}</label>
|
||||
<div v-if="addressData['ort']" class="col-sm-6">
|
||||
<input type="text" name="ort" class="form-control" v-model="addressData['ort']">
|
||||
</div>
|
||||
<div v-else class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="address[ort]" class="form-select" v-model="addressData['ort']">
|
||||
<option v-if="!orte.length" disabled>{{$p.t('person', 'gemeinde_waehlen')}}</option>
|
||||
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<label for="Ort" class="form-label col-sm-4">{{$p.t('person', 'ort')}}</label>
|
||||
<div v-if="addressData['ort']" class="col-sm-6">
|
||||
<input type="text" name="ort" class="form-control" v-model="addressData['ort']">
|
||||
</div>
|
||||
<div v-else class="col-sm-6">
|
||||
<select v-if="addressData['nation'] == 'A'" name="address[ort]" class="form-select" v-model="addressData['ort']">
|
||||
<option v-if="!orte.length" disabled>{{$p.t('person', 'gemeinde_waehlen')}}</option>
|
||||
<option v-for="ort in orte" :key="ort.ortschaftsname" :value="ort.ortschaftsname">{{ort.ortschaftsname}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
@@ -508,12 +509,12 @@ export default{
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="firma_name" class="form-label col-sm-4">{{$p.t('person', 'firma')}}</label>
|
||||
<div v-if="addressData.firmenname" class="col-sm-6">
|
||||
<input type="text" class="form-control" id="name" v-model="addressData.firmenname">
|
||||
</div>
|
||||
<div v-else class="col-sm-6">
|
||||
<PvAutoComplete v-model="addressData['firma']" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
|
||||
</div>
|
||||
<div v-if="addressData.firmenname" class="col-sm-6">
|
||||
<input type="text" class="form-control" id="name" v-model="addressData.firmenname">
|
||||
</div>
|
||||
<div v-else class="col-sm-6">
|
||||
<PvAutoComplete v-model="addressData['firma']" optionLabel="name" :suggestions="filteredFirmen" @complete="search" :min-length="3"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
@@ -539,10 +540,10 @@ export default{
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetModal">{{$p.t('ui', 'abbrechen')}}</button>
|
||||
<button ref="Close" type="button" class="btn btn-primary" @click="updateAddress(addressData.adresse_id)">OK</button>
|
||||
</template>
|
||||
</BsModal>
|
||||
</bs-modal>
|
||||
|
||||
<!--Modal: deleteAdressModal-->
|
||||
<BsModal ref="deleteAdressModal">
|
||||
<bs-modal ref="deleteAdressModal">
|
||||
<template #title>{{$p.t('person', 'adresse_delete')}}</template>
|
||||
<template #default>
|
||||
<p>{{$p.t('person', 'adresse_confirm_delete')}}</p>
|
||||
@@ -551,7 +552,7 @@ export default{
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="resetModal">{{$p.t('ui', 'abbrechen')}}</button>
|
||||
<button ref="Close" type="button" class="btn btn-primary" @click="deleteAddress(addressData.adresse_id)">OK</button>
|
||||
</template>
|
||||
</BsModal>
|
||||
</bs-modal>
|
||||
|
||||
<core-filter-cmpt
|
||||
ref="table"
|
||||
@@ -564,10 +565,7 @@ export default{
|
||||
new-btn-label="Adresse"
|
||||
@click:new="actionNewAdress"
|
||||
>
|
||||
<button v-if="reload" class="btn btn-outline-warning" aria-label="Reload">
|
||||
<span class="fa-solid fa-rotate-right" aria-hidden="true"></span>
|
||||
</button>
|
||||
</core-filter-cmpt>
|
||||
</div>`
|
||||
</div>`
|
||||
};
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ export default {
|
||||
|
||||
this.abortController.suggestions = new AbortController();
|
||||
// TODO(chris): move to fhcapi.factory
|
||||
this.$fhcapi
|
||||
this.$fhcApi
|
||||
.post('api/frontend/v1/stv/student/check', {
|
||||
vorname: this.formData.vorname,
|
||||
nachname: this.formData.nachname,
|
||||
|
||||
@@ -37,7 +37,7 @@ export default {
|
||||
let res = arr.filter(n => n.key == key);
|
||||
if (res.length)
|
||||
return res.pop();
|
||||
res = arr.map(n => n.children ? this.findNodeByKey(key, n.children) : null).filter();
|
||||
res = arr.map(n => n.children ? this.findNodeByKey(key, n.children) : null).filter(a => a);
|
||||
if (res.length)
|
||||
return res.pop();
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user