Studierendenverwaltung Projektarbeit: date value ende and gesperrt bis can be saved, full type name is shown in Projektarbeit table, made "kontaktdaten bearbeiten" and "person anlegen" buttons less prominent, bugfix cancel contract: contract display is updated immediately

This commit is contained in:
Alexei Karpenko
2025-07-08 15:35:46 +02:00
parent 549f7867ae
commit abbeec11fc
4 changed files with 36 additions and 18 deletions
@@ -86,8 +86,8 @@ class Projektarbeit extends FHCAPI_Controller
if (!isset($projektarbeit_id) || !is_numeric($projektarbeit_id)) return $this->terminateWithError('Projektarbeit Id missing', self::ERROR_TYPE_GENERAL);
$this->ProjektarbeitModel->addSelect(
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, firma_id,
lehrveranstaltung_id, lehreinheit_id, beginn, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
'lehre.tbl_projektarbeit.projektarbeit_id, titel, titel_english, themenbereich, projekttyp_kurzbz, lehrveranstaltung_id, lehreinheit_id,
firma_id, beginn, ende, gesperrtbis, note, final, freigegeben, tbl_projektarbeit.anmerkung, fa.name AS firma_name'
);
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
$this->ProjektarbeitModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
@@ -285,6 +285,14 @@ class Projektarbeit extends FHCAPI_Controller
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Beginn'])
]);
$this->form_validation->set_rules('ende', 'Ende', 'is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Ende'])
]);
$this->form_validation->set_rules('gesperrtbis', 'Ende', 'is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Gesperrt bis'])
]);
return $this->form_validation->run();
}
@@ -303,6 +311,7 @@ class Projektarbeit extends FHCAPI_Controller
'firma_id' => $formData['firma_id'] ?? null,
'lehreinheit_id' => $formData['lehreinheit_id'],
'beginn' => $formData['beginn'] ?? null,
'ende' => $formData['ende'] ?? null,
'note' => $formData['note'] ?? null,
'final' => $formData['final'] ?? null,
'freigegeben' => $formData['freigegeben'] ?? null,
@@ -42,7 +42,8 @@ export default {
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Projektarbeit ID", field: "projektarbeit_id", visible: false},
{title: "Typ", field: "projekttyp_kurzbz"},
{title: "Typ", field: "bezeichnung"},
{title: "Typ Kurzbz", field: "projekttyp_kurzbz", visible: false},
{title: "Studiensemester", field: "studiensemester_kurzbz"},
{title: "Titel", field: "titel"},
{
@@ -179,6 +180,10 @@ export default {
minHeight: '200',
selectable: 1,
index: 'projektarbeit_id',
//persistenceMode:"cookie",
//~ persistence:{
//~ columns: true, //persist column layout
//~ },
persistenceID: 'stv-details-projektarbeit'
},
tabulatorEvents: [
@@ -325,8 +330,6 @@ export default {
this.$refs.table.reloadTable();
}
},
created() {
},
template: `
<div class="stv-details-projektarbeit h-100 pb-3">
<h4>{{this.$p.t('stv','tab_projektarbeit')}}</h4>
@@ -386,8 +386,8 @@ export default {
.catch(this.$fhcAlert.handleSystemError)
},
// disable fields which are dependent on Vertrag status
disableVertragFields(disabled) {
this.vertragFieldsDisabled = disabled;
disableVertragFields(statusAkzeptiert) {
this.vertragFieldsDisabled = statusAkzeptiert;
}
},
template: `
@@ -428,10 +428,10 @@ export default {
<div class="row mb-3">
<div class="col-6">
<button class="btn btn-primary" @click="actionNewPerson">{{ $p.t('projektarbeit', 'neuePersonAnlegen') }}</button>
<button class="btn btn-outline-secondary" @click="actionNewPerson">{{ $p.t('projektarbeit', 'neuePersonAnlegen') }}</button>
</div>
<div class="col-6">
<button class="btn btn-primary float-end" @click="actionKontaktdatenBearbeiten">{{ $p.t('projektarbeit', 'kontaktdatenBearbeiten') }}</button>
<button class="btn btn-outline-secondary float-end" @click="actionKontaktdatenBearbeiten">{{ $p.t('projektarbeit', 'kontaktdatenBearbeiten') }}</button>
</div>
</div>
@@ -35,7 +35,7 @@ export default{
// status names for stages of Vertrag ("constants")
vertragsstatus_akzeptiert: 'Akzeptiert',
vertragsstatus_geaendert:'Geändert',
vertragsstatus_storniert: 'Storniert',
vertragsstatus_storniert: 'Storno'
}
},
watch: {
@@ -43,7 +43,7 @@ export default{
{
//deep: true,
handler(newVal, oldVal) {
this.setDefaultData();
this.resetForm();
if (newVal !== null && newVal !== undefined) this.getVertrag();
}
},
@@ -82,7 +82,9 @@ export default{
this.$api.call(ApiVertrag.getVertrag(this.vertrag_id))
.then(result => {
this.data = result.data;
if (result.data.vertragsstatus != this.vertragsstatus_storniert) {
this.data = result.data;
}
})
.catch(this.$fhcAlert.handleSystemError);
},
@@ -97,17 +99,21 @@ export default{
this.$api.call(ApiVertrag.cancelVertrag({vertrag_id: this.vertrag_id, person_id: this.person_id}))
})
.then(result => {
this.setDefaultData();
this.resetForm();
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
this.$emit('canceledVertrag');
// vertragsstatus not "akzeptiert" anymore
// vertragsstatus not "akzeptiert" anymore
this.$emit('vertragsstatusChanged', false);
})
.catch(this.$fhcAlert.handleSystemError);
},
setDefaultData() {
this.data.vertragsstatus = null;
this.data.vertragsstunden = null;
this.data.vertragsstunden_studiensemester_kurzbz = null;
resetForm() {
this.data = {
vertrag_id: null,
vertragsstatus: null,
vertragsstunden: null,
vertragsstunden_studiensemester_kurzbz: null
}
}
},
template: `