Files
monpas/application/models/shared/Organisaties_model.php
T
2022-07-07 09:13:28 +02:00

529 lines
16 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/** Organisaties_model januari 2015 */
class Organisaties_model extends MY_Model{
protected $tablename = 'tb_organisaties';
function __construct(){
parent::__construct();
$models = array('');
$this->load->model($models);
}
function is_bg($orgid){
//return TRUE als organisatie is bg
$this->sql = "SELECT * FROM tb_organisaties WHERE valtonder_id = {$orgid}";
if($this->get_query_result($this->sql)){
return TRUE;
}else{
return FALSE;
}
}
function get_orgnaam($globorgid){
$this->sql ="SELECT naamkort
FROM tb_organisaties
WHERE id = $globorgid";
$org = $this->get_query_row();
if ($org) {return $org->naamkort;};
}
function getallBGs(){
$this->sql="SELECT O.id, brin, naam, naamkort, plaats,
(SELECT count(OU.id) FROM tb_orgusers OU WHERE OU.organisatie_id = O.id ) AS aantal
FROM tb_organisaties O
WHERE O.id = valtonder_id
AND actief = 1
AND O.id <> 1
ORDER BY valtonder_id, UPPER(naamkort)";
return $this->get_query_result();
}
function getScholen($bgID){
$this->sql ="SELECT O.id, brin, naam, naamkort, plaats,
(SELECT count(OU.id) FROM tb_orgusers OU WHERE OU.organisatie_id = O.id ) AS aantal,
(SELECT count(IFS.id) FROM tb_indicatorscores IFS WHERE IFS.organisatie_id = O.id) AS aantalscores,
(SELECT count(SK.id) FROM tb_schoolkenmerken SK WHERE SK.organisatie_id = O.id) AS aantalkenmerken
FROM tb_organisaties O
WHERE O.id <> {$bgID}
AND valtonder_id = {$bgID}
AND actief = 1
ORDER BY UPPER(naamkort)";
return $this->get_query_result();
}
function getOrganisatie($orgid){
$this->sql ="SELECT O.id, brin, naam, naamkort, plaats, soort, valtonder_id ,
(SELECT count(OU.id) FROM tb_orgusers OU WHERE OU.organisatie_id = O.id ) AS aantal
FROM tb_organisaties O
WHERE id=$orgid
AND actief = 1";
return $this->get_query_row();
}
function checkbrin($orgid=false, $brin){
$this->sql =" SELECT COUNT(id) as aantal
FROM tb_organisaties
WHERE lower(brin) = lower('{$brin}')";
if ($orgid){
$this->sql .=" AND id <> {$orgid}";
};
return $this->get_query_row();
}
function checkdeleteok($bgid){
$this->sql="SELECT COUNT(id) as aantal
FROM tb_organisaties
WHERE valtonder_id = {$bgid}
AND id <> {$bgid}";
$scholen = $this->get_query_row();
if ($scholen->aantal > 0) {return false ;}
else{
// controleer of er gebruikers zijn
$this->sql = "SELECT count(id) as aantal
FROM tb_orgusers
WHERE organisatie_id = {$bgid}";
$users = $this->get_query_row();
if ($users->aantal > 0) {return false ;}
else {return true; };
}
}
function getallorgs(){
$this->sql="SELECT id, naamkort, brin, plaats
FROM tb_organisaties
WHERE actief = 1
ORDER BY UPPER(naamkort)";
// in de query nog een check op orguser? hoeft nu niet omdat deze functie alleen werkt voor super en helpdesk
// voor andere users zie de functie hieronder getuserorgs
return $this->get_query_result();
}
function getuserorgs($userid){
$this->sql="SELECT O.id, naamkort, brin, plaats
FROM tb_organisaties O
JOIN tb_orgusers OU ON OU.organisatie_id = O.id
JOIN tb_autorisaties A ON A.orguser_id = OU.id
JOIN tb_autorisatienivos AN ON AN.id = A.nivo_id
WHERE OU.user_id = {$userid}
AND AN.nivo > 0";
return $this->get_query_result();
}
function getorgs($soort, $valtonderid = FALSE, $actief = FALSE){
$this->sql="SELECT id, naam,naamkort, brin,valtonder_id, soort,plaats
FROM tb_organisaties
WHERE soort = {$soort}
AND id <> 1";
if ($valtonderid) {
$this->sql .=" AND valtonder_id = {$valtonderid} " ;
}
if ($actief){
$this->sql .= " AND actief = 1" ;
}
return $this->get_query_result();
}
function getscholenonderkamer($kamerid){
$this->sql="SELECT O.id, O.soort, O.naam as fullname, O.naamkort, O.plaats, O.brin
FROM tb_organisaties O
JOIN tb_organisaties BG ON O.valtonder_id = BG.id
WHERE BG.valtonder_id = {$kamerid}
AND O.actief = 1
AND O.soort = 4
ORDER BY BG.naamkort, O.naamkort";
return $this->get_query_result();
}
function getscholenonderswv($swvid){
$this->sql="SELECT O.id, O.naam as fullname, O.naamkort, O.plaats, O.brin
FROM tb_organisaties O
JOIN tb_organisaties BG ON O.valtonder_id = BG.id
JOIN tb_organisaties K ON BG.valtonder_id = K.id
AND K.valtonder_id = {$swvid}
AND O.actief = 1
AND O.soort =4
ORDER BY O.naamkort";
return $this->get_query_result();
}
function getorgsonderbestuurMetLicentie( $orgid, $module){
$this->sql="SELECT O.id, O.soort, O.naam as fullname, O.naamkort, O.plaats, O.brin
FROM tb_organisaties O
JOIN tb_licenties L ON O.id = L.orgid
JOIN tb_licenties L2 ON O.valtonder_id = L2.orgid
WHERE valtonder_id = {$orgid}
AND id <> {$orgid}
AND actief = 1
AND L.module = {$module}
AND L2.module = {$module}
ORDER BY naamkort";
return $this->get_query_result();
}
function getScholenOnderKamerMetLicentie($kamerid, $module){
$this->sql="SELECT O.id, O.soort, O.naam as fullname, O.naamkort, O.plaats, O.brin
FROM tb_organisaties O
JOIN tb_organisaties BG ON O.valtonder_id = BG.id
JOIN tb_licenties L ON O.id = L.orgid
JOIN tb_licenties L2 ON BG.valtonder_id = L2.id
WHERE BG.valtonder_id = {$kamerid}
AND O.actief = 1
AND O.soort = 4
AND L.module = {$module}
AND L2.module = {$module}
ORDER BY O.naamkort";
return $this->get_query_result();
}
function getScholenOnderSwvMetLicentie($swvid, $module){
$this->sql="SELECT O.id, O.naam as fullname, O.naamkort, O.plaats, O.brin
FROM tb_organisaties O
JOIN tb_organisaties BG ON O.valtonder_id = BG.id
JOIN tb_organisaties K ON BG.valtonder_id = K.id
JOIN tb_licenties L ON O.id = L.orgid
JOIN tb_licenties L2 ON K.valtonder_id = L2.orgid
AND K.valtonder_id = {$swvid}
AND L.modulenr = {$module}
AND L2.modulenr = {$module}
AND O.actief = 1
AND O.soort = 4
ORDER BY O.naamkort";
return $this->get_query_result();
}
function getorgsvanaf( $toplevelid,$sublevelid = false){
$this->sql="SELECT id, soort, naam, naamkort, plaats,brin
FROM tb_organisaties
WHERE valtonder_id = {$toplevelid}
AND id <> {$toplevelid}
AND actief = 1 ";
if ($sublevelid) {$this->sql .=" AND id ={$sublevelid} " ; } ;
$this->sql .= " ORDER BY naamkort ";
return $this->get_query_result();
}
function get_schoolIDs_onder($orgid){
$this->sql="SELECT DISTINCT(SCHOOL.id) as id
FROM tb_organisaties SCHOOL
JOIN tb_organisaties BESTUUR ON SCHOOL.valtonder_id = BESTUUR.id
JOIN tb_organisaties KAMER ON BESTUUR.valtonder_id = KAMER.id
WHERE (BESTUUR.id = {$orgid} OR KAMER.id = {$orgid} OR KAMER.valtonder_id = {$orgid})
AND SCHOOL.soort = 4
AND SCHOOL.actief = 1";
;
return $this->get_query_result();
}
function getorgsvanafmetlicentie( $toplevelid, $licentie){
$this->sql="SELECT O.id, O.soort, O.naam, O.naamkort, O.plaats, O.brin
FROM tb_organisaties O
JOIN tb_licenties L ON O.id = L.orgid
WHERE valtonder_id = {$toplevelid}
AND O.id <> {$toplevelid}
AND L.modulenr = {$licentie}
AND O.actief = 1
ORDER BY O.naamkort";
return $this->get_query_result();
}
function getorgsonderbestuur( $orgid){
$this->sql="SELECT id, soort, naam as fullname, naamkort, plaats,brin
FROM tb_organisaties
WHERE valtonder_id = {$orgid}
AND id <> {$orgid}
AND actief = 1
ORDER BY naamkort";
return $this->get_query_result();
}
function getorg($orgid){
$this->sql="SELECT id, soort, naam, naamkort, plaats, valtonder_id , brin
FROM tb_organisaties
WHERE id = {$orgid}
AND actief = 1";
return $this->get_query_row();
}
function getbgsonderswv($swvid){
$this->sql="SELECT O1.id, O1.soort, O1.naam, O1.plaats, O1.actief, O2.naamkort AS kamer
FROM tb_organisaties O1
JOIN tb_organisaties O2 ON O2.id = O1.valtonder_id
JOIN tb_organisaties O3 ON O3.id = O2.valtonder_id
WHERE O3.id = {$swvid}
AND O1.id <> O3.valtonder_id
AND O2.id <> O2.valtonder_id
AND O1.actief = 1
ORDER BY O2.naamkort, O1.naamkort ";
return $this->get_query_result();
}
function getorgsdetails($soort, $valtonder){
$this->sql="SELECT O.id, O.soort, O.brin, O.naamkort, O.naam,
O.plaats, O.valtonder_id, O.actief, O.monbas, O.mondiv,
O.bijlagefile, SD.email1
FROM tb_organisaties O
LEFT JOIN tb_schooldetails SD ON O.id = SD.organisatie_id
WHERE O.soort = {$soort} ";
if ($valtonder) {
$this->sql .=" AND O.valtonder_id = {$valtonder} ";
}
$this->sql .=" ORDER BY O.actief DESC, O.id ASC ";
return $this->get_query_result();
}
function getorgdetails($id){
$this->sql="SELECT id, soort, brin, naamkort, naam, plaats,valtonder_id, actief,monbas, mondiv
FROM tb_organisaties
WHERE id= {$id}
ORDER BY naamkort ";
return $this->get_query_row();
}
function hasdependent($orgid){
$this->sql="SELECT count(id) AS aantal
FROM tb_organisaties
WHERE valtonder_id = {$orgid}
AND id <> valtonder_id";
$res = $this->get_query_row();
if ($res && $res->aantal > 0) {return true;}
else {return false;};
}
function zoekorgs($zoekstring){
$this->sql = "SELECT brin, naamkort, plaats , soort, id
FROM tb_organisaties
WHERE (UPPER(naam) LIKE concat('%', UPPER('{$zoekstring}'),'%') ) OR
(UPPER(naamkort) LIKE concat('%', UPPER('{$zoekstring}'),'%') )
AND actief = 1
ORDER BY naamkort";
return $this->get_query_result();
}
function getuserorgOUD($userid){
// deze functie is vervallen omdat nu een gebruiker lid kan zijn van meerdere organisaties
$this->sql="SELECT O.id, naam,soort,valtonder_id
FROM tb_organisaties O
JOIN tb_orgusers OU ON OU.organisatie_id = O.id
WHERE OU.user_id = {$userid}";
return $this->get_query_row();
}
function getsoortvanorginalorg($userid){
$this->sql = "SELECT O.soort
FROM tb_orgusers OU
JOIN tb_organisaties O ON O.id=OU.organisatie_id
WHERE OU.user_id = {$userid}";
$org = $this->get_query_row();
return $org->soort;
}
function getorgs2($orgid){
$this->sql = "SELECT O.id as orgid, O.naamkort as fullname, O.brin
FROM tb_organisaties O
WHERE O.valtonder_id = $orgid
AND O.id <> $orgid
AND O.actief = 1
ORDER BY O.naamkort ";
return $this->get_query_result();
}
function getall(){
$this->sql="Select * from tb_organisaties";
return $this->get_query_result();
}
function getkamer($orgid){
$organisatie = $this->get_record_by_id($orgid);
if ($organisatie->soort == 1) {return null;};
if ($organisatie->soort == 2) {return $orgid; };
if ($organisatie->soort == 3) {return $organisatie->valtonder_id;};
if ($organisatie->soort == 4) {
$organisatie=$this->get_record_by_id($organisatie->valtonder_id);
return $organisatie->valtonder_id;
};
}
function getorgsonder($orgid){
$this->sql = "SELECT id, soort, valtonder_id, actief
FROM tb_organisaties
WHERE valtonder_id ={$orgid}
AND id != valtonder_id
AND actief = 1;";
return $this->get_query_result();
}
function getscholenondertarget($orgid){
if (!isset($idlijst)) {$idlijst = array();};
$orgs= $this->getorgsonder($orgid);
if ($orgs){
foreach($orgs as $org) {
if ($org->soort ==4 ) {$idlijst[] = $org->id;}
}
foreach($orgs as $org){
if ($org->soort < 4) { $idlijst=array_merge($idlijst, $this->getscholenondertarget($org->id));}
}
}
return $idlijst;
}
function getscholenondertarget2($orgid){
$idlijst = array();
$organisatie = $this->get_record_by_id($orgid);
if ($organisatie->soort == 1){
$kamers = $this->getorgsonder($organisatie->id);
if ($kamers){
foreach($kamers as $kamer){
$bgs = $this->getorgsonder($kamer->id);
if ($bgs){
foreach($bgs as $bg){
$scholen = $this->getorgsonder($bg->id);
if ($scholen){
foreach($scholen as $school){
$idlijst[] = $school->id;
}
}; // if scholen
}; // foreach
}; // if bgs
}
}
}
if ($organisatie->soort == 2){
$bgs = $this->getorgsonder($organisatie->id);
if ($bgs){
foreach($bgs as $bg){
$scholen = $this->getorgsonder($bg->id);
if ($scholen){
foreach($scholen as $school){
$idlijst[] = $school->id;
}
}; // if scholen
}; // foreach
}; // if bgs
}; //if orgsoort
if ($organisatie->soort == 3){
$scholen = $this->getorgsonder($organisatie->id);
if ($scholen){
foreach($scholen as $school){
$idlijst[] = $school->id;
}
}; // if scholen
}; //if orgsoort
if ($organisatie->soort == 4){
$idlijst[] = $organisatie->id;
}
return $idlijst;
}
function getorgstructuur($orgid, $actief=FALSE){
$organisatie = $this->getorg($orgid);
if ($organisatie->soort ==1){
$swv = $organisatie;
$swv->kamers = $this->getorgs(2, $swv->id, $actief);
if ($swv->kamers){
foreach($swv->kamers as $kamer){
$kamer->bgs = $this->getorgs(3, $kamer->id, $actief);
if ($kamer->bgs){
foreach ($kamer->bgs as $bg){
$bg->scholen = $this->getorgs(4, $bg->id, $actief);
}; // foreach bg
}; // if bgs
}; // foreach $kamer
}; // if kamers
}; // if soort ==1;
if ($organisatie->soort == 2){
$swv = new stdClass;
$swv->kamers = array();
$swv->kamers[0] = $organisatie;
foreach($swv->kamers as $kamer){
$kamer->bgs = $this->getorgs(3, $kamer->id, $actief);
if ($kamer->bgs){
foreach($kamer->bgs as $bg){
$bg->scholen = $this->getorgs(4, $bg->id, $actief);
};// foreach bg
}; // if bgs
}; // foreach
}; // if soort ==2
if ($organisatie->soort==3){
$swv = new stdClass;
$swv->kamers = array();
$swv->kamers[0]= new stdClass;
$swv->kamers[0]->bgs = array();
$swv->kamers[0]->bgs[0] = $organisatie;
$swv->kamers[0]->bgs[0]->scholen = $this->getorgs(4, $organisatie->id, $actief);
}
if ($organisatie->soort==4){
$swv = new stdClass;
$swv->kamers = array();
$swv->kamers[0]= new stdClass;
$swv->kamers[0]->bgs = array();
$swv->kamers[0]->bgs[0] = new stdClass;
$swv->kamers[0]->bgs[0]->scholen = array();
$swv->kamers[0]->bgs[0]->scholen[0]= $organisatie;
}
return $swv;
}
function get_swvid ($orgid){
$valtonder_id = $this->get(['id'=>$orgid], 'valtonder_id', true);
if ($valtonder_id != $orgid){
return $this->get_swvid($valtonder_id);
}
// else {
return $orgid;
// }
}
function getlistrecursief($orgid,$lijst){
$lijst = array_merge($lijst, array($orgid));
$this->sql = " SELECT id
FROM tb_organisaties
WHERE valtonder_id = {$orgid}
AND id <> {$orgid}
AND actief = 1";
$newlijst = $this->get_query_result();
if ($newlijst){
foreach($newlijst as $newid){
$lijst= $this->getlistrecursief($newid->id, $lijst);
}
}
return $lijst;
}
function getKleurcodesOrg($clusterid = FALSE, $swvid){
if (! $clusterid) $clusterid = 0;
$sql = " SELECT *
FROM tb_kleurcodes KC
WHERE (organisatie_id = {$swvid} OR organisatie_id = 0)
AND (cluster_id = {$clusterid})
order by organisatie_id desc, cluster_id DESC
limit 1";
$query = $this->db->query($sql);
$codes = $query->row();
return $codes;
}
}