initial commit

This commit is contained in:
2021-07-10 16:25:16 +02:00
parent bff57cbf45
commit 20fb7267a8
2426 changed files with 792090 additions and 0 deletions
@@ -0,0 +1,491 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Partituur extends MY_Controller {
function __construct(){
parent::__construct();
$models = array('ijkpartituur/Autorisaties_model',
'ijkpartituur/Partituurs_model',
'shared/Users_model',
'ijkpartituur/Eigenpijlers_model',
'ijkpartituur/ModPartPijlers',
'ijkpartituur/Niveaus_model',
'ijkpartituur/Pages_model',
'ijkpartituur/Eigenpijlers_model',
'ijkpartituur/Part_eigenpijlers_model',
'ijkpartituur/Nivoprofielen_model',
'ijkpartituur/ModPijlers',
"ijkpartituur/Modpartactiviteiten",
'ijkpartituur/ModPartEigenActiviteiten',
'ijkpartituur/ModRuweScores',
'ijkpartituur/Modhelpdesk',
"monpas/Ijkpunten_model",
"monpas/Wenssituaties_model");
$this->load->model($models);
$this->load->library('monpas/kleurcodes');
if(!$this->userid) return;
if ( ! $this->check_online_status() ) {
echo json_encode( array('offline' => TRUE) );
die;
};// if
}
/**
* Index Page for this controller.
*/
public function index(){
$partituur = $this->get_active_partituur($this->globorgid);
$profielen = $this->get_profielen();
$medewerkers = $this->Users_model->get_users_by_organisatie($this->globorgid);
$schoolmeterpijlers = $this->ModPijlers->get_pijlers($this->globProfielVersieID);
$ExistsAct = false;
$magNieuw = $this->writer;
$isactievepart = false;
if(!$partituur){
//TODO: procedure om een nieuwe partituur aan te maken middels koppeling of schakelprogramma
//echo json_encode(array('status'=>FALSE));
//return;
if ($this->globorgid == SYSTEM){$status= TRUE;}
else { $status=FALSE;}
$partituurID='';
}
else {
$status = TRUE;
$partituurID=$partituur->id;
$where=array('partituurID' => $partituur->id);
$ExistsAct = $this->Modpartactiviteiten->check_for_record($where);
$isactievepart = $partituur->actief;
}
$mes1=$this->lang->line("mes-geenactievepartituur");
$mes2=$this->lang->line("mes-geenrechten");
$mes3=$this->lang->line('mes-ukuntnietverder');
$mes4=$this->lang->line('mes-gegevensinvullen');
$mes5=$this->lang->line('mes-startdatumvooreinddatum');
$kleuren = $this->kleurcodes->getkleurcodesfromdatabase();
echo json_encode(array('status' => $status ,
'partituurID' => $partituurID,
'profielen' => $profielen,
"schoolmeterpijlers" => $schoolmeterpijlers,
'medewerkers' => $medewerkers,
'write' => $this->writer,
'allowDelete' => !$ExistsAct,
'magNieuw' =>$magNieuw,
'isactievepart' =>$isactievepart,
'mes1' =>$mes1,
'mes2' =>$mes2,
'mes3' =>$mes3,
'mes4' =>$mes4,
'mes5' =>$mes5,
'mes6' =>$this->lang->line('mes-startdatumaanpassen'),
'mes7' =>$this->lang->line('mes-einddatumaanpassen') ,
'mes8' =>$this->lang->line('mes-startdatuminvullen' ),
'mes9' =>$this->lang->line('mes-einddatuminvullen'),
'mes10' =>$this->lang->line('mes-geentoegang'),
'mes11' =>$this->lang->line('mes-heelgetalinvullen'),
'mes12' =>$this->lang->line('mes-nieuwenaam'),
'mes13' =>$this->lang->line('mes-weetuzekerpartituur'),
'mes14' =>$this->lang->line('mes-geengegevenswijzigen'),
'mes15' =>$this->lang->line('mes-emailvervangen'),
'mes16' =>$this->lang->line('mes-weetuzekerpartituurverwijderen'),
'lbl1' =>$this->lang->line('lbl-partituurnaam'),
'lbl2' =>$this->lang->line('lbl-startdatum'),
'lbl3' =>$this->lang->line('lbl-einddatum'),
'lbl4' =>$this->lang->line('lbl-scorevoor'),
'lblja' =>$this->lang->line('lbl-ja'),
'lblnee' =>$this->lang->line('lbl-nee'),
'kleuren' =>$kleuren
));
}
public function WhichPagina(){
if ($this->partituurid){
$where=array("id" => $this->partituurid);
$partituur = $this->Partituurs_model->get_fieldvalue($where, 'partituur_actief');
}
else {
$where = array('partituur_organisatie_id'=>$this->globorgid, 'partituur_actief'=>1);
$partituur = $this->Partituurs_model->get_single_details($where);
}
if ($partituur) {
$ans = 3;
}else{
$ans = 2;
// set het menu
};
$systemyesno = 0;
if ($this->globorgid == SYSTEM) {$systemyesno = 1;};
echo json_encode(array("pagina" =>$ans,
"partID" =>$this->partituurid,
"systemyesno" => $systemyesno)) ;
}
public function get_submenu(){
$menu = $this->Pages_model->get_usermenu_ls($this->userrole,0);
echo json_encode(array('menu'=>$menu));
}
public function check_session(){
echo json_encode(array('session'=>$this->userid));
}
public function helpdeskinfo(){
$info = $this->Modhelpdesk->get_helpdesk();
echo json_encode($info);
}
public function resetVars (){
$partituurID = $this->uri->segment(4);
$where = array('partituurID' => $partituurID);
$ExistsAct = $this->Modpartactiviteiten->check_for_record($where);
$kosten = $this->Modpartactiviteiten->get_sum_kosten($partituurID);
$gereed = $this->Modpartactiviteiten->get_gem_gereed($partituurID);
$where =array("partituurID" =>$partituurID);
$num =$this->Modpartactiviteiten->check_for_record($where);
$allowchange = !$num;
$num = $this->ModPartEigenActiviteiten->check_for_record($where);
if ($num) {$allowchange = false;};
echo json_encode(array( "allowDelete" => !$ExistsAct,
'allowChange' =>$allowchange,
"kosten" => $kosten,
"gereed" => $gereed
));
}
public function getPartituurActief(){
$partituurid = $this->uri->segment(4);
$actiefJN = 0;
if ($partituurid > 0) {
$where=array("id" =>$partituurid);
$actiefJN = $this->Partituurs_model->get_fieldvalue ($where, 'partituur_actief');
};
if ($this->globorgid == SYSTEM){$actiefJN = 2;}
echo json_encode($actiefJN);
}
public function get_partituur(){
$partituurid= $this->uri->segment(4);
$data['status'] = FALSE;
if($this->Autorisaties_model->check_partituur_access($partituurid, 1)){
$data['status'] = TRUE;
$data['write'] = $this->Autorisaties_model->check_partituur_access($partituurid, 2);
$data['partituur'] = $this->Partituurs_model->get_single_details(array('id'=>$partituurid));
$data['magnieuw'] =$data['write'];
if (! $data['partituur']->actief) {$data['write'] = false;};
$data['isactievepart'] =$data['partituur']->actief;
$where =array("partituurID" =>$partituurid);
$num =$this->Modpartactiviteiten->check_for_record($where);
$data['allowchange'] = !$num;
$num = $this->ModPartEigenActiviteiten->check_for_record($where);
if ($num) {$data['allowchange'] = false;};
$data['partituur']->kosten = $this->Modpartactiviteiten->get_sum_kosten($partituurid);
$data['partituur']->gereed = $this->Modpartactiviteiten->get_gem_gereed($partituurid);
$data['pijlers'] = $this->ModPartPijlers->get_joined_details($partituurid);
$data['partituren'] = $this->Partituurs_model->get_details(array('partituur_organisatie_id'=>$this->globorgid));
$data['ruwescores'] =$this->ModRuweScores->get_scores($partituurid);
}
echo json_encode($data);
}
// public function get_ruwe_sopscore(){
// $url = 'http://www.framework-ed.nl/schakel/profiel_search.asp?School_ID=2908';
// $curl = curl_init();
// curl_setopt_array($curl, array(
// CURLOPT_RETURNTRANSFER => 1,
// CURLOPT_URL => $url
// ));
// $ruwescore = curl_exec($curl);
// $scores = explode('[', $ruwescore);
// $score = '['.$scores[1];
// curl_close($curl);
// echo $score;
// }
function get_partituren(){
$data['partituren'] = $this->Partituurs_model->get_details(array('partituur_organisatie_id'=>$this->globorgid));
echo json_encode($data);
}
public function get_unused_pijlers(){
$partID = $this->uri->segment(3);
$pijlers = $this->Eigenpijlers_model->get_pijlers_not_in_partituur($this->globorgid, $partID);
echo json_encode(array("unusedpijlers"=>$pijlers));
}
public function save_profiel(){
if ($this->Autorisaties_model->check_autorisatie($this->userrole,WRITER) <=0) return;
$status = FALSE;
$partituurID= $this->clean_input("partituurID");
$profielen = $this->clean_input('profiel');
if($profielen){
if($this->Autorisaties_model->check_partituur_access($partituurID, 1)){
$status = TRUE;
foreach($profielen as $profiel){
$pijler = $this->ModPartPijlers->get_record_by_id($profiel['id']);
if($profiel['huidig']!=$pijler->huidigniveau || $profiel['gewenst']!=$pijler->gewenstniveau){
$data = array( 'huidigniveau' => $profiel['huidig'] ,
'gewenstniveau' => $profiel['gewenst'] );
$this->ModPartPijlers->update_record($data, $profiel['id']);
}
}
}
}
echo json_encode(array('status'=>$status));
}
public function get_standaard() {
$profielid = $this->uri->segment(4);
$partituurid= $this->uri->segment(5);
$status = FALSE;
if($this->Autorisaties_model->check_partituur_access($partituurid, 1)){
$status = TRUE;
$standaards = $this->Nivoprofielen_model->get_records_where(array('niveauID'=>$profielid));
}
echo json_encode(array('status'=>$status, 'standaards'=>$standaards));
}
public function opslaan_pleider(){
$partituurid= $this->clean_input('partituurID');
$pleiderid = $this->clean_input('pleiderID');
$status = FALSE;
if($this->Autorisaties_model->check_partituur_access($partituurid, 1)){
$status = TRUE;
$email = $this->Users_model->get_record_by_id($pleiderid, 'email',true);
$data = array('partituur_projectleider_id'=>$pleiderid);
$this->Partituurs_model->update_record($data, $partituurid);
}
echo json_encode(array("email"=>$email, "status"=>$status));
}
public function opslaan_email(){
$status = FALSE;
if($this->Autorisaties_model->check_partituur_access($partituurid, 1)){
$status = TRUE;
$partituurid= $this->clean_input('partituurID');
$email = $this->clean_input('email');
$data = array('partituur_email'=>$email);
$this->Partituurs_model->update_record($data, $partituurid);
}
echo json_encode(array('status'=>$status));
}
public function opslaan_dates(){
$status = FALSE;
$errorstr ='';
$partituurid= $this->clean_input('partituurID');
if($this->Autorisaties_model->check_partituur_access($partituurid, 1)){
$start = date2mysql($this->clean_input('vandatum'));
$eind = date2mysql($this->clean_input('tmdatum'));
// check of de nieuwe data kunnen, geven pijlerdata
$MinMax = $this->ModPartPijlers->get_minmax_dag($partituurid);
if ($MinMax[0]->mindag < $start) {
$errorstr = 'startdatum moet kleiner of gelijk aan '.mysql2date($MinMax[0]->mindag).' zijn;';
$start = $MinMax[0]->mindag; };
if ($MinMax[0]->maxdag > $eind){
$errorstr .= ' einddatum moet groter of gelijk aan '.mysql2date($MinMax[0]->maxdag).' zijn.';
$eind = $MinMax[0]->maxdag; };
$data = array('partituur_start'=>$start, 'partituur_eind'=>$eind);
$this->Partituurs_model->update_record($data, $partituurid);
echo json_encode(array('start' => mysql2date($start),
'eind' => mysql2date($eind),
'errorstr' => $errorstr));
}
else { echo json_encode(false); };
}
function save_new_eigenpijler(){
$status = $eigenpijlers = FALSE;
$partituurid= $this->clean_input('partituurid');
if($this->Autorisaties_model->check_partituur_access($partituurid, 1)){
$status = TRUE;
$pijlernaam = $this->clean_input('pijlernaam');
$data = array('eigenpijler_naam'=>$pijlernaam, 'orgID'=>$this->globorgid);
$newID = $this->Eigenpijlers_model->insert_record($data);
$eigenpijlers = $this->Eigenpijlers_model->get_pijlers_not_in_partituur($this->globorgid, $partituurid);
}
echo json_encode(array('status'=>$status, 'eigenpijlers'=>$eigenpijlers));
}
public function insert_eigen_pijlers(){
$IDlijst = $this->clean_input('insertpijlerIDs');
$partID = $this->clean_input('partituurID');
foreach ($IDlijst as $newID) {
$data= array("partituurID" => $partID,
"eigenpijlerID" => $newID);
$this->Part_eigenpijlers_model->insert_record($data);
}
echo json_encode(true);
}
private function get_active_partituur($orgid ){
$where = array('partituur_organisatie_id'=>$orgid, 'partituur_actief'=>1);
$partituur = $this->Partituurs_model->get_single_details($where);
return $partituur;
}
private function get_profielen(){
$profielen = $this->Niveaus_model->get_details(array('actief'=>1, 'fw_versie' =>$this->globProfielVersieID));
return $profielen;
}
public function getActievePartituur(){
$where=array("partituur_organisatie_id" =>$this->globorgid,
"partituur_actief" => 1);
$partituur = $this->Partituurs_model->get_records_where($where,TRUE);
echo json_encode($partituur);
}
// del_pijlers zorgt dat geselecteerde eigen pijler binnen de partituur worden verwijderd. De eigen pijlers worden dus niet uit tb_eigenpijlers verwijderd.
function del_pijlers(){
//del pijlers krijgt een array van IDs van (eigen) pijlers die deleted
//moeten worden. als aan een pijler geen activiteiten oid hangen, mag de pijler uit de db verwijderd worden.
// anders hoeft er, wat betreft de db niets met de pijler te gebeuren
//mag succes of failure teruggeven
$delIDs = $this->input->post("eigenPijlerIds");
foreach ($delIDs as $delID){
$this->Part_eigenpijlers_model->delete_record($delID);
}
echo json_encode("true");
}
function del_eigen_pijlers(){
// del eigen pijlers moet de eigen pijlers daadwerkelijk verwijderen.
//in de function del_pijlers worden de pijlers uit de partituur verwijderd
// deze functie verwijderd de eigenpijlers dus uit de db
// dit mag alleen als de pijler niet gebruikt wordt in een partituur
$delIDs = $this->input->post('eigenPijlerIds');
$partID = $this->input->post('partituurID');
foreach($delIDs as $delID){
$where=array('eigenpijlerID' =>$delID);
if($this->Part_eigenpijlers_model->get_result_count($where) <= 0){$this->Eigenpijlers_model->delete_record($delID) ;} ;
};
// haal de resterende eigenpijlers op en return deze
$eigenpijlers= $this->Eigenpijlers_model->get_pijlers_not_in_partituur($this->globorgid, $partID);
echo json_encode($eigenpijlers);
}
function del_partituur(){
// moet de na delete meest recente partituur id teruggeven of -1
if ($this->Autorisaties_model->check_autorisatie($this->userrole, WRITER) <=0) return;
$partituurID=$this->uri->segment(4);
// delete pijlers in partituur
// als er activiteiten zijn mag de partiuur niet verwijderd worden.
$where = array("partituurID" => $partituurID);
$ExistsAct = $this->Modpartactiviteiten->check_for_record($where);
if ($ExistsAct) {
echo json_encode(0);
}
else {
$this->ModPartPijlers->delete_record_where(array("partituurID" =>$partituurID));
$this->Partituurs_model->delete_record($partituurID);
$activeID=$this->get_active_partituur($this->globorgid);
echo json_encode($activeID);
};
}
function getscores(){
$ovid = $this->clean_input("ovid");
$scores = $this->Ijkpunten_model->getscores($ovid, $this->globorgid);
echo json_encode($scores);
}
function nieuwe_partituur(){
// functie krijgt via post een submitData arrray binnen met naam, vandatum, tmdatum en een json array met scores (id, naam, en waarde)
// naam moet zijn ingevuld. vandatum en tmdatum mogen NIET undefined zijn
// vanuit de opgegeven scores moet bepaald worden wat de pijlerwaarden (1 tm 5) zijn
// functie moet als antwoord het ID van de nieuwe partituur geven.
//daarnaast moet gekeken worden of bij de versie een wenssituatie is gemaakt. Deze wenssituatie moet
// ook overgenomen worden naar de partituur.
$oldpartituur = $this->clean_input("oldpartituur");
$newnaam = $this->clean_input('naam');
$vandatum = date2mysql($this->clean_input("vandatum") );
$tmdatum = date2mysql($this->clean_input('tmdatum'));
$versieid = $this->clean_input("versieid");
$ovid = $this->clean_input("ovid");
$scores = $this->Ijkpunten_model->getscores($ovid, $this->globorgid);
$data= array( 'partituur_organisatie_id'=> $this->globorgid ,
'partituur_naam' => $newnaam,
'partituur_actief' => 1,
'partituur_start' => $vandatum,
'partituur_eind' => $tmdatum);
$newPID=$this->Partituurs_model->insert_record($data);
$wenssituaties = $this->Wenssituaties_model->getgewenstvoorpartituur($ovid,$this->globorgid);
foreach($scores as $score) {
$waarde = 1;
$res= round($score->somscore / $score->num);
$waarde= $this->kleurcodes->getnummer($res);
switch ($score->nummer){
case 1: $pijlerid = 1; break;
case 2: $pijlerid = 2; break;
case 3: $pijlerid = 3; break;
case 4: $pijlerid = 4; break;
case 5: $pijlerid = 5; break;
case 6: $pijlerid = 6; break;
case 7: $pijlerid = 7; break;
case 8: $pijlerid = 8; break;
case 9: $pijlerid = 9; break;
case 10 : $pijlerid = 10; break;
case 11 : $pijlerid = 11; break;
case 12: $pijlerid = 12; break;
case 13: $pijlerid = 13; break;
}
$gewenstniveau = 5;
if ($wenssituaties){
foreach($wenssituaties as $wens){
if ($wens->nummer == $pijlerid) {
$gewenstniveau =$wens->wens;
break;
} ; //if
};
};
$data= array('partituurID' => $newPID,
'pijlerID' => $pijlerid,
'huidigniveau' => $waarde,
'gewenstniveau' => $gewenstniveau,
'start' =>$vandatum,
'eind' =>$tmdatum);
$this->ModPartPijlers->insert_record($data) ;
$data2= array( "orgID" =>$this->globorgid,
"partituurID" =>$newPID,
"pijlerID" =>$pijlerid,
"score" =>$res );
$this->ModRuweScores->insert_record($data2);
};
$data=array('partituur_actief' => 0);
if ($oldpartituur) {
$this->Partituurs_model->update_record($data, $oldpartituur);
};
echo json_encode(array('id'=>$newPID));
}
public function setNaam (){
if($this->Autorisaties_model->check_autorisatie($this->userrole, WRITER) <=0) return;
$partID = $this->clean_input('id');
$naam = $this->clean_input('naam');
$data=array("partituur_naam" =>$naam);
$this->Partituurs_model->update_record($data,$partID);
}
}