diff --git a/application/controllers/api/frontend/v1/stv/Mobility.php b/application/controllers/api/frontend/v1/stv/Mobility.php
index fa1a62e77..343bc4b9e 100644
--- a/application/controllers/api/frontend/v1/stv/Mobility.php
+++ b/application/controllers/api/frontend/v1/stv/Mobility.php
@@ -14,7 +14,15 @@ class Mobility extends FHCAPI_Controller
'insertMobility' => ['admin:rw', 'assistenz:rw'],
'updateMobility' => ['admin:rw', 'assistenz:rw'],
'deleteMobility' => ['admin:rw', 'assistenz:rw'],
- 'getProgramsMobility' => ['admin:rw', 'assistenz:rw'],
+ 'getProgramsMobility' => ['admin:r', 'assistenz:r'],
+ 'getLVList' => ['admin:r', 'assistenz:r'],
+ 'getPurposes' => ['admin:r', 'assistenz:r'],
+ 'getListPurposes' => ['admin:r', 'assistenz:r'],
+ 'getListSupports' => ['admin:r', 'assistenz:r'],
+ 'deleteMobilityPurpose' => ['admin:r', 'assistenz:r'],
+ 'addMobilityPurpose' => ['admin:r', 'assistenz:r'],
+
+
]);
// Load Libraries
@@ -56,4 +64,208 @@ class Mobility extends FHCAPI_Controller
$this->terminateWithSuccess($data);
}
+ public function insertMobility()
+ {
+ //TODO(Manu) Validations
+ //Pflicht gast und herkunftsland
+ $authUID = getAuthUID();
+
+ $formData = $this->input->post('formData');
+
+ $von = (isset($formData['von']) && !empty($formData['von'])) ? $formData['von'] : null;
+$nation_code = (isset($formData['nation_code']) && !empty($formData['nation_code'])) ? $formData['nation_code'] : 'A';
+$mobilitaetsprogramm_code = (isset($formData['mobilitaetsprogramm_code']) && !empty($formData['mobilitaetsprogramm_code'])) ? $formData['mobilitaetsprogramm_code'] : null;
+$herkunftsland_code = (isset($formData['herkunftsland_code']) && !empty($formData['herkunftsland_code'])) ? $formData['herkunftsland_code'] : 'A';
+$ort = (isset($formData['ort']) && !empty($formData['ort'])) ? $formData['ort'] : null;
+$universitaet = (isset($formData['universitaet']) && !empty($formData['universitaet'])) ? $formData['universitaet'] : null;
+$ects_erworben = (isset($formData['ects_erworben']) && !empty($formData['ects_erworben'])) ? $formData['ects_erworben'] : null;
+$ects_angerechnet = (isset($formData['ects_angerechnet']) && !empty($formData['ects_angerechnet'])) ? $formData['ects_angerechnet'] : null;
+$localPurposes = (isset($formData['localPurposes']) && !empty($formData['localPurposes'])) ? $formData['localPurposes'] : null;
+
+
+ //strange fields
+ /* 'zweck_code' => $this->input->post('zweck_code'),
+ 'aufenthalt_foerderung' => $this->input->post('aufenthalt_foerderung'),
+ 'lehreinheit_id' => $this->input->post('lehreinheit_id'),
+ 'lehrveranstaltung_id' => $this->input->post('lehrveranstaltung_id'),*/
+
+
+ $result = $this->BisioModel->insert([
+ 'student_uid' => $this->input->post('uid'),
+ 'von' => $von,
+ 'bis' => $formData['bis'],
+ 'mobilitaetsprogramm_code' => $mobilitaetsprogramm_code,
+ 'nation_code' => $nation_code,
+ 'herkunftsland_code' => $herkunftsland_code,
+ 'ort' => $ort,
+ 'universitaet' => $universitaet,
+ 'ects_erworben' => $ects_erworben,
+ 'ects_angerechnet' => $ects_angerechnet,
+ 'insertamum' => date('c'),
+ 'insertvon' => $authUID,
+ ]);
+
+ $bisio_id = $this->getDataOrTerminateWithError($result);
+
+ //check if localData (purposes)
+ if(count($localPurposes) > 0){
+
+ // $this->terminateWithError('Speichern von Zweck notwendig mit neuer bisio_id ' . $bisio_id, self::ERROR_TYPE_GENERAL);
+
+ foreach ($localPurposes as $zweck){
+ $zweck = (int) $zweck;
+ $this->addMobilityPurpose($bisio_id, $zweck);
+ }
+ }
+
+ $this->terminateWithSuccess();
+ }
+
+ public function loadMobility($bisio_id)
+ {
+ $result = $this->BisioModel->load($bisio_id);
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess(current($data));
+ }
+
+ public function updateMobility()
+ {
+ $authUID = getAuthUID();
+ $formData = $this->input->post('formData');
+
+ $result = $this->BisioModel->update(
+ [
+ 'bisio_id' => $formData['bisio_id']
+ ],
+ [
+ 'student_uid' => $this->input->post('uid'),
+ 'von' => $formData['von'],
+ 'bis' => $formData['bis'],
+ 'mobilitaetsprogramm_code' => $formData['mobilitaetsprogramm_code'],
+ 'nation_code' => $formData['nation_code'],
+ 'herkunftsland_code' => $formData['herkunftsland_code'],
+ 'ort' => $formData['ort'],
+ 'universitaet' => $formData['universitaet'],
+ 'ects_erworben' => $formData['ects_erworben'],
+ 'ects_angerechnet' => $formData['ects_angerechnet'],
+ 'updateamum' => date('c'),
+ 'updatevon' => $authUID,
+ ]
+ );
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess(current($data));
+ }
+
+ public function deleteMobility($bisio_id)
+ {
+ // $this->terminateWithError('test ' . $bisio_id, self::ERROR_TYPE_GENERAL);
+
+ $result = $this->BisioModel->delete(
+ array('bisio_id' => $bisio_id)
+ );
+
+ //TODO(Manu) foreign key restraint
+ //nämlich Extension mo
+ //fk_mobisioidzuordnung_prestudent_id" on table "tbl_mo_bisioidzuordnung"
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess($data);
+ }
+
+ public function getLVList($studiengang_kz)
+ {
+ $this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
+
+ $result = $this->LehrveranstaltungModel->getLvsByStudiengangkz($studiengang_kz);
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess($data);
+ }
+
+ public function getPurposes($bisio_id)
+ {
+ $bisio_id = (int) $bisio_id;
+
+ $this->load->model('codex/Bisiozweck_model', 'BisiozweckModel');
+
+ $this->BisiozweckModel->addSelect("*");
+ $this->BisiozweckModel->addJoin('bis.tbl_zweck zw', 'ON (zw.zweck_code = bis.tbl_bisio_zweck.zweck_code)');
+
+ $result = $this->BisiozweckModel->loadWhere(
+ array('bisio_id' => $bisio_id)
+ );
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess($data);
+ }
+
+ public function getListPurposes()
+ {
+ $this->load->model('codex/Zweck_model', 'ZweckModel');
+
+ $result = $this->ZweckModel->load();
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess($data);
+ }
+
+ public function getListSupports()
+ {
+ $this->load->model('codex/Aufenthaltfoerderung_model', 'AufenthaltfoerderungModel');
+
+ $result = $this->AufenthaltfoerderungModel->load();
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ $this->terminateWithSuccess($data);
+ }
+
+ public function addMobilityPurpose($bisio_id, $local_purpose = null)
+ {
+ $zweck_code = $this->input->post('zweck_code');
+
+ if($local_purpose){
+ $zweck_code = $local_purpose;
+ }
+
+ $this->load->model('codex/Bisiozweck_model', 'BisiozweckModel');
+
+ $result = $this->BisiozweckModel->insert(
+ array(
+ 'bisio_id' => $bisio_id,
+ 'zweck_code' => $zweck_code
+ )
+ );
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ return $this->terminateWithSuccess(current($data));
+ }
+
+ public function deleteMobilityPurpose($bisio_id)
+ {
+ $zweck_code = $this->input->post('zweck_code');
+
+ $this->load->model('codex/Bisiozweck_model', 'BisiozweckModel');
+
+
+ $result = $this->BisiozweckModel->delete(
+ array(
+ 'bisio_id' => $bisio_id,
+ 'zweck_code' => $zweck_code
+ )
+ );
+
+ $data = $this->getDataOrTerminateWithError($result);
+
+ return $this->terminateWithSuccess(current($data));
+ }
}
diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php
index 3f02f5ce7..694ec8ca6 100644
--- a/application/models/education/Lehrveranstaltung_model.php
+++ b/application/models/education/Lehrveranstaltung_model.php
@@ -1012,4 +1012,27 @@ class Lehrveranstaltung_model extends DB_Model
$res = $this->execReadOnlyQuery($query);
return $res;
}
+
+ /**
+ * Gets lehrveranstaltungen of a studiengang
+ * @param integer $studiengang_kz
+ * @return array|null
+ */
+ public function getLvsByStudiengangkz($studiengang_kz)
+ {
+ $params = array($studiengang_kz);
+
+ $qry = "SELECT
+ *
+ FROM
+ lehre.tbl_lehrveranstaltung
+ WHERE lehrveranstaltung_id IN
+ (SELECT lehrveranstaltung_id
+ FROM campus.vw_student_lehrveranstaltung
+ WHERE studiengang_kz = ?";
+
+ $qry .= ") ORDER BY semester, bezeichnung";
+
+ return $this->execQuery($qry, $params);
+ }
}
diff --git a/public/js/api/stv/mobility.js b/public/js/api/stv/mobility.js
index d749f58f3..657256b30 100644
--- a/public/js/api/stv/mobility.js
+++ b/public/js/api/stv/mobility.js
@@ -5,4 +5,38 @@ export default {
getProgramsMobility(){
return this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');
},
+ addNewMobility(data){
+ //TODO(Manu) formvalidation
+ return this.$fhcApi.post('api/frontend/v1/stv/mobility/insertMobility/', data);
+ },
+ loadMobility(bisio_id){
+ return this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);
+ },
+ updateMobility(data){
+ return this.$fhcApi.post('api/frontend/v1/stv/mobility/updateMobility/', data);
+ },
+ deleteMobility(bisio_id){
+ return this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);
+ },
+ getLVList(studiengang_kz){
+ return this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);
+ },
+ getPurposes(url, config, params){
+ console.log("in getPurposes");
+ //console.log(params);
+ return this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);
+ },
+ getListPurposes() {
+ return this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');
+ },
+ getListSupports() {
+ return this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');
+ },
+ deleteMobilityPurpose(params) {
+ return this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);
+ },
+ addMobilityPurpose(params) {
+ return this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);
+ },
+
}
\ No newline at end of file
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Mobility.js b/public/js/components/Stv/Studentenverwaltung/Details/Mobility.js
index df6a5612f..d4398bf82 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Mobility.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Mobility.js
@@ -16,10 +16,7 @@ export default {
return {}
},
template: `
-
-
-
TEST Mob
-
+
`
};
\ No newline at end of file
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Mobility/List/Foerderung.js b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/List/Foerderung.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Mobility/List/Purpose.js b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/List/Purpose.js
new file mode 100644
index 000000000..20751fdb0
--- /dev/null
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/List/Purpose.js
@@ -0,0 +1,284 @@
+import {CoreFilterCmpt} from "../../../../../filter/Filter.js";
+
+import BsModal from "../../../../../Bootstrap/Modal.js";
+import CoreForm from '../../../../../Form/Form.js';
+import FormInput from '../../../../../Form/Input.js';
+
+export default {
+ components: {
+ CoreFilterCmpt,
+ BsModal,
+ CoreForm,
+ FormInput
+ },
+ props: {
+ bisio_id: {
+ type: [Number],
+ required: true
+ },
+ listPurposes: {
+ type: Array,
+ required: true
+ },
+ formDataParent: {
+ type: Object,
+ required: true
+ }
+ },
+ data() {
+ return {
+ tabulatorOptions: {
+ ajaxURL: 'dummy',
+ ajaxRequestFunc: this.$fhcApi.factory.stv.mobility.getPurposes,
+ ajaxParams: () => {
+ return {
+ id: this.bisio_id
+ };
+ },
+ ajaxResponse: (url, params, response) => response.data,
+ columns: [
+ {title: "Zweck_code", field: "zweck_code", visible: false},
+ {title: "Kurzbz", field: "kurzbz", visible: false},
+ {title: "Bezeichnung", field: "bezeichnung"},
+ {
+ title: 'Aktionen', field: 'actions',
+ minWidth: 150,
+ formatter: (cell, formatterParams, onRendered) => {
+
+ let container = document.createElement('div');
+ container.className = "d-flex gap-2";
+
+ let button = document.createElement('button');
+ button.className = 'btn btn-outline-secondary btn-action';
+ button.innerHTML = '
';
+ button.title = this.$p.t('global', 'loeschen');
+ button.addEventListener(
+ 'click',
+ () =>
+ this.actionDeletePurpose(cell.getData().zweck_code)
+ );
+ container.append(button);
+
+ return container;
+ },
+ frozen: true
+ },
+ ],
+ layout: 'fitColumns',
+ layoutColumnsOnNewData: false,
+ height: '300',
+ selectableRangeMode: 'click',
+ selectable: true,
+ persistenceID: 'core-mobility-purpose'
+ },
+ tabulatorEvents: [
+ {
+ event: 'tableBuilt',
+ handler: async() => {
+
+ await this.$p.loadCategory(['ui', 'global', 'vertrag']);
+/*
+ let cm = this.$refs.table.tabulator.columnManager;
+
+ cm.getColumnByField('bezeichnung').component.updateDefinition({
+ title: this.$p.t('global', 'status')
+ });
+ cm.getColumnByField('format_datum').component.updateDefinition({
+ title: this.$p.t('global', 'datum')
+ });
+ cm.getColumnByField('mitarbeiter_uid').component.updateDefinition({
+ title: this.$p.t('person', 'uid')
+ });
+ cm.getColumnByField('vertrag_id').component.updateDefinition({
+ title: this.$p.t('ui', 'vertrag_id')
+ });
+ cm.getColumnByField('vertragsstatus_kurzbz').component.updateDefinition({
+ title: this.$p.t('vertrag', 'vertragStatus')
+ });
+ cm.getColumnByField('actions').component.updateDefinition({
+ title: this.$p.t('global', 'aktionen')
+ });
+ cm.getColumnByField('updatevon').component.updateDefinition({
+ title: this.$p.t('global', 'updatevon')
+ });
+ cm.getColumnByField('format_updateamum').component.updateDefinition({
+ title: this.$p.t('global', 'updateamum')
+ });
+ cm.getColumnByField('insertvon').component.updateDefinition({
+ title: this.$p.t('global', 'insertvon')
+ });
+ cm.getColumnByField('format_insertamum').component.updateDefinition({
+ title: this.$p.t('global', 'insertamum')
+ }); */
+ }
+ }
+ ],
+ clickedRows: [],
+ formData: {},
+ localData: []
+ }
+ },
+ watch: {
+/* bisio_id(newVal) {
+ if (!newVal) {
+ console.log("activate local Data");
+ // Lokale Daten direkt in die Tabelle laden
+ this.$refs.table.instance.setData(this.localData);
+ } else {
+ console.log("data with api" + newVal);
+ let params = {
+ bisio_id: newVal,
+ };
+ // Daten aus der API abrufen und in die Tabelle laden
+ this.$fhcApi.factory.stv.mobility.getPurposes(params)
+ .then(result => {
+ this.$refs.table.instance.setData(result.data);
+ })
+ .catch(this.$fhcAlert.handleSystemError);
+ }
+ },*/
+
+
+/* bisio_id(newVal) {
+ if (!newVal) {
+ console.log("activate local Data");
+ this.tabulatorOptions.ajaxRequestFunc = null;
+ this.tabulatorOptions.data = this.localData;
+ } else {
+ console.log("data with api" + newVal);
+ let params = {
+ bisio_id : newVal,
+ };
+ //this.tabulatorOptions.ajaxRequestFunc = this.$fhcApi.factory.stv.mobility.getPurposes, newVal;
+ this.$fhcApi.factory.stv.mobility.getPurposes(params)
+ .then(result => {
+ this.tabulatorOptions = result.data;
+ })
+ .catch(this.$fhcAlert.handleSystemError);
+ }
+ },*/
+ bisio_id() {
+ if (this.$refs.table) {
+ this.$refs.table.reloadTable();
+ }
+ },
+ /* bisio_id() {
+ //this.reloadTable();
+ //this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getStatiOfContract/' + this.vertrag_id);
+ },*/
+ formDataParent: {
+ handler(newVal, oldVal)
+ {
+ this.formData = this.formDataParent;
+ }
+ ,
+ deep: true
+ }
+ },
+ methods: {
+ actionNewPurpose() {
+ this.resetModal();
+ this.$refs.mobilityPurpose.show();
+ },
+ actionDeletePurpose(zweck_code) {
+ this.$emit('deleteMobilityPurpose', {
+ bisio_id: this.bisio_id,
+ zweck_code: zweck_code
+ });
+ },
+ handleSubmitAction() {
+ if (this.bisio_id) {
+
+ this.$emit('setMobilityPurpose', {
+ zweck_code: this.formData.zweck_code,
+ bisio_id: this.bisio_id
+ });
+ } else {
+ //not working
+ // this.$refs.table.addRow({id: 123, zweck_code: this.formData.zweck_code});
+ //this.formData.zweck_code
+ this.localData.push(this.formData.zweck_code); //not working: this.$refs.table.addRow is not a function
+ console.log("action without Bisio_id " + this.formData.zweck_code);
+ this.$emit('setMobilityPurposeToNewMobility', {
+ zweck_code: this.formData.zweck_code,
+ });
+ }
+ this.closeModal();
+ },
+
+ closeModal(){
+ this.$refs.mobilityPurpose.hide();
+ this.$emit('close-modal');
+ },
+ openModal(){
+ this.$refs.mobilityPurpose.show();
+ this.$emit('open-modal');
+ },
+ reload() {
+ this.$refs.table.reloadTable();
+ this.$emit('reload');
+ },
+ resetModal(){
+ this.formData = {};
+ this.formData.vertragsstatus_kurzbz = null;
+ this.formData.datum = new Date();
+ this.statusNew = true;
+ }
+ },
+ template: `
+
+
+
+
+
+ bisio: {{bisio_id}}
+
+
+
+
+
+
+
+ neuer Zweck
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
`
+ }
\ No newline at end of file
diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js
index a70897e32..92cbbda08 100644
--- a/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js
+++ b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js
@@ -2,13 +2,17 @@ import {CoreFilterCmpt} from "../../../../filter/Filter.js";
import BsModal from "../../../../Bootstrap/Modal.js";
import FormForm from '../../../../Form/Form.js';
import FormInput from '../../../../Form/Input.js';
+import MobilityPurpose from './List/Purpose.js';
+//import LocalPurpose from './List/PurposesLocal.js';
export default {
components: {
CoreFilterCmpt,
BsModal,
FormForm,
- FormInput
+ FormInput,
+ MobilityPurpose,
+// LocalPurpose
},
inject: {
$reloadList: {
@@ -51,7 +55,7 @@ export default {
button.innerHTML = '
';
button.title = this.$p.t('ui', 'bearbeiten');
button.addEventListener('click', (event) =>
- this.actionEditMobility(cell.getData().mobility_id)
+ this.actionEditMobility(cell.getData().bisio_id)
);
container.append(button);
@@ -60,7 +64,7 @@ export default {
button.innerHTML = '
';
button.title = this.$p.t('ui', 'loeschen');
button.addEventListener('click', () =>
- this.actionDeleteMobility(cell.getData().mobility_id)
+ this.actionDeleteMobility(cell.getData().bisio_id)
);
container.append(button);
@@ -73,7 +77,7 @@ export default {
layoutColumnsOnNewData: false,
height: 'auto',
selectable: true,
- index: 'mobility_id',
+ index: 'bisio_id',
persistenceID: 'stv-details-table_mobiliy'
},
tabulatorEvents: [
@@ -121,8 +125,8 @@ export default {
// cm.getColumnByField('pruefungstyp_kurzbz').component.updateDefinition({
// title: this.$p.t('global', 'typ')
// });
- // cm.getColumnByField('mobility_id').component.updateDefinition({
- // title: this.$p.t('ui', 'mobility_id')
+ // cm.getColumnByField('bisio_id').component.updateDefinition({
+ // title: this.$p.t('ui', 'bisio_id')
// });
/*
cm.getColumnByField('actions').component.updateDefinition({
@@ -135,12 +139,17 @@ export default {
formData: {
von: new Date(),
bis: new Date(),
- mobilitaetsprogramm: 7,
+ mobilitaetsprogramm_code: 7,
gastnation: 'A',
herkunftsland: 'A',
+ bisio_id: null,
+ localPurposes: []
},
statusNew: true,
programsMobility: [],
+ listLvs: [],
+ listPurposes: [],
+ listSupports: [],
}
},
watch: {
@@ -151,38 +160,39 @@ export default {
}
},
methods: {
- getStudiengangsTyp(){
- this.stgTyp = '';
- this.$fhcApi.factory.stv.mobility.getTypStudiengang(this.stg_kz)
- .then(result => this.stgTyp = result.data)
- .catch(this.$fhcAlert.handleSystemError);
- },
actionNewMobility() {
this.resetForm();
this.statusNew = true;
//this.setDefaultFormData();
},
- actionEditMobility(mobility_id) {
+ actionEditMobility(bisio_id) {
this.resetForm();
+ // this.formData.bisio_id = bisio_id;
this.statusNew = false;
- this.loadMobility(mobility_id);
+ this.loadMobility(bisio_id);
},
- actionDeleteMobility(mobility_id) {
+ actionDeleteMobility(bisio_id) {
this.$fhcAlert
.confirmDelete()
.then(result => result
- ? mobility_id
+ ? bisio_id
: Promise.reject({handled: true}))
- .then(this.deletemobility)
+ .then(this.deleteMobility(bisio_id))
.catch(this.$fhcAlert.handleSystemError);
},
addNewMobility() {
+ //TODO(Manu) um localPurposes erweitern
+/* console.log(this.formData.localPurposes[0]);
+ if(this.formData.localPurposes.length){
+ this.$fhcAlert.alertSuccess('nach speichern purposes mit neuer bisio_id zusammenführen');
+ return;
+ }*/
const dataToSend = {
uid: this.student.uid,
formData: this.formData
};
-
- return this.$refs.formFinalExam.factory.stv.mobility.addNewmobility(dataToSend)
+ return this.$fhcApi.factory.stv.mobility.addNewMobility(dataToSend)
+ //return this.$refs.formMobility.factory.stv.mobility.addNewMobility(dataToSend)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetForm();
@@ -195,22 +205,22 @@ export default {
reload() {
this.$refs.table.reloadTable();
},
- loadMobility(mobility_id) {
- return this.$fhcApi.factory.stv.mobility.loadmobility(mobility_id)
+ loadMobility(bisio_id) {
+ return this.$fhcApi.factory.stv.mobility.loadMobility(bisio_id)
.then(result => {
+
this.formData = result.data;
- //TODO(Manu) check if cisRoot is okay
- this.formData.link = this.cisRoot + 'index.ci.php/lehre/Pruefungsprotokoll/showProtokoll?mobility_id=' + this.formData.mobility_id + '&fhc_controller_id=67481e5ed5490';
- return result;
+ console.log("after");
+ //return result;
})
.catch(this.$fhcAlert.handleSystemError);
},
- updateMobility(mobility_id) {
+ updateMobility(bisio_id) {
const dataToSend = {
- id: mobility_id,
- formData: this.formData
+ formData: this.formData,
+ uid: this.student.uid,
};
- return this.$refs.formFinalExam.factory.stv.mobility.updatemobility(dataToSend)
+ return this.$fhcApi.factory.stv.mobility.updateMobility(dataToSend)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetForm();
@@ -220,8 +230,9 @@ export default {
this.reload();
});
},
- deleteMobility(mobility_id) {
- return this.$fhcApi.factory.stv.mobility.deletemobility(mobility_id)
+ deleteMobility(bisio_id) {
+ //TODO(Manu) prompt wird nicht abgewartet!
+ return this.$fhcApi.factory.stv.mobility.deleteMobility(bisio_id)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
})
@@ -231,8 +242,73 @@ export default {
});
},
resetForm() {
- this.formData = null;
+ this.formData = {};
+ this.formData.von = new Date();
+ this.formData.bis = new Date();
+ this.formData.mobilitaetsprogramm_code = 7;
+ this.formData.gastnation = 'A';
+ this.formData.herkunftsland = 'A';
+ this.formData.bisio_id = null;
+ this.formData.localPurposes = [];
},
+ // --- methods purposes ---
+ addMobilityPurpose({zweck_code, bisio_id}){
+ let params = {
+ bisio_id : bisio_id,
+ zweck_code: zweck_code
+ };
+ return this.$fhcApi.factory.stv.mobility.addMobilityPurpose(params)
+ .then(response => {
+ this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
+
+ this.$refs.purposes.reload();
+ })
+ .catch(this.$fhcAlert.handleSystemError);
+ },
+ deleteMobilityPurpose({zweck_code, bisio_id}){
+ let params = {
+ bisio_id : bisio_id,
+ zweck_code: zweck_code
+ };
+ return this.$fhcApi.factory.stv.mobility.deleteMobilityPurpose(params)
+ .then(response => {
+ this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
+
+ this.$refs.purposes.reload();
+ })
+ .catch(this.$fhcAlert.handleSystemError);
+ },
+ addPurposeToMobility({zweck_code}){
+
+ console.log("localPurposes befüllen: " , zweck_code);
+ this.formData.localPurposes.push(zweck_code);
+/* this.formData.firstPurpose = zweck_code;
+ this.$refs.purposes.closeModal();*/
+ },
+/* addPurposeToMobility(purpose) {
+ this.localPurposes.push(purpose);
+ },*/
+ //lokale Variante
+/* async saveAllChanges() {
+ try {
+ const savedData = await this.$fhcApi.factory.stv.mobility.savePurposes({
+ id: this.bisio_id,
+ purposes: this.localData.filter(item => !item.zweck_code.startsWith('temp_')) // Nur echte IDs senden
+ });
+
+ // Synchronisiere temporäre IDs mit echten Daten
+ savedData.forEach((item) => {
+ const localItem = this.localData.find(local => local.zweck_code === item.tempId);
+ if (localItem) {
+ localItem.zweck_code = item.zweck_code; // Aktualisiere die echte ID
+ }
+ });
+
+ this.updateTabulatorData();
+ } catch (error) {
+ console.error('Fehler beim Speichern der Änderungen:', error);
+ }
+ },*/
},
created() {
this.$fhcApi.factory.stv.mobility.getProgramsMobility()
@@ -240,12 +316,36 @@ export default {
this.programsMobility = result.data;
})
.catch(this.$fhcAlert.handleSystemError);
+ this.$fhcApi.factory.stv.mobility.getLVList(this.student.studiengang_kz)
+ .then(result => {
+ this.listLvs = result.data;
+ })
+ .catch(this.$fhcAlert.handleSystemError);
+ this.$fhcApi.factory.stv.mobility.getListPurposes()
+ .then(result => {
+ this.listPurposes = result.data;
+ })
+ .catch(this.$fhcAlert.handleSystemError);
+ this.$fhcApi.factory.stv.mobility.getListSupports()
+ .then(result => {
+ this.listSupports = result.data;
+ })
+ .catch(this.$fhcAlert.handleSystemError);
},
template: `
In/out
+
+
{{formData}}
+
+
+
+
@@ -281,6 +381,7 @@ export default {
:teleport="true"
>
+
-
+ {{lv.bezeichnung}} - Semester {{lv.semester}}
+
@@ -333,8 +434,8 @@ export default {
container-class="col-6 stv-details-mobility-mobilitaetsprogramm"
:label="$p.t('mobility', 'mobilitaetsprogramm')"
type="select"
- v-model="formData.mobilitaetsprogramm"
- name="mobilitaetsprogramm"
+ v-model="formData.mobilitaetsprogramm_code"
+ name="mobilitaetsprogramm_code"
>
@@ -366,7 +461,7 @@ export default {
container-class="col-6 stv-details-mobility-gastnation"
:label="$p.t('mobility', 'gastnation')"
type="select"
- v-model="formData.gastnation"
+ v-model="formData.nation_code"
name="gastnation"
>