From 18e0f0632bd8ec0eeb6c2a890d9d07c3e6cac29b Mon Sep 17 00:00:00 2001 From: Monique Date: Tue, 22 Nov 2022 20:22:59 +0100 Subject: [PATCH] classnaam gewijzigd in bestaande --- application/core/MY_Controller.php | 2 +- application/libraries/monpas/Schoolscores.php | 355 +++++++++++++++++- .../libraries/monpas/ijkpunten/Lijsten.php | 4 +- .../monpas/ijkpunten/Userlijsten.php | 2 +- 4 files changed, 356 insertions(+), 7 deletions(-) diff --git a/application/core/MY_Controller.php b/application/core/MY_Controller.php index c97b3b6..329e3a0 100644 --- a/application/core/MY_Controller.php +++ b/application/core/MY_Controller.php @@ -78,7 +78,7 @@ class MY_Controller extends CI_Controller{ // public $version = '1.18.04';// invul status // public $version = '1.18.05';// fout schoolgegevens compactsop // public $version = '1.18.08';// kleurenfout - public $version = '1.18.09';// ambities per org + public $version = '1.18.10';// ambities per org diff --git a/application/libraries/monpas/Schoolscores.php b/application/libraries/monpas/Schoolscores.php index e13f2fc..7c4d76b 100644 --- a/application/libraries/monpas/Schoolscores.php +++ b/application/libraries/monpas/Schoolscores.php @@ -4,20 +4,369 @@ class Schoolscores { private $CI; private $ijkpunten; + private $aantalY = 0; private $scores; + private $score; + private $somscore; + private $org; private $ambities; + private $resultaten; private $wensen; - private $schoolScores; + private $adviezen= []; + private $aantaldisablenvt = 0; + private $aantalscores = 0; + private $ijkpuntenok = 0; + private $welkelaagste; + private $welkehoogste; + private $laagstescore = 110; + private $hoogstescore = 0; + private $gemiddelde; - public function __construct( $orgversieid, $orgid) + public function __construct( $orgversieid, $orgid, $scoretype, $isVergelijking) { $this->CI =& get_instance(); $this->orgversieid = $orgversieid; $this->orgid = $orgid; -// $this->handle(); + $this->scoretype= $scoretype; + $this->isVergelijking = $isVergelijking; + $this->handle(); } + public function getScores(){ + return $this->scores; + } + + public function getAmbities(){ + return $this->ambities; + } + + public function getWensen(){ + return $this->wensen; + } + + public function getIJkpunten(){ + return $this->ijkpunten; + } + + public function getResults(){ + return $this->results; + } + + private function handle() + { $this->setIJkpunten(); + $this->telIJkpunten(); + $this->setOrglist(); + $this->setOrg(); + $this->setScores(); + $this->setMetingen(); + $this->setAmbities(); + $this->setWensen(); + $this->setKleuren(); + $this->loopScores1(); + $this->loopScores2(); + $this->setGemiddeldeScore(); + $this->addGemiddeldeScore(); + + $this->setResults(); + } + + + private function setIJkpunten(){ + $this->ijkpunten = $this->CI->Ijkpunten_model->getijkpuntenMetIndicatoren($this->orgversieid); + } + + private function telIJkpunten(){ + if($this->ijkpunten){ + foreach($this->ijkpunten as $ijkpunt){ + if($ijkpunt->disabled == 'F'){ + $this->aantalY++; + } + } + } + } + + private function setOrglist(){ + $orglist = $this->CI->Organisaties_model->getlistrecursief($this->orgid, []); + if($orglist) { + $this->orgstring = implode(',', $orglist); + } + } + private function setOrg(){ + $this->org = $this->CI->Organisaties_model->get_record_by_id($this->orgid); + $this->orgnaam = $this->org->brin? $this->org->brin . ' ' . $this->org->naamkort : $this->org->naamkort; + } + + private function setScores(){ + $this->scores = $this->CI->Scores_model->getgemscores($this->orgversieid, $this->orgstring); + } + + private function setMetingen(){ + $this->metingen = new stdClass(); + if(count($this->scores)==0) + $this->metingen->aantal= 0; + $this->metingen->aantalorgs = 0; + + if($this->org->soort == 4) { + $this->metingen->aantal = 1; + $this->metingen->aantalorgs = 1; + } + else { + $this->metingen = $this->CI->Scores_model->fCountGevuldeVersiesNieuw($this->orgversieid, $this->orgstring); + } + } + + + private function setAmbities(){ + $ambitieorgs = ''; + + $ambitieorgs = $this->getAmbitieOrgs($this->orgid, $ambitieorgs); + $ambitieorgs = rtrim($ambitieorgs, ','); + + $toporgsarray = explode(',', $ambitieorgs); + $toporgs = ''; + $index = 0; + for($i = count($toporgsarray)-1; $i >= 0 ; $i--) { + if($index < 2) { + $toporgs .= $toporgsarray[$i] . ','; + $index++; + } + } + $toporgs = rtrim($toporgs, ',' ); + + $this->ambities = $this->CI->Ambities_model->mh_get_ambitie_orgversie($this->orgversieid, $ambitieorgs, $toporgs); + } + + + private function setWensen(){ + if($this->isVergelijking =='T' ) {$this->wensen = false; + return; + } + $this->wensen = $this->CI->Wenssituaties_model->getgewenst( $this->orgversieid, $this->orgid); + } + + private function setKleuren(){ + + $this->kleuren = new stdClass(); + $this->kleuren->grens1 = '60'; + $this->kleuren->grens2 = '80'; + $this->kleuren->grens3 = '90'; + $this->kleuren->grens4 = '100'; + if($this->scoretype ==7){ + $this->kleuren->grens1 = '33'; + $this->kleuren->grens2 = '66'; + $this->kleuren->grens3 = '100'; + } + $this->kleuren->kleur1 = '#e08885'; + $this->kleuren->kleur2 = '#ffcc80'; + $this->kleuren->kleur3 = '#9fdf9f'; + $this->kleuren->kleur4 = '#99d6ff'; + $this->kleuren->organisatie_id = '0'; +// } + } + + private function loopScores1(){ + if(!$this->scores) return; + foreach ($this->scores as $index => $this->score) { + if($this->score->disabled == 'F' && $this->score->disablenvt == 'F') { + $this->somscore = $this->somscore + $this->score->gem; + $this->aantalscores++; + } + if($this->score->disabled == 'F' && $this->score->disablenvt == 'T'){ + $this->aantaldisablenvt++; + } + + } + } + + private function loopScores2(){ + if (!$this->scores) return; + foreach ($this->scores as $index => $this->score) { + $this->setScoreNummer(); + $this->rondScoresAf(); + $this->setScoreKleuren(); + $this->telIJkpuntenok(); + $this->setResultaten(); + $this->addGewensteScores($index); + $this->setWenskleuren(); + $this->setAdviezen(); + + } + } + + private function setScoreNummer(){ + if($this->isVergelijking =='T' ) return; + $this->score->huidig = 1; + if ($this->score->gem >= $this->kleuren->grens1) $this->score->huidig =2; + if ($this->score->gem >= $this->kleuren->grens2) $this->score->huidig =3; + if ($this->score->gem >= $this->kleuren->grens3) $this->score->huidig =4; + + if($this->scoretype == 7){ + if ($this->score->gem == $this->kleuren->grens3) $this->score->huidig = 4; + if ($this->score->gem < $this->kleuren->grens3) $this->score->huidig = 3; + if ($this->score->gem <= $this->kleuren->grens2) $this->score->huidig = 2; + if ($this->score->gem <= $this->kleuren->grens1) $this->score->huidig = 1; + + } + } + + private function rondScoresAf(){ + $this->score->gem = round($this->score->gem); + + } + + private function setScoreKleuren(){ + $kleur = $this->CI->Scorekleuren_model->getGemiddeldeKleur($this->scoretype, $this->score->gem); + $kleur = $kleur->kleurcode; + if(!$kleur) $kleur = '#ffffff'; + $this->score->kleur = $kleur; + + } + + private function telIJkpuntenok(){ + if($this->score->disabled == 'F' && $this->score->disablenvt == 'F') { + $zprocent = 60; + if(isset($this->ambities) && $this->ambities ) $zprocent = $this->ambities->zprocent; + if ($this->score->gem >= $zprocent ) { + $this->ijkpuntenok++; + } + } + } + + private function setResultaten(){ + if($this->score->disabled == 'F' && $this->score->disablenvt == 'F') { + + if ($this->score->gem > $this->hoogstescore) { + $this->hoogstescore = $this->score->gem; + $this->welkehoogste = $this->score->nummer; + } + if ($this->score->gem <= $this->laagstescore) { + $this->laagstescore = $this->score->gem; + $this->welkelaagste = $this->score->nummer; + } + } + } + + private function addGewensteScores($index){ + if($this->isVergelijking =='T' ) return; + + $this->score->wens = 3; + if ($this->wensen && $index < $this->aantalscores) { + $this->score->wens = $this->wensen[$index]->wens; + } + } + + private function setWensKleuren(){ + if($this->isVergelijking =='T' ) return; + + if(! isset($this->wensen)) return; + if(!isset($this->score->wens)) return; + $kleur = $this->CI->Scorekleuren_model->getWensKleur($this->scoretype, $this->score->wens); + if(!$kleur) $kleur = '#ffffff'; + $this->score->wenskleur = $kleur; + + } + + private function setAdviezen(){ + if($this->isVergelijking =='T' ) { + $this->adviezen = false; + return; + } + if(isset($this->score->wens) && + $this->score->huidig < $this->score->wens && + $this->score->wens!= 0 && + $this->score->disabled == 'F' && + $this->score->disablenvt == 'F'){ + $omschrijving = ""; + if(isset($this->score->omschrijving)){ + $omschrijving = $this->score->omschrijving; + } + $this->adviezen[] = ["nummer"=> $this->score->nummer, "omschrijving" =>$omschrijving]; + } + } + + private function setGemiddeldeScore(){ + if(!$this->scores || $this->aantalscores == 0) return; + $this->gemiddelde = new stdClass(); + $this->gemiddelde->gem = 0; + $this->gemiddelde->score = 0; + $deler = $this->aantalY - $this->aantaldisablenvt; + if($deler > 0) $this->gemiddelde->gem = round($this->somscore / $deler); + + $this->gemiddelde->disabled = 'F'; + $this->gemiddelde->disablenvt = 'F'; + $this->gemiddelde->nummer = 'gem'; + + $kleur = $this->CI->Scorekleuren_model->getGemiddeldeKleur($this->scoretype, $this->gemiddelde->gem); + $kleur = $kleur->kleurcode; + if(!$kleur) $kleur = '#ffffff'; + $this->gemiddelde->kleur = $kleur; + + } + + private function addGemiddeldeScore(){ + if(!$this->scores || ! $this->gemiddelde) return; + array_push($this->scores, $this->gemiddelde); + } + + + private function setResults(){ + + $this->resultaten = [ + 'totgem' => $this->gemiddelde->gem, + 'ijkpuntenok' => $this->ijkpuntenok, + 'welkehoogste' => $this->welkehoogste, + 'hoogstescore' => round($this->hoogstescore, 1), + 'welkelaagste' => $this->welkelaagste, + 'laagstescore' => round($this->laagstescore, 1), + ]; + + $this->results= [ + 'orgnaam' => $this->orgnaam, + 'ijkpunten' => $this->ijkpunten, + 'scores' => $this->scores, + 'metingen' => $this->metingen, + 'ambities' => $this->ambities, + 'kleuren' => $this->kleuren, + 'wensen' => $this->wensen, + 'resultaten' => $this->resultaten, + 'adviezen' => $this->adviezen, + 'aantalY' => $this->aantalY + + + ]; + + } + + private function getAmbitieOrgs($orgid, $ambitieorgs){ + $ambitieorgs .= $orgid . ','; + $valtonder = $this->CI->Organisaties_model->get_fieldvalue(['id' => $orgid], 'valtonder_id'); + if($valtonder != $orgid){ + return $this->getAmbitieOrgs($valtonder, $ambitieorgs); + } + + return $ambitieorgs; + + } + + + +// private $CI; +// private $ijkpunten; +// private $scores; +// private $ambities; +// private $wensen; +// private $schoolScores; +// +// +// public function __construct( $orgversieid, $orgid) +// { +// $this->CI =& get_instance(); +// $this->orgversieid = $orgversieid; +// $this->orgid = $orgid; +// $this->handle(); + // } + // public function getScores(){ // return $this->scores; // } diff --git a/application/libraries/monpas/ijkpunten/Lijsten.php b/application/libraries/monpas/ijkpunten/Lijsten.php index caa10ec..a126e47 100644 --- a/application/libraries/monpas/ijkpunten/Lijsten.php +++ b/application/libraries/monpas/ijkpunten/Lijsten.php @@ -137,7 +137,7 @@ class Lijsten $this->scores = $this->gemiddelden->getIJkpunten(); } else { - $this->scoresobject = new Scores($this->lijst->orgversieid, $this->orgid, $this->lijst->orgversie->scoretype, 'F'); + $this->scoresobject = new Schoolscores($this->lijst->orgversieid, $this->orgid, $this->lijst->orgversie->scoretype, 'F'); $this->results = $this->scoresobject->getResults(); $this->scores = $this->scoresobject->getScores(); @@ -156,7 +156,7 @@ class Lijsten break; } - $this->vergelijkingen = (new Scores($this->lijst->orgversieid, $orgid, $this->lijst->orgversie->scoretype,'T' ))->getResults(); + $this->vergelijkingen = (new Schoolscores($this->lijst->orgversieid, $orgid, $this->lijst->orgversie->scoretype,'T' ))->getResults(); } diff --git a/application/libraries/monpas/ijkpunten/Userlijsten.php b/application/libraries/monpas/ijkpunten/Userlijsten.php index d763c24..679e47a 100644 --- a/application/libraries/monpas/ijkpunten/Userlijsten.php +++ b/application/libraries/monpas/ijkpunten/Userlijsten.php @@ -86,7 +86,7 @@ class Userlijsten if(!isset($this->scores) || !$this->scores) return; $bestuurid = $this->organisatie->valtonder_id; $orgid = $this->CI->Organisaties_model->get_fieldvalue(['id'=>$bestuurid], 'valtonder_id'); - $this->vergelijkingen = (new Scores($this->orgversieid, $orgid, 2, 'T'))->getResults() ; + $this->vergelijkingen = (new Schoolscores($this->orgversieid, $orgid, 2, 'T'))->getResults() ; } private function setVergelijkingScores(){