Files
monpas/application/controllers/monpas/Omvang.php
T
2021-07-13 14:58:26 +02:00

602 lines
21 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
use Curl\Curl;
use \Firebase\JWT\JWT;
class Omvang extends MY_Controller{
function __construct(){
parent::__construct();
$models = array(
"monpas/Arrangementen_model",
"monpas/Arrangementen_piv_aantal_model",
"shared/Kalenderjaren_model",
"shared/Aantalleerlingen_model",
"shared/Licenties_model",
"Phantom_model",
"monpas/Tlvs_model"
);
$this->load->model($models);
$this->load->helper('string');
}
function getrechten(){
if (!$this->userid) die;
$editok = false;
$autorisatie = $this->Autorisaties_model->check_autorisatie($this->userrole,259 );
if ( $autorisatie> 0) $editok = true;
echo json_encode($editok);
}
function getextraomvang(){
if (!$this->userid) die;
$schooljaarnr = $this->uri->segment(4);
$aantal = $this->Aantalleerlingen_model->getAantalleerlingenInvullen($this->globorgid, $schooljaarnr);
if(!$aantal) $aantal = false;
$tlvs = $this->Tlvs_model->getAantalTLVs($this->globorgid, $schooljaarnr);
if(!$tlvs) $tlvs = false;
$arrangementen = $this->Arrangementen_model->getArrangementen($this->globorgid, $schooljaarnr);
if($arrangementen){
foreach($arrangementen as $arrangement){
$arrangement->huidig = $this->Arrangementen_model->getAantallen($this->globorgid, $schooljaarnr, $arrangement->id);
}
}
else{
$arrangementen = false;
}
$extraomvang = [
'aantal' => $aantal,
'tlvs' => $tlvs,
'arrangementen' => $arrangementen,
];
echo json_encode($extraomvang);
}
function getArrangementen(){
if (!$this->userid) die;
$schooljaarnr = $this->uri->segment(4);
$arrangementen = $this->Arrangementen_model->getArrangementen($this->globorgid, $schooljaarnr);
if($arrangementen){
foreach($arrangementen as $arrangement){
$arrangement->huidig = $this->Arrangementen_model->getAantallen($this->globorgid, $schooljaarnr, $arrangement->id);
}
}
else{
$arrangementen = false;
}
echo json_encode($arrangementen);
}
function saveAantalLeerlingen(){
if (!$this->userid) die;
$schooljaarnr = $this->clean_input('schooljaarnr');
$aantalleerlingen = $this->clean_input('aantalleerlingen');
$id = $this->Aantalleerlingen_model->get_fieldvalue(['schooljaarnr' => $schooljaarnr, 'organisatie_id' => $this->globorgid], 'id');
if ($id) {
$this->Aantalleerlingen_model->update_record(['aantal' => $aantalleerlingen], $id);
} else {
$data =[
'organisatie_id' => $this->globorgid,
'schooljaarnr' => $schooljaarnr,
'aantal' => $aantalleerlingen
];
$id = $this->Aantalleerlingen_model->insert_record($data);
}
if(!$id){
$id = 0;
}
echo json_encode($id);
}
function saveTlvsSO(){
if (!$this->userid) die;
$schooljaarnr = $this->clean_input('schooljaarnr');
$laag = $this->clean_input('laag');
$midden = $this->clean_input('midden');
$hoog = $this->clean_input('hoog');
$laagID = $this->clean_input('laagID');
$middenID = $this->clean_input('middenID');
$hoogID = $this->clean_input('hoogID');
$laagIDNieuw = false;
$middenIDNieuw = false;
$hoogIDNieuw = false;
if(intval($laag) > 0 && intval($laagID) > 0) {
$laagIDNieuw = $this->Tlvs_model->update_record(['aantal' => $laag], $laagID);
}
if(intval($midden) > 0 && intval($middenID) > 0) {
$middenIDNieuw = $this->Tlvs_model->update_record(['aantal' => $midden], $middenID);
}
if(intval($hoog) > 0 && intval($hoogID) > 0) {
$hoogIDNieuw = $this->Tlvs_model->update_record(['aantal' => $hoog], $hoogID);
}
if(intval($laag) > 0 && intval($laagID) == 0) {
$nieuwedata = [
'schooljaarnr' => $schooljaarnr,
'organisatie_id' => $this->globorgid,
'soort' => 'SO',
'zwaarte' => 'LAAG',
'aantal' => $laag
];
$laagIDNieuw = $this->Tlvs_model->insert_record($nieuwedata);
}
if(intval($midden) > 0 && intval($middenID)== 0) {
$nieuwedata = [
'schooljaarnr' => $schooljaarnr,
'organisatie_id' => $this->globorgid,
'soort' => 'SO',
'zwaarte' => 'MIDDEN',
'aantal' => $midden
];
$middenIDNieuw = $this->Tlvs_model->insert_record($nieuwedata);
}
if(intval($hoog) > 0 && intval($hoogID) == 0) {
$nieuwedata = [
'schooljaarnr' => $schooljaarnr,
'organisatie_id' => $this->globorgid,
'soort' => 'SO',
'zwaarte' => 'HOOG',
'aantal' => $hoog
];
$hoogIDNieuw = $this->Tlvs_model->insert_record($nieuwedata);
}
$ids = [
'laag' => $laagIDNieuw,
'midden' => $middenIDNieuw,
'hoog' => $hoogIDNieuw
];
echo json_encode($ids);
}
function saveTlvsSBO(){
if (!$this->userid) die;
$schooljaarnr = $this->clean_input('schooljaarnr');
$licht = $this->clean_input('licht');
$zwaar = $this->clean_input('zwaar');
$lichtID = $this->clean_input('lichtID');
$zwaarID = $this->clean_input('zwaarID');
$lichtIDNieuw = false;
$zwaarIDNieuw = false;
if(intval($licht) > 0 && intval($lichtID) > 0) {
$lichtIDNieuw = $this->Tlvs_model->update_record(['aantal' => $licht], $lichtID);
}
if(intval($zwaar) > 0 && intval($zwaarID) > 0) {
$zwaarIDNieuw = $this->Tlvs_model->update_record(['aantal' => $zwaar], $zwaarID);
}
if(intval($licht) > 0 && intval($lichtID) == 0) {
$nieuwedata = [
'schooljaarnr' => $schooljaarnr,
'organisatie_id' => $this->globorgid,
'soort' => 'SBO',
'zwaarte' => 'LICHT',
'aantal' => $licht
];
$lichtIDNieuw = $this->Tlvs_model->insert_record($nieuwedata);
}
if(intval($zwaar) > 0 && intval($zwaarID)== 0) {
$nieuwedata = [
'schooljaarnr' => $schooljaarnr,
'organisatie_id' => $this->globorgid,
'soort' => 'SBO',
'zwaarte' => 'ZWAAR',
'aantal' => $zwaar
];
$zwaarIDNieuw = $this->Tlvs_model->insert_record($nieuwedata);
}
$ids=[
'licht' =>$lichtIDNieuw,
'zwaar' =>$zwaarIDNieuw
];
echo json_encode($ids);
}
function saveLlnArrangement(){
if (!$this->userid) die;
$aantal = $this->clean_input('aantal');
$arrid = $this->clean_input('id');
$schooljaarnr = $this->clean_input('schooljaar');
$recordid = $this->Arrangementen_piv_aantal_model->get_fieldvalue(
['arrangement_id'=>$arrid, 'schooljaarnr'=>$schooljaarnr], 'id', true);
if($recordid){
$this->Arrangementen_piv_aantal_model->update_record(
['aantal' => $aantal], $recordid );
}
else{
$recordid = $this->Arrangementen_piv_aantal_model->insert_record(
['arrangement_id'=>$arrid, 'schooljaarnr'=> $schooljaarnr, 'aantal'=>$aantal]);
}
}
function deleteArrangement(){
if (!$this->userid) die;
$arrangementid = $this->uri->segment(4);
$message = "";
$totaal = $this->Arrangementen_piv_aantal_model->getAantallen($arrangementid);
if(!isset($totaal) || $totaal ==0) {
$this->Arrangementen_model->delete_record($arrangementid);
$this->Arrangementen_piv_aantal_model->delete_record_where(['arrangement_id' =>$arrangementid]);
$message = "gelukt";
$subtotalen = 0;
}
else{
$schooljaren = "";
$subtotalen = $this->Arrangementen_piv_aantal_model->getAantallenPerSchooljaar($arrangementid);
if($subtotalen){
$lengte = count($subtotalen);
foreach($subtotalen as $index => $subtotaal){
if( $index < ($lengte - 2)) $schooljaren = $schooljaren . $subtotaal->naam. ', ';
if( $index == ($lengte - 2)) $schooljaren = $schooljaren . $subtotaal->naam.' en ' ;
if( $index == ($lengte - 1)) $schooljaren = $schooljaren . $subtotaal->naam ;
}
}
$message = "Er zijn leerlingen gekoppeld aan het arrangement in ". $schooljaren. " . Het kan niet worden verwijderd.";
}
echo json_encode($message);
}
function archiveerArrangement(){
if (!$this->userid) die;
$arrid = $this->clean_input('arrangementid');
$schooljaarnr = $this->clean_input('schooljaarnr');
$arrangement = $this->Arrangementen_model->get_record_by_id($arrid);
if ($arrangement->organisatie_id != $this->globorgid) return;
$aantalid = $this->Arrangementen_piv_aantal_model->get_fieldvalue(['arrangement_id' => $arrid, 'schooljaarnr' => $schooljaarnr], 'id');
if ($aantalid) {
$this->Arrangementen_piv_aantal_model->update_record(['archief' => 'T'], $aantalid);
}
else{
$aantalid = $this->Arrangementen_piv_aantal_model->insert_record(['arrangement_id' => $arrid, 'aantal'=> 0, 'schooljaarnr' => $schooljaarnr, 'archief' => 'T']);
}
echo json_encode($aantalid);
}
function saveNieuwArrangement(){
if (!$this->userid) die;
$orgid = $this->globorgid;
$schooljaarnr = $this->clean_input('schooljaarnr');
$aantal = $this->clean_input('aantal');
$naam = stripslashes($this->clean_input('naam'));
$leeftijd = stripslashes($this->clean_input('leeftijd'));
$looptijd = $this->clean_input('looptijd');
$data = [
'organisatie_id' => $orgid,
'naam' => $naam,
'lengte' => $looptijd,
'leeftijd' => $leeftijd,
'schooljaarnr' => $schooljaarnr
];
$id = $this->Arrangementen_model->insert_record($data);
$data2 = [
'arrangement_id' => $id,
'schooljaarnr' => $schooljaarnr,
'aantal' => $aantal,
'archief' =>'F'
];
$aantalid = $this->Arrangementen_piv_aantal_model->insert_record($data2);
echo json_encode($id);
}
function toonAlleArrangmenten(){
if (!$this->userid) die;
$schooljaarnr = $this->uri->segment(4);
$orgid = $this->globorgid;
$arrangementen = $this->Arrangementen_model->getArrangementen($orgid, $schooljaarnr);
foreach($arrangementen as $arrangement) {
$this->Arrangementen_piv_aantal_model->update_record_where(['archief' => 'F'], ['arrangement_id' =>$arrangement->id, 'schooljaarnr' =>$schooljaarnr]);
}
}
function gegevensmeetellen(){
if (!$this->userid) die;
$meetellen = $this->clean_input('meetellen');
$schooljaarnr = $this->clean_input('schooljaar');
$aantalid = $this->Aantalleerlingen_model->get_fieldvalue(['organisatie_id' => $this->globorgid, 'schooljaarnr' => $schooljaarnr], 'id');
if ($aantalid){
$this->Aantalleerlingen_model->update_record(['meetellen' =>$meetellen], $aantalid);
}
}
function bewaarNotitie(){
if (!$this->userid) die;
$notitie = $this->clean_input('notitie');
$schooljaarnr = $this->clean_input('schooljaarnr');
$aantalid = $this->Aantalleerlingen_model->get_fieldvalue(['organisatie_id' => $this->globorgid, 'schooljaarnr' => $schooljaarnr], 'id');
if ($aantalid){
$this->Aantalleerlingen_model->update_record(['notitie'=>$notitie], $aantalid);
}
echo json_encode($aantalid);
}
function getOrgsEnSchooljaren(){
if (!$this->userid) die;
$organisatie = $this->Organisaties_model->getorg($this->globorgid);
$ids = [];
if($organisatie->soort == 4){
$schoolIDs = $organisatie->id;
}
else {
$scholen = $this->Organisaties_model->get_schoolIDs_onder($organisatie->id);
if($scholen){
foreach ($scholen as $school){
$ids [] = $school->id;
}
}
$schoolIDs = implode(',', $ids);
$organisatie->suborgs = $this->Organisaties_model->getorgsvanaf($organisatie->id);
//bestuur kamer of swv
if (isset($organisatie->suborgs)){
foreach ($organisatie->suborgs as $suborg) {
if ($suborg->soort < 4) {
//kamer of swv
$suborg->suborgs = $this->Organisaties_model->getorgsvanaf($suborg->id);
}
if (isset($suborg->suborgs)) {
foreach ($suborg->suborgs as $subsub) {
if ($subsub->soort < 4) {
//kamer
$subsub->suborgs = $this->Organisaties_model->getorgsvanaf($subsub->id);
}
}
}
}
}
}
$schooljaren = false;
if($schoolIDs) {
$schooljaren = $this->Aantalleerlingen_model->get_gevulde_schooljaren($schoolIDs);
}
$data = [
"organisatie" => $organisatie,
"soort" => $organisatie->soort,
"schooljaren" => $schooljaren
];
echo json_encode($data);
}
function getOmvang(){
if (!$this->userid) die;
$schooljaarnrs = $this->clean_input('schooljaren');
$orgid = $this->clean_input('orgid');
if(! array($schooljaarnrs)) $schooljaarnrs = array($schooljaarnrs);
// $schooljaarnrs = array_reverse($schooljaarnrs);
$schooljaren = [];
$arrangementen = [];
$organisatie = $this->Organisaties_model->getorg($orgid);
;
$array = [];
$idsboven = [];
if($organisatie->soort == 4){
$schoolIDs = $organisatie->id;
}
else{
$scholen = $this->Organisaties_model->get_schoolIDs_onder($organisatie->id);
if($scholen){
foreach($scholen as $school){
$array[] = $school->id;
}
$schoolIDs = implode(',', $array);
}
}
if($organisatie->soort != 1) {
$organisatieBoven = $this->Organisaties_model->getorg($organisatie->valtonder_id);
if($organisatie->soort == 3){
$organisatieBoven = $this->Organisaties_model->getorg($organisatieBoven->valtonder_id);
}
$scholenboven = $this->Organisaties_model->get_schoolIDs_onder($organisatie->valtonder_id);
if($scholenboven){
foreach($scholenboven as $school){
$array[] = $school->id;
}
$schoolIDsBoven = implode(',', $array);
}
}
foreach($schooljaarnrs as $nummer){
$schooljaar = new stdClass();
if(isset($schoolIDs)) {
$omvang = $this->Aantalleerlingen_model->get_omvang($nummer, $schoolIDs);
$schooljaar->schooljaarnr = $omvang->schooljaarnr;
$schooljaar->naam = $omvang->naam;
$schooljaar->aantal = $omvang->aantal;
$aantal = $this->Arrangementen_model->getAantalLeerlingenMetArrangement($nummer, $schoolIDs);
$schooljaar->aantalllnarr = $aantal->aantal;
$schooljaar->tlvs = $this->Tlvs_model->getAantalLeerlingenMetTLV($nummer, $schoolIDs);
if($organisatie->soort == 4){
$schooljaar->arrangementen = $this->Arrangementen_model->getArrangementenMetAantallen($organisatie->id,$nummer );
}
}
if(isset($schoolIDsBoven)) {
$boven = $this->Aantalleerlingen_model->get_omvang($nummer, $schoolIDsBoven);
$schooljaar->naamboven = $organisatieBoven->naamkort;
$schooljaar->brinboven = $organisatieBoven->brin;
$schooljaar->aantalboven = $boven->aantal;
$aantal = $this->Arrangementen_model->getAantalLeerlingenMetArrangement($nummer, $schoolIDsBoven);
$schooljaar->aantalllnarrB = $aantal->aantal;
$schooljaar->tlvsB = $this->Tlvs_model->getAantalLeerlingenMetTLV($nummer, $schoolIDsBoven);
}
if(isset($schooljaar->aantal)){
$schooljaren [] = $schooljaar;
}
}
$result = [
'schooljaren' => $schooljaren
];
echo json_encode($result);
}
function getArrangementenBijSchool($schooljaarnrs, $organisatieid){
$arrangementen = [];
foreach ($schooljaarnrs as $nummer) {
$arrangement = $this->Arrangementen_model->getArrangementen($organisatieid, $nummer);
if ($arrangement) {
$arrangementen[] = $arrangement;
}
}
return $arrangementen;
}
function maakOmvangPDF(){
if (!$this->userid) die;
if (!$this->globorgid) die;
$orgid = $this->globorgid;
$inputstring = $this->input->post('data');
$input = json_decode($inputstring);
$schooljaren = $input->schooljaren;
$filenaam = $input->filenaam;
$filenaam = trim($filenaam);
$filenaam = str_replace(' ', '_', $filenaam);
$organisatie = $this->Organisaties_model->getorg($this->globorgid);
$today = date("d-m-Y");
$data['organisatie'] = $organisatie;
$data['vandaag'] = $today;
$data['schooljaren']= $input->schooljaren;
$data['hoofdtabel'] = $input->hoofdtabel;
$data['graph'] = $input->graph;
$data['tlvgraphs'] = $input->tlvgraphs;
$data['arrgraphs'] = $input->arrgraphs;
$data['arrtables'] = $input->arrtables;
$html = $this->load->view("monpas/reports/omvangreport", $data, true);
$pdf = $this->Phantom_model->create_pdf($html, $filenaam, FALSE, FALSE, FALSE, 'landscape');
}
// monpas.local/index.php/monpas/omvang/getGrippaTlvs/2019
public function getGrippaTlvs($schooljaar){
// if (!$this->userid) die;
$startdatum = '2019-08-01';
$einddatum = '2020-07-31';
$endpoint = 'https://api.grippa.nl/index.php/v1/api/tlvrequest';
$this->load->helper('string');
$key = 'mZ6QtNTno2bjvIoojD5eafSKjJf6Oc3KLLaz9Ixlo2bjvIoojD5eaf';
$requestToken = random_string('alnum', 40);
$organisationHash =
hash( 'sha256',
hash( 'sha256', 'esC4ESRmqgHaEoj7lXF8W1plrZRM0FqzujEz8xI6noWvuYKyE7' ) .
hash( 'sha256', $requestToken )
);
// $organisationHash = hash_hmac( hash_hmac('esC4ESRmqgHaEoj7lXF8 W1plrZRM0FqzujEz8xI6 noWvuYKyE7'). hash_hmac($requestToken));
$payload = [
'iat' => strtotime(gmdate('Y/m/d H:i:s')),
'iss' => 'MONPAS',
'organisation_brin' => 'PO2203',
'requesttoken' => $requestToken,
'organisation_hash' => $organisationHash,
'start' => $startdatum,
'starttype' => 'G',
'eind' => $einddatum,
'eindtype' => 'S'
];
$jwt = JWT::encode($payload, $key);
$curl = new Curl();
$curl->post($endpoint, ['jwt' => $jwt]);
$tlvs = $curl->response;
$tlvs = json_decode($tlvs);
var_dump($tlvs);
}
}