importing the api calls in the component and creating api endpoints for the cis profile page

This commit is contained in:
Simon Gschnell
2023-11-15 13:49:06 +01:00
parent 9227cc12f0
commit 7c229bbcee
6 changed files with 127 additions and 32 deletions
+36 -6
View File
@@ -16,10 +16,16 @@ class Profil extends Auth_Controller
{
parent::__construct([
'index' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
'getUser' => ['student/anrechnung_beantragen:r','user:r']
'getUser' => ['student/anrechnung_beantragen:r','user:r'],
'isMitarbeiterOrStudent' => ['student/anrechnung_beantragen:r','user:r'],
'getPersonInformation' => ['student/anrechnung_beantragen:r','user:r'],
]);
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('ressource/student_model', 'StudentModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
$this->load->model('person/Person_model', 'PersonModel');
}
// -----------------------------------------------------------------------------------------------------------------
@@ -30,9 +36,11 @@ class Profil extends Auth_Controller
*/
public function index()
{
//echo = getAuthUID();
$this->load->view('Cis/Profil', ["uid" => getAuthUID()]);
//? we can pass data to the view by using the second parameter of the load->view() function
//* the first parameter is the route that Code Igniter will switch to
//* the second parameter can be used to pass data to the view
$this->load->view('Cis/Profil', ["uid" => getAuthUID(),"pid" => getAuthPersonId()]);
}
@@ -42,14 +50,36 @@ class Profil extends Auth_Controller
//* retrieve info from the Mitarbeiter model
$mitarbeiter_result = $this->MitarbeiterModel->load(getAuthUID());
//* retrieve info from the Benutzer model
$benutzer_result = $this->BenutzerModel->load([getAuthUID()]);
$benutzer_result = $this->BenutzerModel->getFromPersonId(getAuthUID());
//* return JSON with info
$res = ['mitarbeiter' => $mitarbeiter_result,
'Benutzer' => $benutzer_result];
//! was removed from $res for testing purposes: 'Benutzer' => $benutzer_result
$res = ['mitarbeiter' => $mitarbeiter_result,'Benutzer' => $benutzer_result
];
echo json_encode($res);
}
public function getPersonInformation($pid){
//? get the person information using the benutzer uid
echo json_encode($this->PersonModel->getPersonStammdaten($pid)->retval);
}
//? check wheter the parameter uid is a Mitarbeiter or a Student
public function isMitarbeiterOrStudent($uid){
if($this->MitarbeiterModel->isMitarbeiter($uid)->retval){
echo json_encode("Mitarbeiter");
}//! not sure if the user is automatically a student if he is not a mitarbeiter
else if($this->StudentModel->isStudent($uid)->retval){
echo json_encode("Student");
}else{
echo json_encode("Not a Mitarbeiter or Student");
}
}
@@ -0,0 +1,41 @@
<?php
class Student_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_student';
$this->pk = 'student_uid';
}
/**
* Checks if the user is a Student.
* @param string $uid
* @return array
*/
public function isStudent($uid)
{
$this->addSelect('1');
$result = $this->loadWhere(array('student_uid' => $uid));
if(hasData($result))
{
return success(true);
}
else
{
return success(false);
}
}
//! THIS FILE WAS CREATED USING THE Mitarbeiter_model.php FILE
}
+3 -2
View File
@@ -9,10 +9,11 @@ $this->load->view('templates/CISHTML-Header', $includesArray);
?>
<div id="content">
<h2>Profil</h2>
<h2>Profil2</h2>
<hr>
<p><?php echo $uid; ?></p>
<Profil></Profil>
<!-- we can pass information from the php view file to the public js file through interpolating data from php into vue props -->
<Profil uid="<?php echo $uid ?>" pid="<?php echo $pid ?>"></Profil>
</div>
<?php $this->load->view('templates/CISHTML-Footer', $includesArray); ?>
+3 -12
View File
@@ -1,8 +1,5 @@
import Profil from "../../components/Cis/Profil/Profil.js";
import fhcapifactory from "../api/fhcapifactory.js";
Vue.$fhcapi = fhcapifactory;
const app = Vue.createApp({
components: {
@@ -10,18 +7,12 @@ const app = Vue.createApp({
},
data() {
return {
stunden: [],
events: null
}
},
methods: {
testsearch: function() {
return Vue.$fhcapi.UserData.getUser();
},
testsearch2: function() {
return Vue.$fhcapi.UserData.getUser2("ma0594");
}
},
});
app.mount('#content');
app.mount('#content');
+11
View File
@@ -5,6 +5,17 @@ export default {
+ 'Cis/Profil/getUser';
return axios.get(url);
},
isMitarbeiterOrStudent: function(uid) {
const url = FHC_JS_DATA_STORAGE_OBJECT.app_root
+ `Cis/Profil/isMitarbeiterOrStudent/${uid}`;
return axios.get(url);
},
getPersonInformation: function(uid) {
const url = FHC_JS_DATA_STORAGE_OBJECT.app_root
+ `Cis/Profil/getPersonInformation/${uid}`;
return axios.get(url);
},
getUser2: function(uid) {
const url = FHC_JS_DATA_STORAGE_OBJECT.app_root
+ 'models/person/Benutzer_model/getFromPersonId';
+33 -12
View File
@@ -1,29 +1,50 @@
import fhcapifactory from "../../../apps/api/fhcapifactory.js";
export default {
data: function() {
return {
person: null,
person_info: null,
role: null,
}
},
//? this prop was passed in the Profil.php view file
props:['uid','pid'],
methods: {
testsearch: function() {
}
},
created(){
this.$parent.testsearch().then((res) => {
this.person = res.data;
});
},
},
computed:{
cis_profil_info(){
return {
anrede:this.person_info.anrede,
titelpre:this.person_info.titelpre,
titelpost:this.person_info.titelpost,
vorname:this.person_info.vorname,
nachname:this.person_info.nachname,
gebdatum:this.person_info.gebdatum,
gebort:this.person_info.gebort,
};
}
},
created(){
fhcapifactory.UserData.getUser().then(res => this.person = res.data);
fhcapifactory.UserData.isMitarbeiterOrStudent(this.uid).then(res => this.role = res.data);
fhcapifactory.UserData.getPersonInformation(this.pid).then(res => this.person_info = res.data);
},
template: `
<div>
<h1>test</h1>
<code>{{JSON.stringify(person)}}</code>
<p>{{"here is the uid "+uid}} </p>
<p>{{"here is the pid "+pid}} </p>
<code style="color:purple">{{JSON.stringify(cis_profil_info)}}</code>
<!--<code style="color:purple">{{JSON.stringify(person_info)}}</code>-->
<br/>
<code style="color:red">{{JSON.stringify(person)}}</code>
<br/>
<code>{{JSON.stringify(role)}}</code>
</div>
`,
};