Files
monpas/application/libraries/monpas/ijkpunten/Lijsten.php
T
2021-10-15 13:02:59 +02:00

503 lines
18 KiB
PHP

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Lijsten
{
private $CI;
private $modulenr;
private $ijkpunten;
private $clusterid;
private $versienaam;
private $soort;
private $aantal;
private $schoolScores;
private $gemiddeldeScores;
private $bestuurScores;
private $kamerScores;
private $swvScores;
private $schoolAfbeeldingen;
private $gemiddeldenAfbeeldingen;
private $bestuurAfbeeldingen;
private $kamerAfbeeldingen;
private $swvAfbeeldingen;
private $score;
private $onderorgs;
private $zprocent;
private $ambitiearray = [];
private $lijst;
private $lijsten = [];
private $nieuwste = 0;
private $nieuwsteversie;
private $kleuren;
private $org;
private $orgstring;
private $sopinfo;
public function getLijsten(){
return $this->lijsten;
}
public function getNieuwsteVersie(){
return $this->nieuwsteversie;
}
public function getIJkpunten(){
return $this->ijkpunten;
}
public function getKleuren(){
return $this->kleuren;
}
public function getSopInfo(){
return $this->sopinfo;
}
public function __construct($orgid, $selecties){
$this->CI = & get_instance();
$this->orgid = $orgid;
$this->selecties = $selecties;
$this->handle();
}
private function handle(){
$this->setModulenummer();
$this->setClusterid();
$this->setSoort();
$this->setAantal();
$this->loopSelecties();
$this->loopLijsten();
$this->setKleuren();
$this->setSopInfo();
}
private function setModulenummer(){
$orgversieid = $this->selecties[0]['orgversieid'];
$versieid = $this->CI->Orgversies_model->get_fieldvalue(['id' => $orgversieid], 'versie_id');
$this->modulenr = $this->CI->Versies_model->get_fieldvalue(['id' => $versieid], 'modulenr');
}
private function setClusterid(){
$this->clusterid = $this->CI->Modules_model->get_fieldvalue(['sysnr' =>$this->modulenr], 'cluster_id');
}
private function setSoort(){
$this->soort = $this->CI->Organisaties_model->get_fieldvalue(['id'=>$this->orgid], 'soort');
}
private function setAantal(){
$this->aantal = count($this->selecties);
}
private function loopSelecties(){
for($index = 0; $index < $this->aantal; $index++){
$this->versienaam = "";
$this->schoolScores = new stdClass();
$this->gemiddeldeScores = new stdClass();
$this->bestuurScores = new stdClass();
$this->swvScores = new StdClass();
$this->schoolAfbeeldingen = new stdClass();
$this->gemiddeldenAfbeeldingen = new stdClass();
$this->bestuurAfbeeldingen = new stdClass();
$this->swvScores = new stdClass();
$this->lijst = new stdClass();
$this->setOrgversieid($index);
$this->setIJkpunten($index);
$this->setVorm($index);
$this->setOrgversie();
$this->setVersieNaam();
$this->setOrgnaam();
$this->setBrin();
$this->setLabels();
$this->setAmbities();
$this->setZprocent();
$this->setSchoolScores();
$this->setIndividueleScores();
$this->setBestuurScores();
$this->setKamerScores();
$this->setSWVScores();
$this->setLijstScores();
$this->setGemiddeldeScores();
$this->setAdviezen();
$this->setGemiddeldenAdviezen();
$this->setVNaam();
$this->loopVergelijkingScores();
$this->setSchoolMetingen();
$this->setIndividueleMetingen();
$this->setMetingenVergelijking();
$this->setMetingenVergelijkingIndividueel();
$this->setResultaten();
$this->setrapportInfo();
$this->setLijsten();
}
}
private function setOrgversieid($index){
$this->lijst->orgversieid = $this->selecties[$index]['orgversieid'];
}
private function setIJkpunten($index){
if($index != 0) return;
$ijkpunten = $this->CI->Ijkpunten_model->getijkpunten($this->lijst->orgversieid);
foreach($ijkpunten as $ijkpunt){
$indicatoren= $this->CI->Indicatoren_model->getindicatoren($ijkpunt->id);
if($indicatoren){
$this->ijkpunten[] = $ijkpunt;
}
};
}
private function setVorm($index){
$this->lijst->vorm = $this->selecties[$index]['vorm'];
}
private function setOrgversie(){
$this->lijst->orgversie = $this->CI->Orgversies_model->get_record_by_id($this->lijst->orgversieid);
$this->lijst->periodenummer = $this->lijst->orgversie->periodenummer;
$this->lijst->jaartal = substr($this->lijst->orgversie->geldigvanaf, 2,2);
}
private function setVersieNaam(){
if($this->versienaam != "") return;
$this->versienaam = $this->CI->Versies_model->get_fieldvalue(['id' => $this->lijst->orgversie->versie_id], 'naam');
}
private function setOrgnaam(){
$this->lijst->orgnaam = $this->CI->Organisaties_model->get_fieldvalue(
['id' => $this->orgid], 'naam');
}
private function setBrin(){
if($this->soort != 4 && $this->soort != 3) return;
$this->lijst->brin = $this->CI->Organisaties_model->get_fieldvalue(['id' => $this->orgid], 'brin');
}
private function setLabels(){
$this->lijst->label = $this->CI->Labels_model->gettabellabel($this->modulenr);
$this->lijst->label2 = $this->CI->Labels_model->getresultaatlabel($this->modulenr);
}
private function setAmbities(){
$ambitie = $this->CI->Ambities_model->getOrgAmbities($this->lijst->orgversieid, $this->orgid);
if (!in_array($ambitie, $this->ambitiearray, FALSE)) {
$this->lijst->ambities = $ambitie;
$this->ambitiearray [] = $ambitie;
}
}
private function setZprocent(){
$this->zprocent = 0;
if(isset($this->lijst->ambities)){
$this->zprocent = $this->lijst->ambities->zprocent;
}
}
private function setSchoolScores(){
if ($this->soort != 4 || $this->lijst->vorm != 1) return;
$this->schoolScores = new Schoolscores($this->lijst->orgversieid, $this->orgid);
if($this->schoolScores) {
$this->schoolAfbeeldingen = new Schoolafbeeldingen($this->schoolScores, $this->modulenr, $this->lijst->orgversieid,
$this->clusterid, $this->orgid);
}
}
private function setIndividueleScores(){
if($this->soort !=4 || $this->lijst->vorm != 2) return;
$this->gemiddeldeScores = new Gemiddeldescores($this->lijst->orgversieid, $this->orgid);
if($this->gemiddeldeScores){
$this->gemiddeldenAfbeeldingen = new Gemiddeldenafbeeldingen($this->gemiddeldeScores, $this->modulenr, $this->lijst->orgversieid,
$this->clusterid, $this->orgid);
}
}
private function setBestuurScores()
{
if ($this->soort != 3) return;
$this->bestuurScores = new Bestuurscores($this->lijst->orgversieid, $this->orgid, $this->lijst->vorm);
if ($this->bestuurScores) {
$this->bestuurAfbeeldingen = new Afbeeldingen($this->bestuurScores, $this->modulenr, $this->lijst->orgversieid,
$this->clusterid, $this->orgid, $this->zprocent);
}
}
private function setKamerScores(){
if($this->soort == 1) return;
$this->kamerScores = new Kamerscores($this->lijst->orgversieid, $this->orgid, $this->lijst->vorm);
if($this->kamerScores) {
$this->kamerAfbeeldingen = new Afbeeldingen($this->kamerScores, $this->modulenr, $this->lijst->orgversieid,
$this->clusterid, $this->orgid, $this->zprocent);
}
}
private function setSWVScores(){
if ($this->soort == 3 || $this->soort == 4 ) return;
$this->swvScores = new Swvscores($this->lijst->orgversieid, $this->orgid, $this->lijst->vorm);
if($this->swvScores) {
$this->swvAfbeeldingen = new Afbeeldingen($this->swvScores, $this->modulenr, $this->lijst->orgversieid,
$this->clusterid, $this->orgid, $this->zprocent);
}
}
private function setLijstScores(){
switch($this->soort){
case 1:
if(empty($this->swvAfbeeldingen)) return;
$this->lijst->scores = $this->swvAfbeeldingen->getScores();
break;
case 2: if(empty($this->kamerAfbeeldingen)) return;
$this->lijst->scores = $this->kamerAfbeeldingen->getScores();
$this->lijst->vergelijkingen = $this->swvAfbeeldingen->getScores();
break;
case 3: if(empty($this->bestuurAfbeeldingen)) return;
$this->lijst->scores = $this->bestuurAfbeeldingen->getScores();
$this->lijst->vergelijkingen = $this->kamerAfbeeldingen->getScores();
break;
case 4: if(empty($this->schoolAfbeeldingen) && empty($this->gemiddeldenAfbeeldingen)) return;
if(count((array) $this->schoolAfbeeldingen) > 0) {
$this->lijst->scores = $this->schoolAfbeeldingen->getScores();
}
if(count((array)$this->gemiddeldenAfbeeldingen)> 0){
$this->lijst->scores = $this->gemiddeldenAfbeeldingen->getIJkpunten();
}
$this->lijst->vergelijkingen = $this->kamerAfbeeldingen->getScores();
break;
}
}
private function setGemiddeldeScores(){
if(count((array)$this->gemiddeldenAfbeeldingen) == 0) return;
foreach($this->lijst->scores as $index => $this->score){
$this->score->gem = 0;
if($this->score->score) {
$this->score->gem = $this->score->score;
}
}
}
private function setAdviezen(){
if(count((array)$this->schoolAfbeeldingen) == 0) return;
if($this->soort != 4) return;
$this->lijst->adviezen = $this->schoolAfbeeldingen->getAdviezen();
}
private function setGemiddeldenAdviezen(){
if(count((array)$this->gemiddeldenAfbeeldingen) == 0) return;
if($this->soort != 4) return;
$this->lijst->adviezen = $this->gemiddeldenAfbeeldingen->getAdviezen();
}
private function setVNaam(){
switch($this->soort){
case 1: $this->lijst->vNaam = null;
break;
case 2: $this->lijst->vNaam = $this->swvScores->getOrgnaam();
break;
case 3:
case 4: $this->lijst->vNaam = $this->kamerScores->getOrgnaam();
break;
}
}
private function loopVergelijkingScores(){
if( (!isset($this->lijst->vergelijkingen) || !$this->lijst->vergelijkingen)) return;
for($i = 0; $i < count($this->lijst->vergelijkingen); $i++){
$this->setVergelijkingScores($i);
}
}
private function setVergelijkingScores($i){
if($this->lijst->scores[$i]) {
$this->lijst->scores[$i]->gemV = $this->lijst->vergelijkingen[$i]->gem;
$this->lijst->scores[$i]->kleurV = $this->lijst->vergelijkingen[$i]->kleur;
}
}
private function setSchoolMetingen(){
if($this->lijst->vorm != 1) return;
if(!$this->lijst->scores) $this->lijst->aantalorgs = 0;
else if ($this->soort == 4) $this->lijst->aantalorgs = 1;
else {
if(! isset($this->lijst->scores[0]->aantalscholen)) $this->lijst->aantalorgs = 0;
else {
$this->lijst->aantalorgs = $this->lijst->scores[0]->aantalscholen;
}
}
}
private function setIndividueleMetingen(){
if (!isset($this->lijst->scores)) return;
if ($this->lijst->vorm != 2) return;
$this->lijst->metingen = 0;
$this->lijst->aantalorgs = 0;
if ($this->soort == 4) {
$gevuld = $this->CI->Scores_model->fCountGevuldeVersies($this->lijst->orgversieid, $this->orgid);
if($gevuld ){
$this->lijst->metingen = $gevuld->aantal;}
};
if ($this->soort == 3) {
$gevuld = $this->CI->Scores_model->fCountGevuldeBestuurVersies($this->lijst->orgversieid, $this->orgid);
if($gevuld){
$this->lijst->metingen = $gevuld->aantal;
$this->lijst->aantalorgs = $gevuld->aantalorgs;}
};
if ($this->soort == 2) {
$this->onderorgs = $this->CI->Organisaties_model->getscholenonderkamer($this->orgid);
$this->setGevuldeVersies12();
$metingen = $this->CI->Scores_model->fCountGevuldeKamerEnSWVVersies($this->lijst->orgversieid, $this->orgstring);
if($metingen){
$this->lijst->metingen = $metingen->aantal;
$this->lijst->aantalorgs = $metingen->aantalorgs;
}
};
if ($this->soort == 1) {
$this->onderorgs = $this->CI->Organisaties_model->getscholenonderswv($this->orgid);
$this->setGevuldeVersies12();
$metingen = $this->CI->Scores_model->fCountGevuldeKamerEnSwvVersies($this->lijst->orgversieid, $this->orgstring);
if($metingen){
$this->lijst->metingen = $metingen->aantal;
$this->lijst->aantalorgs = $metingen->aantalorgs;
}
};
}
private function setGevuldeVersies12(){
$orgids = [];
if (count($this->onderorgs) > 0) {
foreach ($this->onderorgs as $index => $this->org) {
$orgids[] = $this->org->id;
}
$this->orgstring = implode(',', $orgids);
} else $this->orgstring = false;
}
private function setMetingenVergelijking(){
if(!isset($this->lijst->vergelijkingen) || !($this->lijst->vergelijkingen)) return;
if($this->lijst->vorm != 1) return;
foreach($this->lijst->vergelijkingen as $index => $this->lijst->vergelijking) {
$this->lijst->metingenV= 0;
if(! isset($this->lijst->vergelijking->aantalscholen)){continue;}
$this->lijst->metingenV = $this->lijst->vergelijking->aantalscholen;
break;
}
}
private function setMetingenVergelijkingIndividueel(){
if(! isset($this->lijst->vergelijkingen )|| ! ($this->lijst->vergelijkingen)) return;
if($this->lijst->vorm != 2) return;
$this->lijst->metingenV = new stdClass();
$this->lijst->metingenV = 0;
foreach($this->lijst->vergelijkingen as $index => $this->lijst->vergelijking) {
if(! isset($this->lijst->vergelijking->aantallijsten)){continue;}
$this->lijst->metingenV = $this->lijst->vergelijking->aantallijsten;
break;
}
}
private function setResultaten(){
switch($this->soort) {
case 1: if(count((array)$this->swvAfbeeldingen)==0 ) return;
$this->lijst->resultaten = $this->swvAfbeeldingen->getResultaten();
break;
case 2: if(count((array)$this->kamerAfbeeldingen) ==0) return;
$this->lijst->resultaten = $this->kamerAfbeeldingen->getResultaten();
break;
case 3: if(count((array)$this->bestuurAfbeeldingen)== 0) return;
$this->lijst->resultaten = $this->bestuurAfbeeldingen->getResultaten();
break;
case 4: if (count((array)$this->schoolAfbeeldingen)==0 && count((array)$this->gemiddeldenAfbeeldingen)==0)return;
if(count((array)$this->schoolAfbeeldingen) > 0) {
$this->lijst->resultaten = $this->schoolAfbeeldingen->getResultaten();
}
if(count((array)$this->gemiddeldenAfbeeldingen) > 0){
$this->lijst->resultaten = $this->gemiddeldenAfbeeldingen->getResultaten();
}
break;
}
}
private function setRapportInfo(){
$scholen = ' scholen';
if(intval($this->lijst->aantalorgs) == 1) $scholen = ' school';
$toevoeging = '';
if(intval($this->lijst->vorm) == 2) {
$metingen = ' metingen';
if(intval($this->lijst->metingen) == 1) $metingen = ' meting';
$toevoeging = ', '. $this->lijst->metingen. $metingen;
}
if(intval($this->soort < 4)) $toevoeging .= ', '. $this->lijst->aantalorgs. $scholen;
$this->lijst->vantm = "periode " . $this->lijst->orgversie->periodenummer . " van " .
mysql2date($this->lijst->orgversie->geldigvanaf) . " t/m " . mysql2date($this->lijst->orgversie->geldigtm) .
$toevoeging;
}
private function setLijsten(){
$this->lijsten [] = $this->lijst;
}
private function loopLijsten()
{
$this->nieuwste = 0;
foreach ($this->lijsten as $index => $this->lijst) {
if (!$this->lijst->orgversie) continue;
$this->setNieuwsteVersie();
}
}
private function setNieuwsteVersie(){
if ($this->lijst->orgversie->periodenummer > $this->nieuwste) {
$this->nieuwste = $this->lijst->orgversie->periodenummer;
$this->nieuwsteversie = $this->lijst->orgversieid;
}
}
private function setKleuren(){
if(count((array)$this->gemiddeldenAfbeeldingen)> 0){
$this->kleuren = $this->gemiddeldenAfbeeldingen->getKleuren();
}
else if(count((array)$this->kamerAfbeeldingen)> 0){
$this->kleuren = $this->kamerAfbeeldingen->getKleuren();
}
else if(count((array)$this->swvAfbeeldingen)> 0){
$this->kleuren = $this->swvAfbeeldingen->getKleuren();
}
}
private function setSopInfo(){
$this->sopinfo = [
'lijsten' => $this->lijsten,
'aantal' => $this->aantal,
'nieuwsteversie' => $this->nieuwsteversie,
'kleuren' => $this->kleuren,
'versienaam' => $this->versienaam
];
}
}