cleanUp Tasks Tab PrestudentIn

This commit is contained in:
ma0068
2024-10-22 15:58:02 +02:00
parent b9911e69c5
commit 8787558fef
8 changed files with 198 additions and 77 deletions
+22
View File
@@ -0,0 +1,22 @@
<?php
$config['tabs'] =
[
'prestudent' => [
//all fields can be configured to be hidden, see class attribute stv-prestudent-prestudent-name for name
'hiddenFields' => [
//corresponding to config-entry 'ZGV_DOKTOR_ANZEIGEN' in global.config
'zgvdoktor_code', 'zgvdoktorort', 'zgvdoktordatum', 'zgvdoktornation', 'zgvdoktor_erfuellt',
//corresponding to config-entry 'ZGV_ERFUELLT_ANZEIGEN' in global.config
'zgv_erfuellt', 'zgvmas_erfuellt','zgvdoktor_erfuellt',
//propably used by FH-Communities
'aufnahmeschluessel', 'standort_code', 'facheinschlaegigBerufstaetig'
],
'hideUDFs' => false
]
];
@@ -46,11 +46,16 @@ class Config extends FHCAPI_Controller
'stv',
'konto'
]);
// Load Config
$this->load->config('stv');
}
public function student()
{
$result = [];
$config = $this->config->item('tabs');
$result['details'] = [
'title' => $this->p->t('stv', 'tab_details'),
'component' => './Stv/Studentenverwaltung/Details/Details.js'
@@ -69,7 +74,8 @@ class Config extends FHCAPI_Controller
];
$result['prestudent'] = [
'title' => $this->p->t('stv', 'tab_prestudent'),
'component' => './Stv/Studentenverwaltung/Details/Prestudent.js'
'component' => './Stv/Studentenverwaltung/Details/Prestudent.js',
'config' => $config['prestudent']
];
$result['status'] = [
'title' => 'Status',
@@ -19,6 +19,7 @@ class Prestudent extends FHCAPI_Controller
'getAufmerksamdurch' => ['admin:r', 'assistenz:r'],
'getBerufstaetigkeit' => ['admin:r', 'assistenz:r'],
'getTypenStg' => ['admin:r', 'assistenz:r'],
'getBisstandort' => ['admin:r', 'assistenz:r'],
'getStudienplaene' => ['admin:r', 'assistenz:r'],
'getStudiengang' => ['admin:r', 'assistenz:r']
]);
@@ -265,6 +266,17 @@ class Prestudent extends FHCAPI_Controller
return $this->terminateWithSuccess(getData($result) ?: []);
}
public function getBisstandort()
{
$this->load->model('codex/Bisstandort_model', 'BisstandortModel');
$result = $this->BisstandortModel->load();
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess(getData($result) ?: []);
}
public function getStudienplaene($prestudent_id)
{
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
@@ -0,0 +1,14 @@
<?php
class Bisstandort_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'bis.tbl_bisstandort';
$this->pk = 'standort_code';
}
}
+4 -2
View File
@@ -34,8 +34,10 @@
<?php
$configArray = [
'generateAlias' => !defined('GENERATE_ALIAS_STUDENT') ? true : GENERATE_ALIAS_STUDENT,
'showZgvDoktor' => !defined('ZGV_DOKTOR_ANZEIGEN') ? false : ZGV_DOKTOR_ANZEIGEN,
'showZgvErfuellt' => !defined('ZGV_ERFUELLT_ANZEIGEN') ? false : ZGV_ERFUELLT_ANZEIGEN
//replaced by possibility to hide each formular field via config stv.php
#'showZgvDoktor' => !defined('ZGV_DOKTOR_ANZEIGEN') ? false : ZGV_DOKTOR_ANZEIGEN,
#'showZgvErfuellt' => !defined('ZGV_ERFUELLT_ANZEIGEN') ? false : ZGV_ERFUELLT_ANZEIGEN
];
?>
+38
View File
@@ -1,5 +1,43 @@
export default {
//------------- Prestudent.js------------------------------------------------------
get(prestudent_id){
return this.$fhcApi.post('api/frontend/v1/stv/prestudent/get/' + prestudent_id);
},
updatePrestudent(prestudent_id, data){
return this.$fhcApi.post('api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,
data
);
},
getBezeichnungZGV() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');
},
getBezeichnungMZgv() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');
},
getBezeichnungDZgv() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');
},
getStgs() {
return this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');
},
getAusbildung() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');
},
getAufmerksamdurch() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');
},
getBerufstaetigkeit() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');
},
getTypenStg() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');
},
getBisstandort() {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');
},
//------------- MultiStatus.js------------------------------------------------------
getHistoryPrestudent (url, config, params){
@@ -15,14 +15,6 @@ export default {
lists: {
from: 'lists'
},
showZgvErfuellt: {
from: 'configShowZgvErfuellt',
default: false
},
showZgvDoktor: {
from: 'configShowZgvDoktor',
default: false
},
hasPrestudentPermission: {
from: 'hasPrestudentPermission',
default: false
@@ -41,6 +33,10 @@ export default {
},
props: {
modelValue: Object,
config: {
type: Object,
default: {}
}
},
data() {
return {
@@ -58,6 +54,7 @@ export default {
{ text: 'Nein', value: false }
],
listStgTyp: [],
listBisStandort: [],
initialFormData: {},
deltaArray: {},
actionUpdate: false
@@ -91,8 +88,7 @@ export default {
methods: {
loadPrestudent() {
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/get/' + this.modelValue.prestudent_id)
return this.$fhcApi.factory.stv.prestudent.get(this.modelValue.prestudent_id)
.then(result => result.data)
.then(result => {
this.data = result;
@@ -105,8 +101,7 @@ export default {
this.initialFormData = {...(this.initialFormData || {}), ...udfs};
},
updatePrestudent(){
this.$refs.form
.post('api/frontend/v1/stv/prestudent/updatePrestudent/' + this.modelValue.prestudent_id, this.deltaArray)
return this.$fhcApi.factory.stv.prestudent.updatePrestudent(this.modelValue.prestudent_id, this.deltaArray)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.deltaArray = [];
@@ -120,62 +115,60 @@ export default {
},
created() {
this.loadPrestudent();
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV')
this.$fhcApi.factory.stv.prestudent.getBezeichnungZGV()
.then(result => result.data)
.then(result => {
this.listZgvs = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv')
this.$fhcApi.factory.stv.prestudent.getBezeichnungMZgv()
.then(result => result.data)
.then(result => {
this.listZgvsmaster = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv')
this.$fhcApi.factory.stv.prestudent.getBezeichnungDZgv()
.then(result => result.data)
.then(result => {
this.listZgvsdoktor = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/lists/getStgs')
this.$fhcApi.factory.stv.prestudent.getStgs()
.then(result => result.data)
.then(result => {
this.listStgs = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getAusbildung')
this.$fhcApi.factory.stv.prestudent.getAusbildung()
.then(result => result.data)
.then(result => {
this.listAusbildung = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch')
this.$fhcApi.factory.stv.prestudent.getAufmerksamdurch()
.then(result => result.data)
.then(result => {
this.listAufmerksamdurch = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit')
this.$fhcApi.factory.stv.prestudent.getBerufstaetigkeit()
.then(result => result.data)
.then(result => {
this.listBerufe = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi
.get('api/frontend/v1/stv/prestudent/getTypenStg')
this.$fhcApi.factory.stv.prestudent.getTypenStg()
.then(result => result.data)
.then(result => {
this.listStgTyp = result;
})
.catch(this.$fhcAlert.handleSystemError);
this.$fhcApi.factory.stv.prestudent.getBisstandort()
.then(result => result.data)
.then(result => {
this.listBisStandort = result;
})
.catch(this.$fhcAlert.handleSystemError);
},
template: `
<div class="stv-details-prestudent h-100 pb-3">
@@ -187,7 +180,8 @@ export default {
<legend>{{$p.t('lehre', 'title_zgv')}} {{modelValue.nachname}} {{modelValue.vorname}}</legend>
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('prestudent_id')"
container-class="col-3 stv-details-prestudent-prestudent_id"
label="Prestudent_id"
type="text"
v-model="data.prestudent_id"
@@ -196,6 +190,8 @@ export default {
>
</form-input>
<form-input
v-if="!config.hiddenFields.includes('person_id')"
container-class="col-4 stv-details-prestudent-person_id"
container-class="col-3"
label="Person_id"
type="text"
@@ -207,7 +203,8 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgv_code')"
container-class="col-3 stv-details-prestudent-zgv_code"
label="ZGV"
type="select"
v-model="data.zgv_code"
@@ -216,7 +213,8 @@ export default {
<option v-for="zgv in listZgvs" :key="zgv.zgv_code" :value="zgv.zgv_code">{{zgv.zgv_bez}}</option>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvOrt')"
container-class="col-3 stv-details-prestudent-zgvOrt"
:label="$p.t('infocenter', 'zgvOrt')"
type="text"
v-model="data.zgvort"
@@ -224,7 +222,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvDatum')"
container-class="col-3 stv-details-prestudent-zgvDatum"
:label="$p.t('infocenter', 'zgvDatum')"
type="DatePicker"
v-model="data.zgvdatum"
@@ -238,7 +237,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvNation')"
container-class="col-3 stv-details-prestudent-zgvNation"
:label="$p.t('infocenter', 'zgvNation')"
type="select"
v-model="data.zgvnation"
@@ -250,7 +250,8 @@ export default {
</div>
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmas_code')"
container-class="col-3 stv-details-prestudent-zgvmas_code"
:label="$p.t('lehre', 'zgvMaster')"
type="select"
v-model="data.zgvmas_code"
@@ -259,7 +260,8 @@ export default {
<option v-for="mzgv in listZgvsmaster" :key="mzgv.zgvmas_code" :value="mzgv.zgvmas_code">{{mzgv.zgvmas_bez}}</option>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmaort')"
container-class="col-3 stv-details-prestudent-zgvmaort"
:label="$p.t('lehre', 'zgvMasterOrt')"
type="text"
v-model="data.zgvmaort"
@@ -267,7 +269,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmadatum')"
container-class="col-3 stv-details-prestudent-zgvmadatum"
:label="$p.t('lehre', 'zgvMasterDatum')"
type="DatePicker"
v-model="data.zgvmadatum"
@@ -281,7 +284,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvmanation')"
container-class="col-3 stv-details-prestudent-zgvmanation"
:label="$p.t('lehre', 'zgvMasterNation')"
type="select"
v-model="data.zgvmanation"
@@ -292,9 +296,10 @@ export default {
</form-input>
</div>
<!--ZGV Doktor-->
<div v-if="showZgvDoktor" class="row mb-3">
<div class="row mb-3">
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktor_code')"
container-class="col-3 stv-details-prestudent-zgvdoktor_code"
:label="$p.t('lehre', 'zgvDoktor')"
type="select"
v-model="data.zgvdoktor_code"
@@ -303,7 +308,8 @@ export default {
<option v-for="zgv in listZgvsdoktor" :key="zgv.zgvdoktor_code" :value="zgv.zgvdoktor_code">{{zgv.zgvdoktor_bez}}</option>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktorort')"
container-class="col-3 stv-details-prestudent-zgvdoktorort"
:label="$p.t('lehre', 'zgvDoktorOrt')"
type="text"
v-model="data.zgvdoktorort"
@@ -311,7 +317,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktordatum')"
container-class="col-3 stv-details-prestudent-zgvdoktordatum"
:label="$p.t('lehre', 'zgvDoktorDatum')"
type="DatePicker"
v-model="data.zgvdoktordatum"
@@ -325,7 +332,8 @@ export default {
>
</form-input>
<form-input
container-class="col-3"
v-if="!config.hiddenFields.includes('zgvdoktornation')"
container-class="col-3 stv-details-prestudent-zgvdoktornation"
:label="$p.t('lehre', 'zgvDoktorNation')"
type="select"
v-model="data.zgvdoktornation"
@@ -336,10 +344,11 @@ export default {
</form-input>
</div>
<div v-if="showZgvErfuellt" class="row mb-3">
<div class="row mb-3">
<div class="col-3 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('zgv_erfuellt')"
container-class="form-check stv-details-prestudent-zgv_erfuellt"
:label="$p.t('infocenter', 'zgvErfuellt')"
type="checkbox"
v-model="data.zgv_erfuellt"
@@ -349,18 +358,20 @@ export default {
</div>
<div class="col-3 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
:label="$p.t('infocenter', 'zgvMasterErfuellt')"
v-if="!config.hiddenFields.includes('zgvmas_erfuellt')"
container-class="form-check stv-details-prestudent-zgvmas_erfuellt"
:label="$p.t('lehre', 'zgvMasterErfuellt')"
type="checkbox"
v-model="data.zgvmas_erfuellt"
name="zgvmas_erfuellt"
>
</form-input>
</div>
<div v-if="showZgvDoktor" class="col-3 pt-4 d-flex align-items-center">
<div class="col-3 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
:label="$p.t('infocenter', 'zgvDoktorErfuellt')"
v-if="!config.hiddenFields.includes('zgvdoktor_erfuellt')"
container-class="form-check stv-details-prestudent-zgvdoktor_erfuellt"
:label="$p.t('lehre', 'zgvDoktorErfuellt')"
type="checkbox"
v-model="data.zgvdoktor_erfuellt"
name="zgvdoktor_erfuellt"
@@ -373,7 +384,8 @@ export default {
<legend>PrestudentIn</legend>
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('aufmerksamdurch_kurzbz')"
container-class="col-4 stv-details-prestudent-aufmerksamdurch_kurzbz"
:label="$p.t('person', 'aufmerksamDurch')"
type="select"
v-model="data.aufmerksamdurch_kurzbz"
@@ -382,7 +394,8 @@ export default {
<option v-for="adurch in listAufmerksamdurch" :key="adurch.aufmerksamdurch_kurzbz" :value="adurch.aufmerksamdurch_kurzbz">{{adurch.beschreibung}}</option>
</form-input>
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('berufstaetigkeit_code')"
container-class="col-4 stv-details-prestudent-berufstaetigkeit_code"
:label="$p.t('person', 'berufstaetigkeit')"
type="select"
v-model="data.berufstaetigkeit_code"
@@ -391,7 +404,8 @@ export default {
<option v-for="beruf in listBerufe" :key="beruf.berufstaetigkeit_code" :value="beruf.berufstaetigkeit_code">{{beruf.berufstaetigkeit_bez}} </option>
</form-input>
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('ausbildungcode')"
container-class="col-4 stv-details-prestudent-ausbildungcode"
:label="$p.t('person', 'ausbildung')"
type="select"
v-model="data.ausbildungcode"
@@ -401,21 +415,22 @@ export default {
</form-input>
</div>
` + /* TODO(chris): Ausgeblendet für Testing
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('aufnahmeschluessel')"
container-class="col-4 stv-details-prestudent-aufnahmeschluessel"
label="Aufnahmeschlüssel"
type="text"
v-model="data.aufnahmeschluessel"
name="aufnahmeschluessel"
disabled
disabled
>
</form-input>
<div class="col-4 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('facheinschlaegigBerufstaetig')"
container-class="form-check stv-details-prestudent-facheinschlaegigBerufstaetig"
:label="$p.t('person', 'facheinschlaegigBerufstaetig')"
type="checkbox"
v-model="data.facheinschlberuf"
@@ -424,45 +439,46 @@ export default {
</form-input>
</div>
<!--Todo(manu) validierung Integer, liste hier null-->
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('standort_code')"
container-class="col-4 stv-details-prestudent-standort_code"
:label="$p.t('person', 'bisstandort')"
type="text"
type="select"
v-model="data.standort_code"
name="standort_code"
disabled
>
</form-input>
<option v-for="standort in listBisStandort" :key="standort.standort_code" :value="standort.standort_code">{{standort.bezeichnung}}</option>
</form-input>
</div>
*/`
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('studiengang_kz')"
container-class="col-4 stv-details-prestudent-studiengang_kz"
:label="$p.t('lehre', 'studiengang')"
type="select"
v-model="data.studiengang_kz"
name="studiengang_kz"
disabled
>
<option v-for="stg in listStgs" :key="stg.studiengang_kz" :value="stg.studiengang_kz">{{stg.kuerzel}} - {{stg.bezeichnung}} </option>
<option v-for="stg in listStgs" :key="stg.studiengang_kz" :value="stg.studiengang_kz">{{stg.kuerzel}} - {{stg.bezeichnung}}</option>
</form-input>
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('gsstudientyp_kurzbz')"
container-class="col-4 stv-details-prestudent-gsstudientyp_kurzbz"
:label="$p.t('lehre', 'studientyp')"
type="select"
v-model="data.gsstudientyp_kurzbz"
name="gsstudientyp_kurzbz"
>
<option v-for="typ in listStgTyp" :key="typ.typ" :value="typ.typ">{{typ.bezeichnung}} </option>
<option v-for="typ in listStgTyp" :key="typ.typ" :value="typ.typ">{{typ.bezeichnung}}</option>
</form-input>
</div>
<div class="row mb-3">
<form-input
container-class="col-4"
v-if="!config.hiddenFields.includes('anmerkung')"
container-class="col-4 stv-details-prestudent-anmerkung"
:label="$p.t('global', 'anmerkung')"
type="text"
v-model="data.anmerkung"
@@ -471,7 +487,8 @@ export default {
</form-input>
<div class="col-2 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('bismelden')"
container-class="form-check stv-details-prestudent-bismelden"
:label="$p.t('person', 'bismelden')"
type="checkbox"
v-model="data.bismelden"
@@ -481,7 +498,8 @@ export default {
</div>
<div class="col-2 pt-4 d-flex align-items-center">
<form-input
container-class="form-check"
v-if="!config.hiddenFields.includes('dual')"
container-class="form-check stv-details-prestudent-dual"
:label="$p.t('lehre', 'dual')"
type="checkbox"
v-model="data.dual"
@@ -489,7 +507,7 @@ export default {
>
</form-input>
</div>
` + /* TODO(chris): Ausgeblendet für Testing
<form-input
container-class="col-3"
:label="$p.t('lehre', 'foerderrelevant')"
@@ -499,9 +517,9 @@ export default {
>
<option v-for="entry in listFoerderrelevant" :value="entry.value">{{entry.text}}</option>
</form-input>
*/`
<form-input
v-if="!config.hiddenFields.includes('priorisierung')"
container-class="col-1"
:label="$p.t('lehre', 'prioritaet')"
type="text"
@@ -511,7 +529,15 @@ export default {
>
</form-input>
</div>
<core-udf @load="udfsLoaded" v-model="data" class="row-cols-3 g-3 mb-3" ci-model="crm/prestudent" :pk="{prestudent_id:modelValue.prestudent_id}"></core-udf>
<core-udf
v-if="!config.hideUDFs"
@load="udfsLoaded"
v-model="data"
class="row-cols-3 g-3 mb-3"
ci-model="crm/prestudent"
:pk="{prestudent_id:modelValue.prestudent_id}"
>
</core-udf>
</fieldset>
</form-form>
<div>
@@ -154,6 +154,7 @@ export default{
layoutColumnsOnNewData: false,
height: 'auto',
selectable: false,
//TODO(Manu) define Persistence Id to avoid empty result array if sort index not corresponding
},
tabulatorEvents: [
{