diff --git a/application/controllers/Cis/Profil.php b/application/controllers/Cis/Profil.php index 5f69264ed..8e7c1a26a 100755 --- a/application/controllers/Cis/Profil.php +++ b/application/controllers/Cis/Profil.php @@ -16,7 +16,7 @@ class Profil extends Auth_Controller public function __construct() { parent::__construct([ - 'index' => ['student/anrechnung_beantragen:r', 'user:r'], // TODO(chris): permissions? + 'index' => ['student/anrechnung_beantragen:r', 'user:r'], 'foto_sperre_function' => ['student/anrechnung_beantragen:r', 'user:r'], 'getView' => ['student/anrechnung_beantragen:r', 'user:r'], 'View' => ['student/anrechnung_beantragen:r', 'user:r'], @@ -63,6 +63,16 @@ class Profil extends Auth_Controller * @return void */ + public function test(){ + + // Loads permission lib + $this->load->library('PermissionLib'); + $mit_daten =$this->permissionlib->isBerechtigt('mitarbeiter/stammdaten','suid'); + var_dump($mit_daten); + $stud_daten = $this->permissionlib->isBerechtigt('student/stammdaten','suid'); + var_dump($stud_daten); + } + public function index() { @@ -149,12 +159,7 @@ class Profil extends Auth_Controller echo json_encode($res); } - public function test(){ - - // Loads permission lib - $this->load->library('PermissionLib'); - var_dump($this->permissionlib->getOE_isEntitledFor()); - } + diff --git a/application/controllers/Cis/ProfilUpdate.php b/application/controllers/Cis/ProfilUpdate.php index 44fce82af..bb4f1d407 100755 --- a/application/controllers/Cis/ProfilUpdate.php +++ b/application/controllers/Cis/ProfilUpdate.php @@ -11,10 +11,10 @@ class ProfilUpdate extends Auth_Controller public function __construct(){ parent::__construct([ - 'index' => ['student/anrechnung_beantragen:r', 'user:r'], // TODO(chris): permissions? - 'getProfilUpdates' => ['student/anrechnung_beantragen:r', 'user:r'], - 'acceptProfilRequest'=>['user:r'], - 'denyProfilRequest'=>['user:r'], + 'index' => ['student/stammdaten:r','mitarbeiter/stammdaten:r'], + 'getProfilUpdates' => ['student/stammdaten:r','mitarbeiter/stammdaten:r'], + 'acceptProfilRequest'=>['student/stammdaten:rw','mitarbeiter/stammdaten:rw'], + 'denyProfilRequest'=>['student/stammdaten:rw','mitarbeiter/stammdaten:rw'], 'show'=>['user:r'], @@ -46,12 +46,16 @@ class ProfilUpdate extends Auth_Controller } public function getProfilUpdates($status=null){ + $this->load->library('PermissionLib'); + $studentBerechtigung = $this->permissionlib->isBerechtigt('student/stammdaten','s'); + $mitarbeiterBerechtigung = $this->permissionlib->isBerechtigt('mitarbeiter/stammdaten','s'); + + $options = ["mitarbeiterView"=>$mitarbeiterBerechtigung,"studentView"=>$studentBerechtigung]; if(isset($status)){ - $res = $this->ProfilChangeModel->getProfilUpdate(["status"=>$status]); - }else{ - $res = $this->ProfilChangeModel->getProfilUpdate(); + $options['status'] = $status; } - $res = hasData($res)? getData($res) : null; + $res = $this->ProfilChangeModel->getProfilUpdate($options); + echo json_encode($res); } diff --git a/application/models/person/Profil_change_model.php b/application/models/person/Profil_change_model.php index 134395dd6..e364b33e2 100755 --- a/application/models/person/Profil_change_model.php +++ b/application/models/person/Profil_change_model.php @@ -12,6 +12,9 @@ class Profil_change_model extends DB_Model $this->pk = ['profil_update_id']; $this->hasSequence = true; + + $this->load->model('crm/Student_model','StudentModel'); + $this->load->model('ressource/Mitarbeiter_model','MitarbeiterModel'); } /** @@ -50,22 +53,41 @@ class Profil_change_model extends DB_Model * returns all profil updates if id is set to null */ public function getProfilUpdate($whereClause=null){ - - $res = $this->loadWhere($whereClause); - if(isError($res)){ - // catch error - }else{ - if(hasData($res)){ - - foreach($res->retval as $update){ - $update->requested_change = json_decode($update->requested_change); - $update->insertamum = !is_null($update->insertamum)?date_create($update->insertamum)->format('d.m.Y'):null; - $update->updateamum = !is_null($update->updateamum)?date_create($update->updateamum)->format('d.m.Y'):null; - $update->status_timestamp = !is_null($update->status_timestamp)?date_create($update->status_timestamp)->format('d.m.Y'):null; - - } + $res =[]; + if($whereClause["studentView"]) { + $this->addJoin('tbl_student','tbl_student.student_uid=tbl_cis_profil_update.uid'); + $studentRequests = $this->loadWhere(isset($whereClause['status']) && $whereClause['status']? ['status'=>$whereClause['status']]:[]); + if(isError($studentRequests)) return error("db error: ". getData($studentRequests)); + $studentRequests = getData($studentRequests)?:[]; + foreach($studentRequests as $request){ + array_push($res,$request); } } + if($whereClause["mitarbeiterView"]) { + $this->addJoin('tbl_mitarbeiter','tbl_mitarbeiter.mitarbeiter_uid=tbl_cis_profil_update.uid'); + $mitarbeiterRequests = $this->loadWhere(isset($whereClause['status']) && $whereClause['status']? ['status'=>$whereClause['status']]:[]); + if(isError($mitarbeiterRequests)) return error("db error: ". getData($mitarbeiterRequests)); + $mitarbeiterRequests = getData($mitarbeiterRequests)?:[]; + foreach($mitarbeiterRequests as $request){ + array_push($res,$request); + } + } + + + + if($res){ + + foreach($res as $update){ + + + $update->requested_change = json_decode($update->requested_change); + $update->insertamum = !is_null($update->insertamum)?date_create($update->insertamum)->format('d.m.Y'):null; + $update->updateamum = !is_null($update->updateamum)?date_create($update->updateamum)->format('d.m.Y'):null; + $update->status_timestamp = !is_null($update->status_timestamp)?date_create($update->status_timestamp)->format('d.m.Y'):null; + + } + } + return $res; } diff --git a/public/js/apps/Cis/Profil.js b/public/js/apps/Cis/Profil.js index 12a037973..935dd2ab2 100755 --- a/public/js/apps/Cis/Profil.js +++ b/public/js/apps/Cis/Profil.js @@ -46,7 +46,7 @@ const app = Vue.createApp({ }, data() { return { - editData: this.filteredEditData, + view:null, data:null, // notfound is null by default, but contains an UID if no user exists with that UID @@ -58,7 +58,7 @@ const app = Vue.createApp({ provide() { return { - editData:this.editData, + collapseFunction: (e, column)=> { //* check if property doesn't exist already and add it to the reactive this properties @@ -229,14 +229,14 @@ const app = Vue.createApp({ }, template:`
{{JSON.stringify(data.profilUpdates.length,null,2)}}
+