Files
2021-07-10 16:25:16 +02:00

527 lines
20 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Planning extends MY_controller {
public $rootpath;
function __construct(){
parent::__construct();
$models = array('ijkpartituur/ModActiviteiten',
'ijkpartituur/ModAgenda',
'ijkpartituur/Modhulpmiddelen',
'ijkpartituur/Modfases',
'ijkpartituur/ModKosten',
'ijkpartituur/ModActDoel',
'ijkpartituur/ModActHulp',
'ijkpartituur/Modpartactiviteiten',
'ijkpartituur/ModPartPijlers',
'shared/Orgusers_model',
'shared/Users_model',
'ijkpartituur/ModPartActxHulpmiddel',
'ijkpartituur/ModPartActxDoelgroep',
'ijkpartituur/Modpartactxorgusers',
'ijkpartituur/ModPartActKosten',
'ijkpartituur/ModPartActResultaten' ,
'ijkpartituur/Partituurs_model',
'ijkpartituur/ModAgenda',
'ijkpartituur/ModPortfolio');
$this->load->model($models);
$this->rootpath = str_replace('/public', '', $_SERVER['DOCUMENT_ROOT']);
if ( ! $this->check_online_status() ) {
echo json_encode( array('offline' => TRUE) );
die;
};// if
}
public function index(){
}
function getActiviteitenPerPijler(){
//TODO haal alleen de activiteiten op die nog niet zijn opgenomen in de partituur
// inclusief eigen activiteiten
$partID= $this->uri->segment(4);
$pijler = $this->uri->segment(5);
$actSet= $this->ModActiviteiten->get_partituur_activiteiten_per_pijler($partID, $pijler);
if ($actSet) {
// dus hieronder moeten alle partact worden vervangen door activiteit zelf!!
foreach ($actSet as $activiteit) {
$activiteit->actKosten = $this->ModKosten->get_kosten_per_activiteit($activiteit->id);
$activiteit->actDoelgroepen = $this->ModActDoel->get_doelgroepen_per_act($activiteit->id);
$activiteit->actHulpmiddelen = $this->Modhulpmiddelen->get_hulpmiddelenlijst_per_activiteit($activiteit->id);
};
};
echo json_encode($actSet);
}
function getPlanning (){
// $partituurID kan null zijn! id wordt meegegeven in de url . als de id 0 is moet de meest recente partituur opgehaald worden
$partID= $this->partituurid;
$where=array("partituur_actief" => 1, 'partituur_organisatie_id' =>$this->globorgid);
$partituur= $this->Partituurs_model->get_records_where($where,TRUE,FALSE);
$partID=$partituur->id;
$Npijlers=$this->ModPartPijlers->get_pijlers_per_partituur($partID);
foreach($Npijlers as $pijler){
$pijler->start=date('d-m-Y', strtotime($pijler->start));
$pijler->eind=date('d-m-Y', strtotime($pijler->eind));
$pijler->taakLijst = $this->Modpartactiviteiten->get_taaklijst($pijler->id);
if ($pijler->taakLijst ) {
foreach($pijler->taakLijst as $taak){
$taak->start=date('d-m-Y', strtotime($taak->start));
$taak->eind=date('d-m-Y', strtotime($taak->eind));
};
}; // if not empty
}
// lijst van medewerkers
if ($this->globisbg) { $medewerkers = $this->Users_model->get_users_by_bg($this->globorgid);}
else {$medewerkers = $this->Users_model->get_users_by_organisatie($this->globorgid); };
// als sprake is van BG moeten per school de medewerkers worden opgehaald
$fasen = $this->Modfases->get_fases();
echo json_encode(array('partituur' =>$partituur,
'taken' => $Npijlers,
'fasen' =>$fasen,
'medewerkers' => $medewerkers,
'canWrite' =>$this->writer,
'canWriteOnParent'=> true,
'selectedRow' =>1));
}
function getGantt($partID) {
// de datum wordt in miliseconden sinds 1970 verwacht
$pijlers = $this->ModPartPijlers->get_pijlers_per_partituur($partID);
$info=array();
foreach ($pijlers as $pijler){
array_push($info, $pijler);
$pijleracts =$this->Modpartactiviteiten->get_activiteiten_per_partituur($partID, $pijler->id);
if (! empty($pijleracts)) {
foreach ($pijleracts as $act){
array_push($info,$act);
};
}; // if
};
// zet alle data om in format dd-mm-yyyy
foreach($info as $entry){
$entry->start=date('d-m-Y', strtotime($entry->start));
$entry->end=date('d-m-Y', strtotime($entry->end));
}
return $info;
}// einde function getGanttInfo
function getTaakInfo(){
$taakid=$this->uri->segment(4);
$taak =$this->Modpartactiviteiten->get_taak_info($taakid);
$where=array('id' =>$taak->afhankelijkvanID);
$taak->afhankelijkvanNaam =$this->Modpartactiviteiten->get_fieldvalue($where,'naam');
//get de hulpmiddelen bij deze taak
$taak->hulpmiddelen=$this->ModPartActxHulpmiddel->get_hulpmiddelenlijst_per_activiteit($taakid, false);
// get een lijst van orgusers (inclusief fullname) waaruit de verantwoordelijke gekozen mag worden
$taak->orgusers = $this->Orgusers_model->get_org_users($this->globorgid);
$taak->uitvoerenden = $this->Modpartactiviteiten->get_uitvoerenden_per_activiteit($taakid);
$taak->overigeusers = $this->Modpartactiviteiten->get_overige_users_per_activiteit($taakid, $this->globorgid);
$taak->doelgroepen = $this->ModPartActxDoelgroep->get_doelgroepen_per_act($taakid);
$taak->kosten = $this->ModPartActKosten->get_kosten_per_activiteit($taakid);
//get de documenten/notes bij deze activiteit
$notes = $this->ModPortfolio->get_notes($taakid);
echo json_encode(array('taak'=>$taak, 'notes'=>$notes));
}
function DownloadNote (){
$this->load->helper('download');
$docid = $this->uri->segment(4);
$original='test';
$file = $this->ModPortfolio->get_record_by_id($docid);
$original = $file->docnaam;
$data = file_get_contents("../docs/".$file->hashnaam.$file->doc_extension);
force_download($original, $data);
}
function DeleteNote(){
$nID = $this->uri->segment(4);
$file = $this->ModPortfolio->get_record_by_id($nID);
if ($file) {
if ($file->hashnaam) {
$this->load->helper("file");
unlink('../docs/'.$file->hashnaam.$file->doc_extension);
};
};
$this->ModPortfolio->delete_record($nID);
}
function addTaak (){
//krijgt via submitData 4 vars binnen: partituurID, part-pijlerID, newTaakID, positie ('voor of na") en volgorde (dwz voor of na dit sequentienummer)
// moet volgorde van alle activiteiten (onder een pijler) zo aanpassen dat die weer klopt
// gegeven de nieuwe pijler.
// moet de hele partituur (zie get_gantt ) weer teruggeven
$actID = $this->clean_input('newTaakID');
$partID = $this->clean_input('partituurID');
$ppijlerID = $this->clean_input('pijlerID');
$activiteit = $this->ModActiviteiten->get_record_by_id($actID, FALSE, TRUE);
$partpijler = $this->ModPartPijlers->get_record_by_id($ppijlerID, FALSE,TRUE);
$seq = $this->input->post('selSeq');
if ($this->clean_input('positie') == 'na') {$seq = $seq + 1; }
else {$seq = $seq - 1;};
$data = array('sequence' => $seq,
'partituurID' => $partID,
'pijlerID' => $ppijlerID,
'activiteitID' => $actID,
'naam' => $activiteit->naam,
'omschrijving' => $activiteit->omschrijving,
'start' =>$partpijler->start,
'eind' =>$partpijler->eind,
'duur' => $activiteit->duur,
'niveau' =>$activiteit->inclusiviteitsniveau,
'fase' =>$activiteit->faseID,
'bronID' => $activiteit->bronID,
'email_dagen' =>$activiteit->email_dagen,
'email_naar_pl' => $activiteit->email_pleider,
'email_naar_vw' => $activiteit->email_verantwoordelijke);
$newID = $this->Modpartactiviteiten->insert_record($data);
// roep alle taken binnen de partpijler op en pas de sequentiewaarde aan
$partactiviteiten =$this->Modpartactiviteiten->get_id_lijst($partID,$ppijlerID);
if ($partactiviteiten){
$counter = 10;
foreach($partactiviteiten as $acti) {
$data=array("sequence" => $counter);
$counter = $counter + 10;
$this->Modpartactiviteiten->update_record($data, $acti->id);
}
};
// maak partactxkosten aan
$actKosten = $this->ModKosten->get_records_where(array('activiteitID' =>$activiteit->id) );
if ($actKosten){
foreach ($actKosten as $actKost){
$data=array('activiteitID' =>$newID,
'omschrijving' =>$actKost->omschrijving,
'kosten' => $actKost->kosten);
$this->ModPartActKosten->insert_record($data);
}
};
// maak partactxresultaten aan
$data =array('activiteitID' =>$newID,
'omschrijving' =>$activiteit->resultaatomschrijving);
$this->ModPartActResultaten->insert_record($data);
// maak partactxdoelgroep aan
$temDoelgroepen = $this->ModActDoel->get_records_where(array("activiteitID" => $activiteit->id));
if ($temDoelgroepen){
foreach($temDoelgroepen as $doelgroep){
$data= array('activiteitID' => $newID,
'doelgroepID' => $doelgroep->doelgroepID);
$this->ModPartActxDoelgroep->insert_record($data);
}
}
//maak partactxhulpmiddelen aan
$temHulpmiddelen = $this->ModActHulp->get_records_where(array("actID" => $activiteit->id));
if ($temHulpmiddelen){
foreach ($temHulpmiddelen as $temHulpmiddel){
$data=array('actID' =>$newID,
'hulpID' => $temHulpmiddel->hulpID);
$this->ModPartActxHulpmiddel->insert_record($data);
}
};
// get de nieuwe takenlijst en return deze
$Npijlers=$this->ModPartPijlers->get_pijlers_per_partituur($partID);
foreach($Npijlers as $pijler){
$pijler->start=date('d-m-Y', strtotime($pijler->start));
$pijler->eind=date('d-m-Y', strtotime($pijler->eind));
$pijler->taakLijst = $this->Modpartactiviteiten->get_taaklijst($pijler->id);
if ($pijler->taakLijst ) {
foreach($pijler->taakLijst as $taak){
$taak->start=date('d-m-Y', strtotime($taak->start));
$taak->eind=date('d-m-Y', strtotime($taak->eind));
};
}; // if not empty
}
echo json_encode( array('taken' =>$Npijlers));
}
function RemoveTaak(){
$partActID = $this->clean_input('partActID');
// delete partActKosten partActResultaten partActdoelgroep
// partactHulpmiddel partActOrgusers
$where = array('ActiviteitID' =>$partActID);
$this->ModPartActKosten -> delete_record_where($where) ;
$this->ModPartActResultaten ->delete_record_where($where) ;
$this->ModPartActxDoelgroep->delete_record_where($where);
$this->Modpartactxorgusers->delete_record_where($where);
$where = array('activiteitID' =>$partActID);
$this->ModAgenda->delete_record_where($where);
$where = array('actID ' =>$partActID);
$this->ModPartActxHulpmiddel->delete_record_where($where);
$this->Modpartactiviteiten->delete_record($partActID);
echo(true);
}
function AddHulpmiddel(){
$actID = $this->uri->segment(4);
$hulpID= $this->uri->segment(5);
$data = array('actID' => $actID,
'hulpID' =>$hulpID);
$newID = $this->ModPartActxHulpmiddel->insert_record($data);
$data = $this->ModPartActxHulpmiddel->get_hulpmiddelenlijst_per_activiteit($actID,$hulpID);
echo json_encode($data);
}
function RemoveHulpmiddel(){
$hID = $this->uri->segment(4);
$this->ModPartActxHulpmiddel->delete_record($hID);
}
function SaveTaak(){
$taakID = $this->clean_input("taakID");
$data=array(
"start" => date2mysql($this->clean_input("startdatum")),
"eind" => date2mysql($this->clean_input("einddatum")),
"duur" => $this->clean_input("duur"),
"afhankelijkvanID" => $this->clean_input("afhankelijkvan"),
"gereed " => $this->clean_input("gereed")
);
$this->Modpartactiviteiten->update_record($data,$taakID);
}
function SaveTaakData (){
$taakID = $this->input->post("id");
$data = array( "start" => date2mysql($this->clean_input("start")),
"eind" => date2mysql($this->clean_input("eind")),
"duur" => $this->clean_input("duur") );
$this->Modpartactiviteiten->update_record($data,$taakID);
}
function SavePerc(){
$data = array("gereed" =>$this->clean_input("gereed"));
$taakID = $this->clean_input("taakID");
$this->Modpartactiviteiten->update_record($data,$taakID);
}
function SavePijlerData() {
$pijlerID = $this->clean_input('id');
$data = array( "start" => date2mysql($this->clean_input("start")),
"eind" => date2mysql($this->clean_input("eind"))
);
$this->ModPartPijlers-> update_record($data,$pijlerID);
}
function SaveTaakDetails(){
$taakID = $this->clean_input("taakID");
$data=array("omschrijving" => textarea2html($this->clean_input("omschrijving")),
"opmerkingen" => textarea2html($this->clean_input("opmerkingen")),
"gereed" => $this->clean_input("gereed"),
"verantwoordelijke" => $this->clean_input("verantwoordelijke"),
"email_dagen" => $this->clean_input("email_dagen"),
"email_naar_pl" => $this->clean_input("email_naar_pl"),
"email_naar_vw" => $this->clean_input("email_naar_vw"),
"email_adres" => $this->clean_input("email_adres")
);
$this->Modpartactiviteiten->update_record($data,$taakID);
}
function RemoveDoelgroep(){
$dID = $this->uri->segment(4);
$this->ModPartActxDoelgroep->delete_record($dID);
}
function getDoelgroepen(){
//haal de doelgroepen op die nog niet in de activiteit zijn opgenomen
$actID = $this->uri->segment(4);
$result= $this->ModPartActxDoelgroep->get_other_doelgroepen($actID);
echo json_encode($result);
}
function AddDoelgroep(){
$dID = $this->uri->segment(4);
$actID = $this->uri->segment(5);
$data =array("activiteitID" => $actID,
"doelgroepID" =>$dID );
$newID = $this->ModPartActxDoelgroep->insert_record($data);
$newRecord = $this->ModPartActxDoelgroep->get_doelgroep($newID);
echo json_encode($newRecord);
}
function newKostenregel(){
$actID = $this->uri->segment(4);
$data = array("activiteitID" => $actID);
$newID = $this->ModPartActKosten->insert_record($data);
$newRecord = $this->ModPartActKosten->get_kosten_per_regel($newID);
echo json_encode($newRecord);
}
function SaveKosten(){
$kID = $this->clean_input("id");
$where=array("omschrijving" =>$this->clean_input("omschrijving"),
"kosten" =>bedrag2mysql($this->clean_input("kosten")) );
$this->ModPartActKosten->update_record($where,$kID);
}
function DeleteKost(){
$kID = $this->uri->segment(4);
$this->ModPartActKosten->delete_record($kID);
}
function SaveResultaten(){
$actID=$this->clean_input('id');
$where = array('activiteitID' =>$actID);
$data = array("resultaat"=>$this->clean_input('resultaat'));
$resID = $this->ModPartActResultaten->get_fieldvalue($where, 'id');
if ($resID) {
$this->ModPartActResultaten->update_record_where($data, $where);
}
else{
$data= array('activiteitID' =>$actID,
"resultaat"=>$this->clean_input('resultaat'));
$this->ModPartActResultaten->insert_record($data);
}
}
function saveSequentie(){
$seqlijst= $this->clean_input("seqlijst");
foreach ($seqlijst as $seq2){
$data=array("sequence" =>$seq2['seq']);
$this->Modpartactiviteiten->update_record($data, $seq2['id']);
}
}
function addUitvoerende(){
$actID = $this->uri->segment(4);
$orguserID = $this->uri->segment(5);
$data=array("activiteitID" => $actID,
"orguserID" => $orguserID);
$this->Modpartactxorgusers->insert_record($data);
}
function addVerantwoordelijke(){
$actID = $this->uri->segment(4);
$orguserID = $this->uri->segment(5);
$data = array("verantwoordelijke" => $orguserID);
$this->Modpartactiviteiten->update_record($data,$actID);
}
function removeUitvoerende(){
$actID = $this->uri->segment(4);
$orguserID = $this->uri->segment(5);
$data=array("activiteitID" => $actID,
"orguserID" => $orguserID);
$this->Modpartactxorgusers->delete_record_where($data);
}
function removeVerantwoordelijke(){
$actID = $this->uri->segment(4);
$data = array("verantwoordelijke"=>null);
$this->Modpartactiviteiten->update_record($data,$actID);
}
function MinMaxDag(){
$partactID = $this->uri->segment(4);
$partact = $this->Modpartactiviteiten->get_record_by_id($partactID);
$partpijler = $this->ModPartPijlers->get_record_by_id($partact->pijlerID) ;
$minStart = $partpijler->start;
$maxEind = $partpijler->eind;
if ($partact->duur) {$dagen = $partact->duur;}
else {$dagen = 1;};
$maxStart =DATE("Y-m-d", strtotime($maxEind.' - '.$dagen.' days ') );
$minEind = DATE("Y-m-d", strtotime($partpijler->start.' + '.$dagen.' days ') );
$agendaMinMax=$this->ModAgenda->find_minmax_dag($partpijler->id, $partact->id);
if (!empty($agendaMinMax )) {
if (isset($agendaMinMax[0]->mindag)){
if (DATE("Y-m-d", strtotime($agendaMinMax[0]->mindag)) < $maxStart &&
DATE("Y-m-d", strtotime($agendaMinMax[0]->mindag)) >= $minStart)
{$maxStart= DATE("Y-m-d", strtotime($agendaMinMax[0]->mindag)) ;};
};
if (isset($agendaMinMax[0]->maxdag)) {
if ( DATE("Y-m-d",Strtotime($agendaMinMax[0]->maxdag)) > $minEind &&
DATE("Y-m-d",Strtotime($agendaMinMax[0]->maxdag)) <= $maxEind)
{$minEind =DATE("Y-m-d",Strtotime($agendaMinMax[0]->maxdag));};
};
};
echo json_encode(array("minStart" =>$minStart,
"maxStart" =>$maxStart,
"minEind" => $minEind,
"maxEind" =>$maxEind));
}
function MinMaxDagVoorPijler(){
$pijlerID = $this->uri->segment(4);
$uitAct = $this->Modpartactiviteiten->get_minmax_activiteiten($pijlerID);
$partituur = $this->Partituurs_model->get_record_by_id($this->partituurid);
$minStart = $partituur->partituur_start;
$maxEind =$partituur->partituur_eind;
$maxStart = new DateTime($maxEind);
$maxStart->modify("-1 day");
$maxStart= $maxStart->format("Y-m-d");
$minEind = new DateTime($minStart) ; // was maxStart moet worden minStart + 1
$minEind->modify('+1 day');
$minEind = $minEind->format("Y-m-d");
if ($uitAct) {
if($uitAct->minStart) {$maxStart = $uitAct->minStart;};
if($uitAct->maxEind) {$minEind = $uitAct->maxEind;};
};
$agendaMinMax=$this->ModAgenda->find_minmax_dag($pijlerID);
if (!empty($agendaMinMax )) {
if (isset($agendaMinMax[0]->mindag)){
if (DATE("Y-m-d", strtotime($agendaMinMax[0]->mindag)) < $maxStart &&
DATE("Y-m-d", strtotime($agendaMinMax[0]->mindag)) >= $minStart)
{$maxStart= DATE("Y-m-d", strtotime($agendaMinMax[0]->mindag)) ;};
};
if (isset($agendaMinMax[0]->maxdag)) {
if ( DATE("Y-m-d",Strtotime($agendaMinMax[0]->maxdag)) > $minEind &&
DATE("Y-m-d",Strtotime($agendaMinMax[0]->maxdag)) <= $maxEind)
{$minEind =DATE("Y-m-d",Strtotime($agendaMinMax[0]->maxdag));};
};
};
echo json_encode(array("minStart" =>$minStart,
"maxStart" =>$maxStart,
"minEind" => $minEind,
"maxEind" =>$maxEind));
}
function LSUploadNote(){
$nID = $this->uri->segment(4);
$actID = $this->uri->segment(5);
$toonnaam = $this->clean_input('toonnaam');
$config['upload_path'] = '../tmp_uploads/';
$config['allowed_types'] = 'doc|docx|jpg|gif|png|pdf|txt';
$config['max_size'] = '10000';
$this->load->library('upload', $config);
$uploadresult = $this->upload->do_upload();
if (!$uploadresult && !$docid){
$result = array('errors'=>json_encode($this->upload->display_errors()));
}else{
if(!$uploadresult){
$result = array('errors'=>json_encode('<p>de gegevens zijn opgeslagen</p>'));
}else{
//check if there is already a file (docid!=0) unlink the old file
if($nID){
$file = $this->ModPortfolio->get_record_by_id($nID);
if ($file) {
if ($file->hashnaam) {
unlink('../docs/'.$file->hashnaam.$file->doc_extension);
}
}
}
$result = array('errors'=>json_encode('<p>uw bestand is succesvol geupload</p>'));
$document = $this->upload->data();
$this->load->helper('string');
$newname = sha1(random_string('alnum', 16));
$data = array( 'toonnaam' => $toonnaam,
'id' => $nID,
'partactID' => $actID,
'orgID' => $this->globorgid,
'docnaam' => $document['file_name']);
$data['doc_extension'] = $document['file_ext'];
$data['hashnaam'] = $newname;
$oldname = '../tmp_uploads/'.$document['file_name'];
$newname = '../docs/'.$newname.$document['file_ext'];
rename($oldname, $newname);
}
$nID =$this->ModPortfolio->save_record($data, $nID);
}
$data = array('result' =>$result, 'id'=>$nID );
$this->load->view('ijkpartituur/popups/ToonuploadNote', $data) ;
}
} // einde class Planning