public function lijst($parameters)
 {
     $starget = new securitytarget();
     $starget->setId('voorinschrijving_lijst');
     if (!myacl::isAllowed(myauth::getCurrentuser(), $starget, 'view')) {
         return;
     }
     $template = new ui($this);
     $uurModel = new uurModel();
     $ingeschrevenModel = new ingeschrevenModel();
     $trajectModel = new trajectModel();
     $userModel = new userModel();
     $form = new form($parameters);
     $select = new selectField('wat', '', '');
     $select->addOption(new selectoptionField('Alles', '9990'));
     $daggroup = new selectoptgroupField('Dagen');
     $daggroup->addOption(new selectoptionField('Zaterdag', '6661'));
     $daggroup->addOption(new selectoptionField('Zondag', '4442'));
     $select->addOptgroup($daggroup);
     $trajecten = $trajectModel->get();
     $trajectgroup = new selectoptgroupField('Trajecten');
     foreach ($trajecten as $tr) {
         $trajectgroup->addOption(new selectoptionField($tr->getName(), 888 . $tr->getId()));
     }
     $select->addOptgroup($trajectgroup);
     $typegroup = new selectoptgroupField('Type');
     $typegroup->addOption(new selectoptionField('Personeel', '1114'));
     $typegroup->addOption(new selectoptionField('VIP', '1115'));
     $select->addOptgroup($typegroup);
     $uren = $uurModel->get();
     $uurgroup = new selectoptgroupField('Uren - Zaterdag');
     $uurgroup2 = new selectoptgroupField('Uren - Zondag');
     foreach ($uren as $uur) {
         if ($uur->getDag() == 1) {
             $uurgroup->addOption(new selectoptionField($uur->getUur(), 777 . $uur->getId()));
         } else {
             $uurgroup2->addOption(new selectoptionField($uur->getUur(), 555 . $uur->getId()));
         }
     }
     $select->addOptgroup($uurgroup);
     $select->addOptgroup($uurgroup2);
     $form->addField($select);
     $template->assign('form', $form);
     $terug = new pagerequest(1);
     $template->assign('terug', $terug);
     if (!$form->isSent()) {
         $wat = 9990;
     } else {
         $wat = $form->getFieldvalue('wat');
     }
     $mode = substr($wat, 0, 3);
     $modevalue = substr($wat, 3);
     if ($mode == 999 || $mode == 888) {
         $dag = 0;
     } elseif ($mode == 777 || $mode == 666) {
         $dag = 1;
     } elseif ($mode == 555 || $mode == 444) {
         $dag = 2;
     }
     if ($dag == 0) {
         $lijst[0]['dag'] = 'Zaterdag';
         $lijst[1]['dag'] = 'Zondag';
     } elseif ($dag == 1) {
         $lijst[0]['dag'] = 'Zaterdag';
     } elseif ($dag == 2) {
         $lijst[1]['dag'] = 'Zondag';
     }
     foreach ($lijst as $dag => $lijstelement) {
         $dag++;
         if ($mode == 888) {
             $uurCond = array('AND' => array('dag' => array('mode' => '=', 'value' => $dag), 'trajectid' => array('mode' => '=', 'value' => $modevalue)));
         } elseif ($mode == 777 || $mode == 555) {
             $uurCond = array('AND' => array('id' => array('mode' => '=', 'value' => $modevalue)));
         } else {
             $uurCond = array('AND' => array('dag' => array('mode' => '=', 'value' => $dag)));
         }
         $uren = $uurModel->get($uurCond);
         foreach ($uren as $uur) {
             $tempuur = array();
             $tempuur['uur'] = $uur;
             $gasten = $ingeschrevenModel->getfromUurid($uur->getId());
             $tempuur['aantal'] = 0;
             foreach ($gasten as $gast) {
                 $tempgast = array();
                 $tempgast['gast'] = $gast;
                 if ($mode == 111) {
                     if ($gast->getUserid() != $modevalue) {
                         continue;
                     }
                 }
                 if ($gast->getRegistrationtime() > time() - 60 * 60 * 24) {
                     $tempgast['new'] = 'true';
                 } else {
                     $tempgast['new'] = 'false';
                 }
                 $sameip = $ingeschrevenModel->getfromIpaddress($gast->getIpaddress());
                 if (count($sameip) > 1) {
                     $tempgast['sameip']['aantal'] = count($sameip);
                     $tempgast['sameip']['wie'] = $sameip;
                     $showrequest = new ajaxrequest('myvoorinschrijving', 'showsameip', array('id' => $gast->getId()));
                     $hiderequest = new ajaxrequest('myvoorinschrijving', 'hidesameip', array('id' => $gast->getId()));
                     $tempgast['sameip']['showrequest'] = $showrequest;
                     $tempgast['sameip']['hiderequest'] = $hiderequest;
                 } else {
                     $tempgast['sameip'] = 0;
                 }
                 $showmorerequest = new ajaxrequest('myvoorinschrijving', 'showmore', array('id' => $gast->getId()));
                 $hidemorerequest = new ajaxrequest('myvoorinschrijving', 'hidemore', array('id' => $gast->getId()));
                 $tempgast['showmorerequest'] = $showmorerequest;
                 $tempgast['hidemorerequest'] = $hidemorerequest;
                 $deleterequest = new ajaxrequest('myvoorinschrijving', 'deletegast', array('gastid' => $gast->getId()));
                 $tempgast['deleterequest'] = $deleterequest;
                 $user = $userModel->getfromId($gast->getUserid());
                 $tempgast['user'] = $user[0];
                 $tempuur['aantal'] += $gast->getAantal();
                 $tempuur['gasten'][] = $tempgast;
             }
             if (count($tempuur['gasten']) > 0) {
                 if (!isset($lijst[$dag - 1]['trajecten'][$uur->getTrajectid()]['traject'])) {
                     $traject = $trajectModel->getfromId($uur->getTrajectid());
                     $lijst[$dag - 1]['trajecten'][$uur->getTrajectid()]['traject'] = $traject[0];
                 }
                 $lijst[$dag - 1]['trajecten'][$uur->getTrajectid()]['uren'][] = $tempuur;
             }
         }
     }
     foreach ($lijst as $id => $dag) {
         if (count($dag['trajecten']) == 0) {
             unset($lijst[$id]);
         }
     }
     $template->assign('lijst', $lijst);
     $this->response->assign($this->self, 'innerHTML', $template->fetch('myvoorinschrijving_lijst.tpl'));
 }
 public function adddoktervanwacht($parameters = array())
 {
     $view = new ui($this);
     if ($parameters['history'] != 'history') {
         $this->response->addWaypoint('mydoktervanwacht', 'adddoktervanwacht', 'adddoktervanwacht', array('specid' => $parameters['specid'], 'startofmonth' => $parameters['startofmonth'], 'endofmonth' => $parameters['endofmonth']));
     }
     $form = new form($parameters);
     $form->addField(new hiddenField('specid', $parameters['specid']));
     $select = new selectField('dokter', 'Dokter');
     $wdokterModel = new wdokterModel();
     $specmodel = new wdokterspecialismeModel();
     $maindocs = $wdokterModel->getfromSpecialisme($parameters['specid']);
     $mainspec = $specmodel->getfromId($parameters['specid']);
     $mainoptgroup = new selectoptgroupField($mainspec[0]->getName());
     foreach ($maindocs as $maindok) {
         $mainoptgroup->addOption(new selectoptionField('Dr. ' . $maindok->getNaam() . ' ' . $maindok->getVoornaam(), $maindok->getId()));
     }
     $select->addOptgroup($mainoptgroup);
     $specs = $specmodel->get(array(), array('fields' => array('name'), 'type' => 'ASC'));
     foreach ($specs as $spec) {
         if ($spec->getId() != $parameters['specid']) {
             $tmp = new selectoptgroupField($spec->getName());
             $tmpdocs = $wdokterModel->getfromSpecialisme($spec->getId());
             foreach ($tmpdocs as $tmpdok) {
                 $tmp->addOption(new selectoptionField('Dr. ' . $tmpdok->getNaam() . ' ' . $tmpdok->getVoornaam(), $tmpdok->getId()));
             }
             $select->addOptgroup($tmp);
         }
     }
     $form->addField($select);
     $form->addField(new datepickerField('start', 'Start', true, mktime(0, 0, 0, date('m', $parameters['start']), date('d', $parameters['start']), date('Y', $parameters['start'])), array('required')));
     $form->addField(new datepickerField('stop', 'Stop', true, mktime(23, 59, 0, date('m', $parameters['start']), date('d', $parameters['start']), date('Y', $parameters['start'])), array('required')));
     $startofmonth = isset($parameters['startofmonth']) ? $parameters['startofmonth'] : mktime(00, 00, 00, date('m'), 01, date('Y'));
     $endofmonth = isset($parameters['endofmonth']) ? $parameters['endofmonth'] : mktime(00, 00, 00, date('m') + 1, 01, date('Y')) - 1;
     for ($i = $startofmonth; $i < $endofmonth; $i += 86400) {
         $boxes[$i]['name'] = date('d/m/Y', $i);
         $boxes[$i]['selected'] = false;
     }
     $form->addField(new checkboxgroupField('day', 'Dag', $boxes));
     $form->addField(new hiddenField('startofmonth', $startofmonth));
     $form->addField(new hiddenField('endofmonth', $endofmonth));
     if ($form->validate()) {
         if ($form->getFieldvalue('start') < $form->getFieldvalue('stop')) {
             $wachtdokterModel = new wachtdokterModel();
             $start = $form->getFieldvalue('start');
             $stop = $form->getFieldvalue('stop');
             // Overlap
             //contained
             $contained = array('AND' => array(array('start' => array('mode' => '<', 'value' => $start)), array('stop' => array('mode' => '>', 'value' => $stop))));
             //stop after start
             $stopstart = array('AND' => array(array('start' => array('mode' => '<', 'value' => $start)), array('stop' => array('mode' => '>', 'value' => $start))));
             //start before stop
             $startstop = array('AND' => array(array('start' => array('mode' => '<', 'value' => $stop)), array('stop' => array('mode' => '>', 'value' => $stop))));
             $big = array('AND' => array(array('start' => array('mode' => '>', 'value' => $start)), array('stop' => array('mode' => '<', 'value' => $stop))));
             $timecond = array('OR' => array($contained, $startstop, $stopstart, $big));
             $speccond = array('specialisme' => array('mode' => '=', 'value' => $parameters['specid']));
             $cond = array('AND' => array($speccond, $timecond));
             $test = $wachtdokterModel->get($cond);
             if (count($test) > 0) {
                 $this->response->assign('formerror_' . $form->getId(), 'innerHTML', 'Er mogen geen overlappingen zijn.', true);
                 $overlap = true;
             } else {
                 $wachtdokter = new wachtdokterObject();
                 $wachtdokter->setDokter($form->getFieldvalue('dokter'));
                 $wachtdokter->setStart($form->getFieldvalue('start'));
                 $wachtdokter->setStop($form->getFieldvalue('stop'));
                 $wachtdokter->setSpecialisme($form->getFieldvalue('specid'));
                 try {
                     $wachtdokterModel->save($wachtdokter);
                 } catch (Exception $e) {
                     $flash = new popupController();
                     $flash->createflash(array('name' => 'erroredit', 'type' => 'error', 'content' => 'De gegevens werden niet aangepast! Raadpleeg de informaticadienst.'));
                 }
                 $flash = new popupController();
                 $flash->createflash(array('name' => 'flash_edit_' . $parameters['-gridid-'], 'type' => 'success', 'content' => 'De gegevens zijn goed aangepast.'));
                 $this->showspecdetails($parameters);
             }
         } else {
             $this->response->assign('formerror_' . $form->getId(), 'innerHTML', 'Einduur moet na het beginuur liggen.', true);
         }
     } elseif (!$form->isSent()) {
         $view->assign('form', $form);
         $output = array();
         $closerequest = new ajaxrequest('mydoktervanwacht', 'showspecdetails', array('specid' => $parameters['specid'], 'startofmonth' => $parameters['startofmonth'], 'endofmonth' => $parameters['endofmonth']));
         $view->assign('closerequest', $closerequest);
         $wachtdokterModel = new wachtdokterviewModel();
         $speccond = array('specialisme' => array('mode' => '=', 'value' => $parameters['specid']));
         for ($i = $startofmonth; $i < $endofmonth; $i += 86400) {
             $start = array('start' => array('mode' => 'BETWEEN', 'value' => $i + 1, 'topvalue' => $i + 86400 - 1));
             $stop = array('stop' => array('mode' => 'BETWEEN', 'value' => $i, 'topvalue' => $i + 86400 - 1));
             $cond = array('OR' => array($start, $stop));
             $dokters = $wachtdokterModel->get(array('AND' => array($speccond, $cond)));
             $tmp = array();
             $tmp['dokters'] = $dokters;
             $tmp['start'] = $i;
             $output[] = $tmp;
         }
         $view->assign('list', $output);
         $view->assign('specialisme', $mainspec[0]);
         $this->response->assign($this->self, 'innerHTML', $view->fetch('mydoktervanwacht_edit.tpl'));
     } else {
         return false;
     }
 }