Files
monpas/application/libraries/monpas/ijkpunten/Lijsten.php
T
2024-01-25 11:03:38 +01:00

292 lines
10 KiB
PHP

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Lijsten
{
private $CI;
private $modulenr;
private $versienaam;
private $soort;
private $aantal;
private $ijkpunten;
private $results;
private $scores;
private $vergelijkingen;
private $lijst;
private $lijsten = [];
private $nieuwste = 0;
private $nieuwsteversie;
private $sopinfo;
private $eigenambitie = 'F';
public function getLijsten(){
return $this->lijsten;
}
public function getNieuwsteVersie(){
return $this->nieuwsteversie;
}
public function getEigenAmbitie(){
return $this->eigenambitie;
}
public function getIJkpunten(){
return $this->ijkpunten;
}
public function getKleuren(){
return $this->results['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->setOrg();
$this->setSoort();
$this->setAantal();
$this->loopSelecties();
$this->loopLijsten();
$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 setOrg(){
$this->organisatie = $this->CI->Organisaties_model->get_record_by_id($this->orgid);
}
private function setSoort(){
$this->soort = $this->organisatie->soort;
}
private function setAantal(){
$this->aantal = count($this->selecties);
}
private function loopSelecties(){
for($index = 0; $index < $this->aantal; $index++){
$this->versienaam = "";
$this->lijst = new stdClass();
$this->setOrgversieid($index);
$this->setVorm($index);
$this->setOrgversie();
$this->setIJkpunten($index);
$this->setVersieNaam();
$this->setLabels();
$this->setResults();
$this->setVergelijkingen();
$this->setVergelijkingScores();
$this->setAmbities();
$this->setLijst();
$this->setrapportInfo();
$this->setLijsten();
}
}
private function setOrgversieid($index){
$this->lijst->orgversieid = $this->selecties[$index]['orgversieid'];
}
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 setIJkpunten($index){
if($index > 0 ) return;
$this->ijkpunten = $this->CI->Ijkpunten_model->getijkpuntenMetIndicatoren($this->lijst->orgversieid);
}
private function setVersieNaam(){
if($this->versienaam != "") return;
$this->versienaam = $this->CI->Versies_model->get_fieldvalue(['id' => $this->lijst->orgversie->versie_id], 'naam');
}
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 setResults(){
if($this->soort == 4 && $this->lijst->vorm == 2) {
$this->gemiddelden = new Gemiddeldescores ($this->lijst->orgversieid, $this->orgid, $this->lijst->orgversie->scoretype);
$this->results = $this->gemiddelden->getResults();
$this->scores = $this->gemiddelden->getIJkpunten();
}
else {
$this->scoresobject = new Schoolscores($this->lijst->orgversieid, $this->orgid, $this->lijst->orgversie->scoretype, 'F');
$this->results = $this->scoresobject->getResults();
$this->scores = $this->scoresobject->getScores();
}
}
private function setVergelijkingen(){
if($this->soort == 1) return;
$this->vergelijkingen = new stdClass();
switch($this->soort){
case 2:
case 3: $orgid = $this->organisatie->valtonder_id;
break;
case 4 : $bestuurid = $this->organisatie->valtonder_id;
$orgid = $this->CI->Organisaties_model->get_fieldvalue(['id'=>$bestuurid], 'valtonder_id');
break;
}
$this->vergelijkingen = (new Schoolscores($this->lijst->orgversieid, $orgid, $this->lijst->orgversie->scoretype,'T' ))->getResults();
}
private function setVergelijkingScores(){
if(!isset($this->vergelijkingen) || !$this->vergelijkingen) return;
foreach($this->vergelijkingen['scores'] AS $i => $vergelijking){
$this->scores[$i]->gemV = $vergelijking->gem;
$this->scores[$i]->kleurV = $vergelijking->kleur;
$this->scores[$i]->disabledV = $vergelijking->disabled;
$this->scores[$i]->disablenvtV = $vergelijking->disablenvt;
}
}
private function setAmbities(){
$standaard = new stdClass();
$standaard->ambitievan = 'standaard';
$standaard->id = 0;
$standaard->geldigtm = $this->lijst->orgversie->geldigtm;
$standaard->geldigvanaf = $this->lijst->orgversie->geldigvanaf;
$standaard->gemscore = 80;
$standaard->naam = $this->versienaam;
$standaard->orgversie_id = $this->lijst->orgversie->id;
$standaard->periodenummer = $this->lijst->orgversie->periodenummer;
$standaard->soort = 0;
$standaard->xijkpunten = ROUND($this->results['aantalY'] * 0.8);
$standaard->zprocent = 60;
if($this->results && $this->results['ambities'] && $this->results['ambities']->gemscore >= 0) $this->lijst->ambities = $this->results['ambities'];
else $this->lijst->ambities = $standaard;
if(!isset($this->vergelijkingen) || !$this->vergelijkingen) return;
if($this->vergelijkingen['ambities'] && $this->vergelijkingen['ambities']->gemscore >= 0 ) $ambitiesV = $this->vergelijkingen['ambities'];
else $ambitiesV = $standaard;
if($ambitiesV->ambitievan != $this->lijst->ambities->ambitievan) $this->lijst->ambitiesV = $ambitiesV;
}
private function setLijst(){
$this->lijst->naam = $this->results['orgnaam'];
$this->lijst->scores = $this->scores;
$metingen = $this->results['metingen'];
$this->lijst->metingen = $metingen ? $metingen->aantal : 0;
$this->lijst->aantalorgs = $metingen ? $metingen->aantalorgs : 0;
$this->lijst->wensen = $this->results['wensen'];
$this->lijst->adviezen = $this->results['adviezen'];
$this->lijst->resultaten = $this->results['resultaten'] ;
$this->lijst->aantalY = $this->results['aantalY'];
if(!isset($this->vergelijkingen) || !$this->vergelijkingen) return;
$this->lijst->naamV = $this->vergelijkingen['orgnaam'];
$metingenV = $this->vergelijkingen['metingen'];
$this->lijst->metingenV = $metingenV ? $metingenV->aantal : 0;
$this->lijst->aantalorgsV = $metingenV ? $metingenV->aantalorgs : 0;
}
private function setRapportInfo(){
$scholen = ' scholen';
if(intval($this->lijst->aantalorgs) == 1) $scholen = ' school';
$toevoeging = '';
$versie = ', schoolversie';
$versie2 = 'schoolversie';
if(intval($this->lijst->vorm) == 2) {
$versie = ', ind. versie';
$versie2 = 'individuele versie';
$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 = "p. " . $this->lijst->orgversie->periodenummer . " van " .
mysql2date($this->lijst->orgversie->geldigvanaf) . " t/m " . mysql2date($this->lijst->orgversie->geldigtm) .
$versie . $toevoeging;
$this->lijst->vantmresult = " <span>periode ". $this->lijst->orgversie->periodenummer ."</span><br><span>".
mysql2date($this->lijst->orgversie->geldigvanaf)." t/m " . mysql2date($this->lijst->orgversie->geldigtm) .
"</span><br><span>".$versie2 . $toevoeging."</span>";
}
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();
$this->setEigenAmbitie();
}
}
private function setNieuwsteVersie(){
if ($this->lijst->orgversie->periodenummer > $this->nieuwste) {
$this->nieuwste = $this->lijst->orgversie->periodenummer;
$this->nieuwsteversie = $this->lijst->orgversieid;
}
}
private function setEigenAmbitie(){
if($this->eigenambitie== 'T') return;
if($this->lijst->ambities->ambitievan != 'standaard') $this->eigenambitie = 'T';
}
private function setSopInfo(){
$this->sopinfo = [
'lijsten' => $this->lijsten,
'aantal' => $this->aantal,
'nieuwsteversie' => $this->nieuwsteversie,
'kleuren' => $this->results['kleuren'],
'versienaam' => $this->versienaam,
'eigenambitie' => $this->eigenambitie
];
}
}