actions insert, update, delete, link Pruefungsprotokoll

This commit is contained in:
ma0068
2024-11-28 16:29:13 +01:00
parent f398a5699f
commit bf6b6e4563
5 changed files with 3330 additions and 3007 deletions
@@ -11,7 +11,7 @@ class Abschlusspruefung extends FHCAPI_Controller
parent::__construct([
'getAbschlusspruefung' => ['admin:r', 'assistenz:r'],
'loadAbschlusspruefung' => ['admin:r', 'assistenz:r'],
'addNewAbschlusspruefung' => ['admin:rw', 'assistenz:rw'],
'insertAbschlusspruefung' => ['admin:rw', 'assistenz:rw'],
'updateAbschlusspruefung' => ['admin:rw', 'assistenz:rw'],
'deleteAbschlusspruefung' => ['admin:rw', 'assistenz:rw'],
'getTypenAbschlusspruefung' => ['admin:rw', 'assistenz:rw'],
@@ -58,11 +58,9 @@ class Abschlusspruefung extends FHCAPI_Controller
array('abschlusspruefung_id' => $abschlusspruefung_id)
);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess((getData($result) ?: []));
$this->terminateWithSuccess(current($data));
}
public function getTypenAbschlusspruefung()
@@ -166,4 +164,172 @@ class Abschlusspruefung extends FHCAPI_Controller
return $this->terminateWithSuccess(getData($result) ?: []);
}
public function insertAbschlusspruefung()
{
$this->load->library('form_validation');
$student_uid = $this->input->post('uid');
if(!$student_uid)
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Student UID']), self::ERROR_TYPE_GENERAL);
}
$formData = $this->input->post('formData');
$_POST['pruefungstyp_kurzbz'] = $formData['pruefungstyp_kurzbz'];
$_POST['akadgrad_id']= $formData['akadgrad_id'];
$_POST['vorsitz']= $formData['vorsitz'];
$_POST['pruefungsantritt_kurzbz'] = $formData['pruefungsantritt_kurzbz'];
$_POST['abschlussbeurteilung_kurzbz'] = $formData['abschlussbeurteilung_kurzbz'];
$_POST['datum']= $formData['datum'];
$_POST['sponsion']= $formData['sponsion'];
$_POST['pruefer1'] = $formData['pruefer1'];
$_POST['pruefer2']= $formData['pruefer2'];
$_POST['pruefer3']= $formData['pruefer3'];
$_POST['anmerkung'] = $formData['anmerkung'];
$_POST['protokoll']= $formData['protokoll'];
$_POST['note'] = $formData['note'];
$this->form_validation->set_rules('pruefungstyp_kurzbz', 'Typ', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Typ'])
]);
$this->form_validation->set_rules('datum', 'Datum', 'is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Datum'])
]);
//TODO(Manu) just for testing, not really required
$this->form_validation->set_rules('sponsion', 'Sponsion', 'required|is_valid_date', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Sponsion']),
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Sponsion'])
]);
/* $this->form_validation->set_rules('sponsion', 'Sponsion', 'is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Sponsion'])
]);*/
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$result = $this->AbschlusspruefungModel->insert([
'student_uid' => $student_uid,
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
'akadgrad_id' => $this->input->post('akadgrad_id'),
'vorsitz' => $this->input->post('vorsitz'),
'pruefungsantritt_kurzbz' => $this->input->post('pruefungsantritt_kurzbz'),
'abschlussbeurteilung_kurzbz' => $this->input->post('abschlussbeurteilung_kurzbz'),
'datum' => $this->input->post('datum'),
'sponsion' => $this->input->post('sponsion'),
'pruefer1' => $this->input->post('pruefer1'),
'pruefer2' => $this->input->post('pruefer2'),
'pruefer3' => $this->input->post('pruefer3'),
'protokoll' => $this->input->post('protokoll'),
'note' => $this->input->post('note'),
'anmerkung' => $this->input->post('anmerkung'),
'insertamum' => date('c'),
'insertvon' => getAuthUID()
]);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function updateAbschlusspruefung()
{
$this->load->library('form_validation');
$abschlusspruefung_id = $this->input->post('id');
if(!$abschlusspruefung_id)
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id'=> 'Abschlussprüfung ID']), self::ERROR_TYPE_GENERAL);
}
$formData = $this->input->post('formData');
$_POST['student_uid'] = $formData['student_uid'];
$_POST['pruefungstyp_kurzbz'] = $formData['pruefungstyp_kurzbz'];
$_POST['akadgrad_id']= $formData['akadgrad_id'];
$_POST['vorsitz']= $formData['vorsitz'];
$_POST['pruefungsantritt_kurzbz'] = $formData['pruefungsantritt_kurzbz'];
$_POST['abschlussbeurteilung_kurzbz'] = $formData['abschlussbeurteilung_kurzbz'];
$_POST['datum']= $formData['datum'];
$_POST['sponsion']= $formData['sponsion'];
$_POST['pruefer1'] = $formData['pruefer1'];
$_POST['pruefer2']= $formData['pruefer2'];
$_POST['pruefer3']= $formData['pruefer3'];
$_POST['anmerkung'] = $formData['anmerkung'];
$_POST['protokoll']= $formData['protokoll'];
$_POST['note'] = $formData['note'];
$this->form_validation->set_rules('pruefungstyp_kurzbz', 'Typ', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Typ'])
]);
$this->form_validation->set_rules('datum', 'Datum', 'is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Datum'])
]);
//TODO(Manu) just for testing, not really required
$this->form_validation->set_rules('sponsion', 'Sponsion', 'required|is_valid_date', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Sponsion']),
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Sponsion'])
]);
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$result = $this->AbschlusspruefungModel->update(
[
'abschlusspruefung_id' => $abschlusspruefung_id
],
[
'student_uid' => $this->input->post('student_uid'),
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
'akadgrad_id' => $this->input->post('akadgrad_id'),
'vorsitz' => $this->input->post('vorsitz'),
'pruefungsantritt_kurzbz' => $this->input->post('pruefungsantritt_kurzbz'),
'abschlussbeurteilung_kurzbz' => $this->input->post('abschlussbeurteilung_kurzbz'),
'datum' => $this->input->post('datum'),
'sponsion' => $this->input->post('sponsion'),
'pruefer1' => $this->input->post('pruefer1'),
'pruefer2' => $this->input->post('pruefer2'),
'pruefer3' => $this->input->post('pruefer3'),
'protokoll' => $this->input->post('protokoll'),
'note' => $this->input->post('note'),
'anmerkung' => $this->input->post('anmerkung'),
'insertamum' => date('c'),
'insertvon' => getAuthUID()
]
);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function deleteAbschlusspruefung()
{
$abschlusspruefung_id = $this->input->post('id');
$result = $this->AbschlusspruefungModel->delete(
array('abschlusspruefung_id' => $abschlusspruefung_id)
);
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
if (!hasData($result))
{
$this->outputJson($result);
}
return $this->terminateWithSuccess(current(getData($result)) ? : null);
}
}
@@ -151,23 +151,22 @@ class Abschlusspruefung_model extends DB_Model
person_pruefer2.nachname as p2_nachname,
person_pruefer3.nachname as p3_nachname,
person_vorsitzender.nachname as vorsitz_nachname,
beurteilung.bezeichnung as beurteilung_bezeichnung
beurteilung.bezeichnung as beurteilung_bezeichnung,
antritt.bezeichnung as antritt_bezeichnung
FROM
lehre.tbl_abschlusspruefung exam
JOIN lehre.tbl_pruefungstyp USING (pruefungstyp_kurzbz)
JOIN public.tbl_benutzer ben_vorsitzender ON (ben_vorsitzender.uid = vorsitz)
JOIN public.tbl_person person_vorsitzender ON (ben_vorsitzender.person_id = person_vorsitzender.person_id)
JOIN public.tbl_person person_pruefer1 ON (person_pruefer1.person_id = pruefer1)
LEFT JOIN public.tbl_benutzer ben_vorsitzender ON (ben_vorsitzender.uid = vorsitz)
LEFT JOIN public.tbl_person person_vorsitzender ON (ben_vorsitzender.person_id = person_vorsitzender.person_id)
LEFT JOIN public.tbl_person person_pruefer1 ON (person_pruefer1.person_id = pruefer1)
LEFT JOIN public.tbl_person person_pruefer2 ON (person_pruefer2.person_id = pruefer2)
LEFT JOIN public.tbl_person person_pruefer3 ON (person_pruefer3.person_id = pruefer3)
JOIN lehre.tbl_abschlussbeurteilung beurteilung USING (abschlussbeurteilung_kurzbz)
LEFT JOIN lehre.tbl_abschlussbeurteilung beurteilung USING (abschlussbeurteilung_kurzbz)
LEFT JOIN lehre.tbl_abschlusspruefung_antritt antritt USING (pruefungsantritt_kurzbz)
WHERE student_uid = ?
ORDER BY datum DESC
";
return $this->execQuery($qry, array('student_uid' => $student_uid));
}
}
+4 -6
View File
@@ -3,17 +3,15 @@ export default {
getAbschlusspruefung (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);
},
addNewAbschlusspruefung(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/addNewAbschlusspruefung/' + id,
data
addNewAbschlusspruefung(data) {
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data
);
},
loadAbschlusspruefung(id){
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});
},
updateAbschlusspruefung(id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/' + id,
data
updateAbschlusspruefung(data) {
return this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data
);
},
deleteAbschlusspruefung(id){
@@ -13,6 +13,11 @@ export default {
FormInput,
PvAutoComplete
},
inject: {
cisRoot: {
from: 'cisRoot'
},
},
props: {
student: Object
},
@@ -36,7 +41,7 @@ export default {
{title: "datum", field: "format_datum"},
{title: "uhrzeit", field: "uhrzeit"},
{title: "freigabe", field: "format_freigabedatum"},
{title: "pruefungsantritt", field: "pruefungsantritt_kurzbz"},
{title: "pruefungsantritt", field: "antritt_bezeichnung"},
{title: "sponsion", field: "format_sponsion"},
{title: "anmerkung", field: "anmerkung"},
{title: "abschlusspruefung_id", field: "abschlusspruefung_id", visible: false},
@@ -132,7 +137,19 @@ export default {
formData: {
typStg: null,
pruefungstyp_kurzbz: null,
akadgrad_id: null
akadgrad_id: null,
vorsitz: null,
pruefungsantritt_kurzbz: null,
abschlussbeurteilung_kurzbz: null,
datum: null,
sponsion: null,
pruefer1: null,
pruefer2: null,
pruefer3: null,
anmerkung: null,
protokoll: null,
note: null,
link: null
},
statusNew: true,
arrTypen: [],
@@ -145,22 +162,19 @@ export default {
abortController: {
mitarbeiter: null,
pruefer: null
}
},
}
},
methods: {
actionNewAbschlusspruefung() {
this.resetForm();
this.statusNew = false;
this.statusNew = true;
this.setDefaultFormData();
},
actionEditAbschlusspruefung(abschlusspruefung_id) {
this.resetForm();
this.statusNew = false;
console.log("action edit: ", abschlusspruefung_id);
this.loadAbschlusspruefung(abschlusspruefung_id).then(() => {
if (this.formData.abschlusspruefung_id){
console.log("activate form?");
}
});
this.loadAbschlusspruefung(abschlusspruefung_id);
},
actionDeleteAbschlusspruefung(abschlusspruefung_id) {
this.$fhcAlert
@@ -171,15 +185,19 @@ export default {
.then(this.deleteAbschlusspruefung)
.catch(this.$fhcAlert.handleSystemError);
},
addNewAbschlusspruefung(formData) {
this.formData.plz = this.formData.address.plz;
return this.$refs.formData.factory.stv.abschlusspruefung.addNewAbschlusspruefung(this.uid, this.formData)
addNewAbschlusspruefung(){
const dataToSend = {
uid: this.student.uid,
formData: this.formData
};
return this.$refs.formFinalExam.factory.stv.abschlusspruefung.addNewAbschlusspruefung(dataToSend)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetForm();
}).catch(this.$fhcAlert.handleSystemError)
})
.catch(this.$fhcAlert.handleSystemError)
.finally(() => {
//window.scrollTo(0, 0);
this.reload();
});
},
@@ -187,25 +205,26 @@ export default {
this.$refs.table.reloadTable();
},
loadAbschlusspruefung(abschlusspruefung_id) {
this.statusNew = false;
return this.$fhcApi.factory.stv.abschlusspruefung.loadAbschlusspruefung(abschlusspruefung_id)
.then(result => {
this.formData = result.data;
this.formData.link = this.cisRoot + 'index.ci.php/lehre/Pruefungsprotokoll/showProtokoll?abschlusspruefung_id='+this.formData.abschlusspruefung_id+'&fhc_controller_id=67481e5ed5490';
return result;
})
.catch(this.$fhcAlert.handleSystemError);
},
updateAbschlusspruefung(abschlusspruefung_id) {
this.formData.plz = this.formData.address.plz;
return this.$refs.formData.factory.stv.abschlusspruefung.updateAbschlusspruefung(abschlusspruefung_id,
this.formData
).then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal('adressModal');
this.resetForm();
}).catch(this.$fhcAlert.handleSystemError)
const dataToSend = {
id: abschlusspruefung_id,
formData: this.formData
};
return this.$refs.formFinalExam.factory.stv.abschlusspruefung.updateAbschlusspruefung(dataToSend)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetForm();
})
.catch(this.$fhcAlert.handleSystemError)
.finally(() => {
//window.scrollTo(0, 0);
this.reload();
});
},
@@ -213,15 +232,26 @@ export default {
return this.$fhcApi.factory.stv.abschlusspruefung.deleteAbschlusspruefung(abschlusspruefung_id)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
}).catch(this.$fhcAlert.handleSystemError)
})
.catch(this.$fhcAlert.handleSystemError)
.finally(()=> {
window.scrollTo(0, 0);
this.reload();
});
},
resetForm() {
this.formData = {};
this.statusNew = true;
this.formData.pruefungstyp_kurzbz = null;
this.formData.akadgrad_id = null;
this.formData.vorsitz = null;
this.formData.pruefungsantritt_kurzbz = null;
this.formData.abschlussbeurteilung_kurzbz = null;
this.formData.datum = null; //oder new Date();
this.formData.sponsion = null;
this.formData.pruefer1 = null;
this.formData.pruefer2 = null;
this.formData.pruefer3 = null;
this.formData.anmerkung = null;
this.formData.protokoll = null;
this.formData.note = null;
},
search(event) {
if (this.abortController.mitarbeiter) {
@@ -229,7 +259,7 @@ export default {
}
this.abortController.mitarbeiter = new AbortController();
return this.$refs.formData.factory.stv.abschlusspruefung.getMitarbeiter(event.query)
return this.$refs.formFinalExam.factory.stv.abschlusspruefung.getMitarbeiter(event.query)
.then(result => {
this.filteredMitarbeiter = result.data.retval;
});
@@ -240,34 +270,33 @@ export default {
}
this.abortController.pruefer = new AbortController();
return this.$refs.formData.factory.stv.abschlusspruefung.getPruefer(event.query)
return this.$refs.formFinalExam.factory.stv.abschlusspruefung.getPruefer(event.query)
.then(result => {
this.filteredPruefer = result.data.retval;
});
},
setDefaultFormData(){
//TODO(Manu) check why phrasen not working
this.resetForm();
//TODO(Manu) check why phrasen abschlusspruefung not working
//check lg: if no prüfungsnotizen
if (this.formData.typStg === 'b')
{
this.formData.pruefungstyp_kurzbz = 'Bachelor';
this.formData.protokoll = this.$p.t('abschlusspruefung', 'pruefungsnotizenBachelor');
this.formData.protokoll = this.$p.t('ui', 'pruefungsnotizenMaster');
this.formData.protokoll = this.$p.t('ui', 'pruefungsnotizenBachelor2');
}
if (this.formData.typStg === 'd'){
this.formData.pruefungstyp_kurzbz = 'Diplom';
this.formData.protokoll = this.$p.t('abschlusspruefung', 'pruefungsnotizenBachelor');
this.formData.protokoll = this.$p.t('abschlusspruefung', 'pruefungsnotizenMaster');
}
if (this.formData.typStg === 'lg')
{
this.formData.pruefungstyp_kurzbz = 'lgabschluss';
}
// else
// console.log("no Typ??");
if (!this.formData.akadgrad_id && this.arrAkadGrad.length > 0) {
console.log("in here");
this.formData.akadgrad_id = this.arrAkadGrad[0].akadgrad_id;
}
}
@@ -308,10 +337,6 @@ export default {
template: `
<div class="stv-details-abschlusspruefung h-100 pb-3">
<h1>{{this.$p.t('stv','tab_finalexam')}} </h1>
<!-- {{typStg}}
<hr>
{{formData}}
{{arrAkadGrad}}-->
<core-filter-cmpt
ref="table"
:tabulator-options="tabulatorOptions"
@@ -325,8 +350,9 @@ export default {
>
</core-filter-cmpt>
<form-form ref="formData">
<form-form ref="formFinalExam" @submit.prevent>
<legend>{{this.$p.t('global','details')}}</legend>
<p v-if="statusNew">[neu]</p>
<div class="row mb-3">
<form-input
container-class="col-6 stv-details-abschlusspruefung-typ"
@@ -350,6 +376,7 @@ export default {
v-model="formData.note"
name="note"
>
<option :value="null">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option
v-for="note in arrNoten"
:key="note.note"
@@ -380,7 +407,8 @@ export default {
</div>
<div class="row mb-3">
<form-input
<!--TODO(Manu) Bug Autocompletefelder: nach Behebung wieder einblenden!-->
<!-- <form-input
container-class="col-6 stv-details-abschlusspruefung-vorsitz"
label="Vorsitz"
type="autocomplete"
@@ -391,8 +419,16 @@ export default {
@complete="search"
:min-length="3"
>
</form-input>
</form-input>-->
<form-input
container-class="col-6 stv-details-abschlusspruefung-vorsitz"
label="vorsitz"
type="text"
v-model="formData.vorsitz"
name="vorsitz"
>
</form-input>
<!-- <form-input
container-class="col-6 stv-details-abschlusspruefung-pruefer1"
label="Prüferin1"
type="autocomplete"
@@ -403,6 +439,15 @@ export default {
@complete="searchNotAkad"
:min-length="3"
>
</form-input>-->
<!--TODO(Manu) Umbau auf Person_id-->
<form-input
container-class="col-6 stv-details-abschlusspruefung-pruefer1"
label="pruefer1"
type="text"
v-model="formData.pruefer1"
name="pruefer1"
>
</form-input>
</div>
@@ -415,6 +460,7 @@ export default {
v-model="formData.abschlussbeurteilung_kurzbz"
name="abschlussbeurteilung_kurzbz"
>
<option :value="null">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option
v-for="beurteilung in arrBeurteilungen"
:key="beurteilung.abschlussbeurteilung_kurzbz"
@@ -423,7 +469,7 @@ export default {
{{beurteilung.bezeichnung}}
</option>
</form-input>
<form-input
<!-- <form-input
container-class="col-6 stv-details-abschlusspruefung-pruefer2"
label="Prüferin2"
type="autocomplete"
@@ -434,6 +480,14 @@ export default {
@complete="searchNotAkad"
:min-length="3"
>
</form-input>-->
<form-input
container-class="col-6 stv-details-abschlusspruefung-pruefer2"
label="pruefer2"
type="text"
v-model="formData.pruefer2"
name="pruefer2"
>
</form-input>
</div>
@@ -453,7 +507,7 @@ export default {
{{grad.titel}}
</option>
</form-input>
<form-input
<!-- <form-input
container-class="col-6 stv-details-abschlusspruefung-pruefer3"
label="Prüferin3"
type="autocomplete"
@@ -464,6 +518,14 @@ export default {
@complete="searchNotAkad"
:min-length="3"
>
</form-input>-->
<form-input
container-class="col-6 stv-details-abschlusspruefung-pruefer3"
label="pruefer3"
type="text"
v-model="formData.pruefer3"
name="pruefer3"
>
</form-input>
</div>
@@ -513,8 +575,22 @@ export default {
>
</form-input>
</div>
<div class="row mb-3 col-6">
<div class="col">
<p >Zur Beurteilung</p>
</div>
<div class="col">
<!--TODO(Manu) vl auch als action mit icon_auge?-->
<p>
<a :href="formData.link" target="_blank" rel="noopener noreferrer">
Prüfungsprotokoll
</a>
</p>
</div>
</div>
<div>
<div class="text-end mb-3">
<button v-if="statusNew" class="btn btn-primary" @click="addNewAbschlusspruefung()"> {{$p.t('ui', 'speichern')}}</button>
<button v-else class="btn btn-primary" @click="updateAbschlusspruefung(formData.abschlusspruefung_id)"> {{$p.t('ui', 'speichern')}}</button>
</div>
+3025 -2941
View File
File diff suppressed because it is too large Load Diff