diff --git a/application/controllers/monpas/Overzichtsop.php b/application/controllers/monpas/Overzichtsop.php index cbc6c79..9fc46d2 100644 --- a/application/controllers/monpas/Overzichtsop.php +++ b/application/controllers/monpas/Overzichtsop.php @@ -8,7 +8,8 @@ class Overzichtsop extends MY_Controller{ "shared/Schooljaren_model", "shared/Organisaties_model", "shared/Orgusers_model", - "monpas/Compactsop_model" + "monpas/Compactsop_model", + "monpas/Sorteringen_model" @@ -17,10 +18,37 @@ class Overzichtsop extends MY_Controller{ $this->load->helper('string'); } - function getSchooljaren(){ + function getSchooljarenEnCriteria(){ if (!$this->userid) die; $schooljaren = $this->Schooljaren_model->getschooljaren(); - echo json_encode($schooljaren); + $org = $this->Organisaties_model->get_record_by_id($this->globorgid); + $swvID = $this->getSWVID($this->globorgid); + $criteria = $this->Sorteringen_model->get_criteriabijSWV($swvID); + if(!$criteria){ + $criteria = []; + } + $criterium = new stdClass(); + $criterium->id = 0; + $criterium->swv_id = $swvID; + $criterium->naam = "bestuur"; + array_unshift($criteria, $criterium); + + $data = [ + 'schooljaren' => $schooljaren, + 'orgsoort' => $org->soort, + 'orgID' => $this->globorgid, + 'criteria' => $criteria + ]; + + echo json_encode($data); + } + + function getSWVID($orgID){ + $valtonder = $this->Organisaties_model->get_fieldvalue(['id' => $orgID], 'valtonder_id'); + if($orgID != $valtonder) { + $this->getSWVID($valtonder); + } + return $valtonder; } function getOrgsoort(){ @@ -33,90 +61,108 @@ class Overzichtsop extends MY_Controller{ } - function getoverzicht() { + function getoverzicht() + { if (!$this->userid) die; $schooljaarnr = $this->clean_input("schooljaarnr"); - $orgid = $this->clean_input("orgid"); - if ($orgid == 0) $orgid = $this->globorgid; - $organisatie = $this->Organisaties_model->getorg($orgid); + $criteriumID = $this->clean_input("criteriumID"); + + $organisatie = $this->Organisaties_model->getorg($this->globorgid); $organisatie->sop = 'F'; - $compactsopID = $this->Compactsop_model->get_fieldvalue(['organisatie_id' => $orgid, + $compactsopID = $this->Compactsop_model->get_fieldvalue(['organisatie_id' => $this->globorgid, 'schooljaarnummer' => $schooljaarnr], 'id'); if ($compactsopID) $organisatie->sop = 'T'; - switch ($organisatie->soort) { - case 4: - echo json_encode(array("organisatie" => $organisatie, "soort" => 4,)); - break; - case 3: - $bgid = $organisatie->id; - $organisatie->scholen = $this->Organisaties_model->getorgsvanaf($bgid); - if ($organisatie->scholen) { - foreach ($organisatie->scholen as $index => $school) { - $school->sop = 'F'; - $compactsopID = $this->Compactsop_model->get_fieldvalue( - ['organisatie_id' => $school->id, 'schooljaarnummer' => $schooljaarnr], 'id'); - if ($compactsopID) $school->sop = 'T'; - } - } - echo json_encode(array("organisatie" => $organisatie, "soort" => 3)); - break; - case 2: - $kamerid = $organisatie->id; - $organisatie->bgs = $this->Organisaties_model->getorgsvanaf($kamerid); - if ($organisatie->bgs) { - foreach ($organisatie->bgs as $bg) { - $bg->sop = 'F'; - $compactsopID = $this->Compactsop_model->get_fieldvalue( - ['organisatie_id' => $bg->id, 'schooljaarnummer' => $schooljaarnr], 'id'); - if ($compactsopID) $bg->sop = 'T'; - $bg->scholen = $this->Organisaties_model->getorgsvanaf($bg->id); - foreach ($bg->scholen as $index => $school) { + if ($organisatie->soort == 4){ + echo json_encode(array("organisatie" => $organisatie, "soort" => 4,));} + + if ($criteriumID == 0) $this->overzichtPerNiveau($organisatie, $schooljaarnr); + if ($criteriumID > 0) $this->overzichtPerCriterium($organisatie, $schooljaarnr, $criteriumID); + + } + + private function overzichtPerCriterium($organisatie, $schooljaarnr, $criteriumID){ + + + $orgs = $this->Organisaties_model->getlistrecursief($organisatie->id); + $orglist = implode(",", $orgs); + $organisatie->scholen = $this->Compactsop_model->orgsEnSopsPerCriterium($schooljaarnr,$criteriumID,$orglist ); + echo json_encode(array("organisatie" => $organisatie, "soort" => $organisatie->soort)); + + } + + private function overzichtPerNiveau($organisatie, $schooljaarnr){ + switch ($organisatie->soort) { + case 3: + $bgid = $organisatie->id; + $organisatie->scholen = $this->Organisaties_model->getorgsvanaf($bgid); + if ($organisatie->scholen) { + foreach ($organisatie->scholen as $index => $school) { $school->sop = 'F'; $compactsopID = $this->Compactsop_model->get_fieldvalue( ['organisatie_id' => $school->id, 'schooljaarnummer' => $schooljaarnr], 'id'); if ($compactsopID) $school->sop = 'T'; } } - } - echo json_encode(array("organisatie" => $organisatie, "soort" => 2)); - break; - case 1; - $swvid = $organisatie->id; - $organisatie->kamers = $this->Organisaties_model->getorgsvanaf($swvid); - if ($organisatie->kamers) { - if (!is_array($organisatie->kamers)) { - $organisatie->kamers = objectToArray($organisatie->kamers); - } - foreach ($organisatie->kamers as $kamer) { - $kamer->sop = 'F'; - $compactsopID = $this->Compactsop_model->get_fieldvalue( - ['organisatie_id' => $kamer->id, 'schooljaarnummer' => $schooljaarnr], 'id'); - if ($compactsopID) $kamer->sop = 'T'; - $kamer->bgs = $this->Organisaties_model->getorgsvanaf($kamer->id); - if ($kamer->bgs) { - foreach ($kamer->bgs as $bg) { - $bg->sop = 'F'; + echo json_encode(array("organisatie" => $organisatie, "soort" => 3)); + break; + case 2: + $kamerid = $organisatie->id; + $organisatie->bgs = $this->Organisaties_model->getorgsvanaf($kamerid); + if ($organisatie->bgs) { + foreach ($organisatie->bgs as $bg) { + $bg->sop = 'F'; + $compactsopID = $this->Compactsop_model->get_fieldvalue( + ['organisatie_id' => $bg->id, 'schooljaarnummer' => $schooljaarnr], 'id'); + if ($compactsopID) $bg->sop = 'T'; + $bg->scholen = $this->Organisaties_model->getorgsvanaf($bg->id); + foreach ($bg->scholen as $index => $school) { + $school->sop = 'F'; $compactsopID = $this->Compactsop_model->get_fieldvalue( - ['organisatie_id' => $bg->id, 'schooljaarnummer' => $schooljaarnr], 'id'); - if ($compactsopID) $bg->sop = 'T'; - $bg->scholen = $this->Organisaties_model->getorgsvanaf($bg->id); - foreach ($bg->scholen as $index => $school) { - $school->sop = 'F'; + ['organisatie_id' => $school->id, 'schooljaarnummer' => $schooljaarnr], 'id'); + if ($compactsopID) $school->sop = 'T'; + } + } + } + echo json_encode(array("organisatie" => $organisatie, "soort" => 2)); + break; + case 1; + $swvid = $organisatie->id; + $organisatie->kamers = $this->Organisaties_model->getorgsvanaf($swvid); + if ($organisatie->kamers) { + if (!is_array($organisatie->kamers)) { + $organisatie->kamers = objectToArray($organisatie->kamers); + } + foreach ($organisatie->kamers as $kamer) { + $kamer->sop = 'F'; + $compactsopID = $this->Compactsop_model->get_fieldvalue( + ['organisatie_id' => $kamer->id, 'schooljaarnummer' => $schooljaarnr], 'id'); + if ($compactsopID) $kamer->sop = 'T'; + $kamer->bgs = $this->Organisaties_model->getorgsvanaf($kamer->id); + if ($kamer->bgs) { + foreach ($kamer->bgs as $bg) { + $bg->sop = 'F'; $compactsopID = $this->Compactsop_model->get_fieldvalue( - ['organisatie_id' => $school->id, 'schooljaarnummer' => $schooljaarnr], 'id'); - if ($compactsopID) $school->sop = 'T'; + ['organisatie_id' => $bg->id, 'schooljaarnummer' => $schooljaarnr], 'id'); + if ($compactsopID) $bg->sop = 'T'; + $bg->scholen = $this->Organisaties_model->getorgsvanaf($bg->id); + foreach ($bg->scholen as $index => $school) { + $school->sop = 'F'; + $compactsopID = $this->Compactsop_model->get_fieldvalue( + ['organisatie_id' => $school->id, 'schooljaarnummer' => $schooljaarnr], 'id'); + if ($compactsopID) $school->sop = 'T'; + } } } } } - } - echo json_encode([ - "organisatie" => $organisatie, - "soort" => 1]); - break; + echo json_encode([ + "organisatie" => $organisatie, + "soort" => 1]); + break; } } + // function getAlfabetisch(){ // if (!$this->userid) die; diff --git a/application/models/monpas/Compactsop_model.php b/application/models/monpas/Compactsop_model.php index c92e1f7..c820bc5 100644 --- a/application/models/monpas/Compactsop_model.php +++ b/application/models/monpas/Compactsop_model.php @@ -28,4 +28,8 @@ class Compactsop_model extends MY_Model header( 'Content-Length: ' . filesize( $this->compactsoppath.$sop->pdfnaam ) ); readfile( $this->compactsoppath . $sop->pdfnaam ); } + + + + } \ No newline at end of file diff --git a/application/models/monpas/Sorteerlabels_model.php b/application/models/monpas/Sorteerlabels_model.php index 71f199b..d962d00 100644 --- a/application/models/monpas/Sorteerlabels_model.php +++ b/application/models/monpas/Sorteerlabels_model.php @@ -26,6 +26,26 @@ class Sorteerlabels_model extends MY_Model{ WHERE L.sortering_id = {$criteriumid} AND O.organisatie_id = {$schoolid} "; return $this->get_query_row('id'); - } + + function orgsEnSopsPerCriterium($schooljaarnr,$criteriumID,$orglist){ + $this->sql =" SELECT O.id, O.soort, O.naamkort, O.plaats, O.brin, COALESCE(L.naam, 'niet ingedeeld') AS label, + COALESCE(L.naam, 'ZZZZ') AS ordening, + CASE WHEN IS NULL C.id THEN 'F' + ELSE 'T' + END AS sop + + FROM tb_organisaties O + LEFT JOIN tb_sorteerlabels_org OL ON O.id = OL.organisatie_id + LEFT JOIN tb_sorteerlabels L ON OL.label_id = L.id + LEFT JOIN tb_sorteringen S ON L.sortering_id = S.id + LEFT JOIN tb_compactsops C ON O.id = C.organisatie_id + + WHERE O.id IN ({$orglist}) + AND (S.id = {$criteriumID} OR S.id IS NULL) + AND (C.schooljaarnummer = {$schooljaarnr} OR C.id IS NULL) + + GROUP BY O.id + ORDER BY ordening, O.soort, O.naamkort "; + } } \ No newline at end of file diff --git a/application/views/monpas/compactsop/overzicht/_swv.php b/application/views/monpas/compactsop/overzicht/_swv.php index 6c87e0b..3eac258 100644 --- a/application/views/monpas/compactsop/overzicht/_swv.php +++ b/application/views/monpas/compactsop/overzicht/_swv.php @@ -1,5 +1,5 @@ + data-bind="with: $root.selectedOrg() "> diff --git a/application/views/monpas/pages/sopoverzicht.php b/application/views/monpas/pages/sopoverzicht.php index d1e7613..9c28925 100644 --- a/application/views/monpas/pages/sopoverzicht.php +++ b/application/views/monpas/pages/sopoverzicht.php @@ -11,25 +11,44 @@

Selecteer een schooljaar:

- +
+

Kies een sorteercriterium:

+ + +
+ + load->view("monpas/compactsop/overzicht/_school"); ?> - - load->view("monpas/compactsop/overzicht/_bestuur"); ?> + + + load->view("monpas/compactsop/overzicht/_bestuur"); ?> + + + + load->view("monpas/compactsop/overzicht/_regio"); ?> + + + load->view("monpas/compactsop/overzicht/_swv"); ?> + - - load->view("monpas/compactsop/overzicht/_regio"); ?> - - - load->view("monpas/compactsop/overzicht/_swv"); ?> + + load->view("monpas/compactsop/overzicht/_criterium"); ?> diff --git a/public/js/monpas/models/menumodel.js b/public/js/monpas/models/menumodel.js index 54b2496..88a3da4 100644 --- a/public/js/monpas/models/menumodel.js +++ b/public/js/monpas/models/menumodel.js @@ -247,7 +247,6 @@ ls.initMenuModel = function(){ fSetSubmenu: function(){ var self=ls.MenuModel; var that = this; - console.log(this, "this") self.toonScholen(true); $.each(self.menuitems(), function (i, m){ diff --git a/public/js/monpas/models/sopoverzichtmodel.js b/public/js/monpas/models/sopoverzichtmodel.js index 4cd2b20..f23f6c5 100644 --- a/public/js/monpas/models/sopoverzichtmodel.js +++ b/public/js/monpas/models/sopoverzichtmodel.js @@ -15,7 +15,6 @@ mh.initSopOverzichtModel = function(){ if(p.sop === 'T') dit.erIsEenSop(true); this.kamers = ko.observableArray([]); - // dit.scholen = ko.observableArray([]); if (p.kamers){ $.each(p.kamers, function(j,k){ dit.kamers.push(new fAddKamer(k)); @@ -23,11 +22,6 @@ mh.initSopOverzichtModel = function(){ } this.bgs = ko.observableArray([]) this.scholen = ko.observableArray([]); - // if (p.scholen ){ - // $.each(p.scholen, function(i,s){ - // dit.scholen.push(new fAddSchool(s)); - // }) - // } } function fAddKamer(p){ @@ -44,17 +38,11 @@ mh.initSopOverzichtModel = function(){ this.kamers = ko.observableArray() this.bgs = ko.observableArray([]); - // this.scholen = ko.observableArray([]); if (p.bgs){ $.each(p.bgs, function(x,z){ dit.bgs.push(new fAddBG(z)); }) } - // if (p.scholen){ - // $.each(p.scholen, function(i,s){ - // dit.scholen.push(new fAddSchool(s)); - // }) - // } } function fAddBG(p){ @@ -91,24 +79,65 @@ mh.initSopOverzichtModel = function(){ if(b.sop === 'T') dit.erIsEenSop(true) } + function fAddLabelOrg(p){ + var dit = this; + this.id = p.id; + this.soort = p.soort; + this.naam = p.brin ? p.brin = ' ' + p.naamkort: p.naamkort; + this.soort = 'SOP'; + this.kleur = '#1aa3ff'; + this.achtergrond = '#ffffff'; + switch(p.soort){ + case Number(1): dit.soort = 'SWOP' + dit.kleur = '#A28A29'; + dit.achtergrond = '#a07b8e'; + break; + case Number(2): dit.soort = 'ROP'; + dit.kleur = '#ff8c1a'; + dit.achtergrond = '#ded0d7' + break; + case Number(3): dit.soort = 'BOP'; + dit.kleur = '#8cff1a'; + dit.achtergrond = '#f5f0f2'; + break; + } + this.plaats = p.plaats; + this.geopend = ko.observable(false); + this.erIsEenSop = ko.observable(false); + if(p.sop === 'T') dit.erIsEenSop(true); + this.label = p.label; + + } + + + function fAddSchooljaar(s){ this.id = s.schooljaarnr; this.naam = s.naam; } - if (mh.SopOverzichtModel !== undefined){ + function fAddCriterium(c) { + this.id = c.id; + this.naam = c.naam; + } + + + if (mh.SopOverzichtModel !== undefined){ mh.SopOverzichtModel.initModel(); } else { mh.SopOverzichtModel = { - toporg : ko.observable(''), - selectedOrg : ko.observable(''), - orgsoort : ko.observable(1), - geopend : ko.observable(false), - schooljaren : ko.observableArray([]), - selectedSchooljaar : ko.observable(''), - gegevens : ko.observable(true), - titel : ko.pureComputed( function(){ + overzicht : ko.observable(''), + orgsoort : ko.observable(4), + geopend : ko.observable(false), + schooljaren : ko.observableArray([]), + criteria : ko.observableArray([]), + selectedSchooljaar : ko.observable(''), + selectedCriterium : ko.observable(''), + selectedOrg : ko.observable(), + gegevens : ko.observable(true), + bezig : ko.observable(false), + titel : ko.pureComputed( function(){ if(mh.SopOverzichtModel && mh.SopOverzichtModel.orgsoort()){ switch(mh.SopOverzichtModel.orgsoort()){ case 4 : return 'Compact schoolondersteuningsprofiel (SOP)'; @@ -131,129 +160,99 @@ mh.initSopOverzichtModel = function(){ } }), - - initBindings :function(){ var self = mh.SopOverzichtModel; if (!ko.dataFor(document.getElementById('pagsopoverzicht')) ) { ko.applyBindings(mh.SopOverzichtModel, document.getElementById("pagsopoverzicht")); } - self.initModel(); - }, - - initModel: function(){ - var self =mh.SopOverzichtModel; - self.fGetSchooljaren(); - }, - - fGetSchooljaren: function() { - var self =mh.SopOverzichtModel; - $.post("index.php/monpas/overzichtsop/getSchooljaren", function(data){ + $.post("index.php/monpas/overzichtsop/getSchooljarenEnCriteria", function(data){ self.selectedSchooljaar(null); + self.selectedCriterium(null); self.schooljaren.removeAll(); - if(data) { - $.each(data, function (i, s) { + self.criteria.removeAll(); + self.bezig(true); + if(data){ + + $.each(data.schooljaren, function (i, s) { self.schooljaren.push(new fAddSchooljaar(s)); - });//each - if (self.schooljaren() ) self.selectedSchooljaar(self.schooljaren()[0]); + }); + + if (self.schooljaren()) self.selectedSchooljaar(self.schooljaren()[0]); + $.each(data.criteria, function (i, c) { + self.criteria.push(new fAddCriterium(c)); + }); // each + self.selectedCriterium(self.criteria()[0]); + self.orgsoort(data.orgsoort); + } // if - self.fGetMenu(); - + self.initModel(); },'json') - }, + }, - fGetMenu: function(){ + initModel: function(){ var self = mh.SopOverzichtModel; - var submitData = { - 'schooljaarnr' : self.selectedSchooljaar().id, - 'orgid' : 0 - }; - $.post("index.php/monpas/overzichtsop/getoverzicht", submitData , function(data){ - self.toporg(''); - if (data.organisatie){ - - self.orgsoort(data.soort); - self.orgsoort(data.soort); - switch (self.orgsoort()){ - case 1: self.toporg(new fAddSWV(data.organisatie)); - break; - case 2: self.toporg(new fAddKamer(data.organisatie)); - break; - case 3: self.toporg(new fAddBG(data.organisatie)); - break; - case 4: self.toporg(new fAddSchool(data.organisatie)); - break; - } // switch - self.selectedOrg(self.toporg())} - },'json'); + self.fGetOverzicht(); }, fChangeSchooljaar: function() { var self = mh.SopOverzichtModel; if (!self.selectedSchooljaar()) return; + if(self.bezig()) return; self.fGetOverzicht(); }, + fChangeCriterium: function() { + var self = mh.SopOverzichtModel; + if (!self.selectedCriterium()) return; + if(self.bezig()) return; + self.fGetOverzicht(); + }, fGetOverzicht: function(){ - var self =mh.SopOverzichtModel; + var self = mh.SopOverzichtModel; + + console.log(self.selectedSchooljaar(), 'schooljaar') + console.log(self.selectedCriterium(), 'criterium') + var submitData = { 'schooljaarnr' : self.selectedSchooljaar().id, - 'orgid' : self.selectedOrg().id + 'criteriumID' : self.selectedCriterium().id, }; + console.log(submitData) + $.post("index.php/monpas/overzichtsop/getoverzicht", submitData , function(data){ if (data.organisatie){ - self.orgsoort(data.soort); - switch (self.orgsoort()){ - case 1: self.selectedOrg(new fAddSWV(data.organisatie)); - break; - case 2: self.selectedOrg(new fAddKamer(data.organisatie)); - break; - case 3: self.selectedOrg(new fAddBG(data.organisatie)); - break; - case 4: self.selectedOrg(new fAddSchool(data.organisatie)); - break; - } // switch + + + if(Number(self.selectedCriterium().id) == 0) { + + switch (self.orgsoort()) { + case 1: + self.selectedOrg(new fAddSWV(data.organisatie)); + break; + case 2: + self.selectedOrg(new fAddKamer(data.organisatie)); + break; + case 3: + self.selectedOrg(new fAddBG(data.organisatie)); + break; + case 4: + self.selectedOrg(new fAddSchool(data.organisatie)); + break; + } // switch + } + if(Number(self.selectedCriterium().id) > 0){ + $.each(data.organisatie, function(i, o){ + self.overzicht.push(new fAddLabelOrg(i, o)); + }) + + } } + self.bezig(false); },'json'); }, - // fGetAlfabetisch: function(){ - // var self =mh.SopOverzichtModel; - // if(self.selectedOrg().soort === '3' || self.selectedOrg().soort === '4'){ - // self.fGetOverzicht(); - // return; - // } - // var submitData = { - // 'schooljaarnr' : self.selectedSchooljaar().id, - // 'orgid' : self.selectedOrg().id - // }; - // $.post("index.php/monpas/overzichtsop/getAlfabetisch", submitData , function(data){ - // if (data.organisatie){ - // self.orgsoort(data.soort); - // if(self.orgsoort() === '1') self.selectedOrg(new fAddSWV(data.organisatie)); - // if(self.orgsoort() === '2') self.selectedOrg(new fAddKamer(data.organisatie)); - // } - // },'json'); - // }, - - // fToggleGeopend: function(){ - // var self =mh.SopOverzichtModel; - // this.geopend(!this.geopend()); - // }, - - // fSwitchOrg: function(){ - // var self =mh.SopOverzichtModel; - // if (self.selectedOrg() === undefined) return; - // if (this.id === self.selectedOrg().id) return; - // self.orgsoort(''); - // self.selectedOrg(this); - // if (!self.alfabetisch()) self.fGetOverzicht(); - // if (self.alfabetisch()) self.fGetAlfabetisch(); - // - // }, - fOpenPDF: function(){ var self =mh.SopOverzichtModel; var dit = this;
Download