getSpecifikaceKurz(); $str = ''; if(!empty($specifikace)){ $wheres = explode("|",$specifikace); $argSpec = array(); foreach($wheres as $spec): if(!empty($spec)) $argSpec[] = 'a.id = '.$spec; endforeach; $speci = Doctrine::getTable('Specifikace_kurzu') ->createQuery('a') ->andWhere(implode(" OR ",$argSpec)) ->orderBy("poradi ASC") ->execute(); foreach($speci as $spec): $str .= $spec->getHodnota()."
"; endforeach; } return $str; } public function getPracovnici(){ $str = array(); if(count($this->Pracovnik_kurz_list) > 0){ foreach($this->Pracovnik_kurz_list as $pracovnik){ $str[] = $pracovnik->Pracovnik->getPrijmeni()." ".substr($pracovnik->Pracovnik->getJmeno(),0,2)."."; } } return implode("
",$str); } public function getRozvrh(){ $str = array(); foreach($this->getAllRozvrh() as $rozvrh){ $str[] = ''.self::$den_v_tydnu[$rozvrh->den_v_tydnu]." ".substr($rozvrh->od,0,5)."-".substr($rozvrh->do,0,5).''; $str[] = $rozvrh->Mistnost; } return implode("
",$str); } public function getAllRozvrh(){ $kurz_rozvrh_list = Doctrine::getTable('Kurz_rozvrh') ->createQuery('a') ->select('*') ->addWhere('a.kurz_id='.$this->id) ->addOrderBy('a.den_v_tydnu') ->addOrderBy('a.od') ->execute(); return $kurz_rozvrh_list; } public function getLektor(){ return $this->getCurrentBeh()->Lektor->getLektorHtmlLongHref(); } public function getCurrentKurz($id){ $kurz = Doctrine::getTable('Kurz')->getCurrentKurz($id)->execute(); return $kurz[0]; } public function getFakturace(){ $id = $this->getId(); $beh = Doctrine::getTable('Kurz_beh')->getBehFromKurz($id)->execute(); $sumFakt = 0; $datum_start = $this->getDatum('start'); $datum_end = $this->getDatum('end'); if(isset($beh) && !empty($beh[0])){ $kurz_hodiny = Doctrine::getTable('Kurz_hodina')->getHodina($beh[0]->getId())->where('datum >="'.$datum_start.'"')->andWhere('datum<"'.$datum_end.'"')->andWhere("kurz_beh_id=".$beh[0]->getId())->execute(); foreach($kurz_hodiny as $kurz_hodina){ $pracovnici = Doctrine::getTable('Kurz_dochazka')->getAllDochazka($kurz_hodina->getId())->execute(); foreach($pracovnici as $pracovnik){ $sumFakt += $pracovnik->getCena(); } } } return $sumFakt; } public function getCurrentBeh($id = 0){ if (!$id) $id=$this->id; $beh = Doctrine::getTable('Kurz_beh')->getBehFromKurz($id)->execute(); return $beh[0]; } public function getBehKurzuId(){ $id = $this->getId(); $beh = Doctrine_Query::create() ->from('Kurz_beh u') ->where('u.kurz_id = '.$id) ->andWhere("u.beh_od <= '".date("Y-m-d")."'") ->andWhere("u.beh_do >= '".date("Y-m-d")."'") ->limit("1") ->execute(); if(count($beh)>0) return $beh[0]->getId(); return ""; } public function getDochazkaLastMount(){ $id = $this->getId(); //echo $id; $all = 0; $present = 0; $datum_start = $this->getDatum('start'); $datum_end = $this->getDatum('end'); $beh = Doctrine::getTable('Kurz_beh')->getBehFromKurz($id)->execute(); if(isset($beh) && !empty($beh[0])){ $kurz_hodiny = Doctrine::getTable('Kurz_hodina')->getHodina($beh[0]->getId())->where('datum >="'.$datum_start.'"')->andWhere('datum<"'.$datum_end.'"')->andWhere("kurz_beh_id=".$beh[0]->getId())->execute(); foreach($kurz_hodiny as $kurz_hodina){ $all += count(Doctrine::getTable('Kurz_dochazka')->getAllDochazka($kurz_hodina->getId())->execute()); $present += count(Doctrine::getTable('Kurz_dochazka')->getPresentPersons($kurz_hodina->getId())->execute()); } } $procent = 0; if($present != 0) $procent = ($present/$all)*100; return $present.' / '.$all."
".number_format($procent,0,"","")." %"; } public function getDochazka(){ $id = $this->getId(); //echo $id; $all = 0; $present = 0; $beh = Doctrine::getTable('Kurz_beh')->getBehFromKurz($id)->execute(); if(isset($beh) && !empty($beh[0])){ $kurz_hodiny = Doctrine::getTable('Kurz_hodina')->getHodina($beh[0]->getId())->andWhere("kurz_beh_id=".$beh[0]->getId())->execute(); foreach($kurz_hodiny as $kurz_hodina){ $all += count(Doctrine::getTable('Kurz_dochazka')->getAllDochazka($kurz_hodina->getId())->execute()); $present += count(Doctrine::getTable('Kurz_dochazka')->getPresentPersons($kurz_hodina->getId())->execute()); } } $procent = 0; if($present != 0) $procent = ($present/$all)*100; return $present.' / '.$all."
".number_format($procent,0,"","")." %"; } private function getDatum($type){ if($type == 'start'){ $date = date('m'); return date("Y-").($date-1)."-01"; } else { $date = date('m'); return date("Y-").($date)."-01"; } } public function archivate($level){ foreach($this->Kurz_beh_list as $kurz_beh){ $kurz_beh->archivate($level); } foreach($this->Pracovnik_kurz_list as $pracovnik_kurz){ $pracovnik_kurz->archivate($level); } $this->archive($level); } public function getSpokojenost(){ return "0 %"; } public function getOdDoToString(){ return $this->getDatumOd()." ".$this->getDatumDo(); } public function getEmails() { $emaily = array(); foreach ($this->Pracovnik_kurz_list as $pracovnik_kurz) { if ($pracovnik_kurz->Pracovnik->email<>'') { $email[] = $pracovnik_kurz->Pracovnik->email; } } return implode(', ', $email); } public function zauctujKDatu($date) { $beh = Doctrine::getTable('Kurz_beh')->getBehByDate($this->id,$date)->execute(); $beh = $beh[0]; $kurz_hodina = new Kurz_hodina(); $kurz_hodina->kurz_beh_id = $beh->id; $kurz_hodina->datum = $date; $kurz_hodina->zruseno = 'ne'; $kurz_hodina->tema = 'Automaticky zaúčtovaná hodina'; $kurz_hodina->save(); // pracovníci v kurzu $pocet_pracovniku = count ($this->Pracovnik_kurz_list); foreach ($this->Pracovnik_kurz_list as $pracovnik_kurz) { $pracovnik_doch = new Kurz_dochazka(); $pracovnik_doch->pracovnik_id = $pracovnik_kurz->Pracovnik->id; $pracovnik_doch->kurz_hodina_id = $kurz_hodina->id; $pracovnik_doch->cena = $beh->cenaNaHlavu($pocet_pracovniku); $pracovnik_doch->stav = 'A'; // vždy přítomen! - pro použití z automatického zaúčtování $pracovnik_doch->save(); $pracovnik_rozpocet = Doctrine::getTable('Pracovnik_rozpocet')->createQuery('u') ->where("u.pracovnik_id = ".$pracovnik_kurz->Pracovnik->id) ->andWhere("u.kurz_beh_id = ".$beh->id) ->execute(); $pracovnik_rozpocet = $pracovnik_rozpocet[0]; $pracovnik_rozpocet->pracovnik_id = $pracovnik_kurz->Pracovnik->id; $pracovnik_rozpocet->kurz_beh_id = $beh->id; $pracovnik_rozpocet->cerpano += $pracovnik_doch->cena; $pracovnik_rozpocet->save(); // TODO: // $this->getUser() v classe nefunguje - nahradit // $pracovnik_rozpocet->checkRozpocet($this->getUser()->getAttribute('agentura')); unset($pracovnik_doch); unset($pracovnik_rozpocet); } } public function oductujPosledniHodinu() { $hodiny = Doctrine::getTable('Kurz_hodina')->getHodinyKurzu($this->id)->limit(1)->execute(); $hodiny[0]->deleteUdrzba(); } public function __toString() { return $this->getNazev(); } /** * * @return boolean */ public function maStudenty() { return Doctrine::getTable('Pracovnik_kurz')->createQuery() ->addWhere('kurz_id = ?', $this->getId()) ->count() > 0; } public function fulldelete() { Doctrine::getTable('Kurz_beh')->setOption('ignore_archive', true); foreach($this->getKurz_beh_list() as $beh) { $beh->fullDelete(); } Doctrine::getTable('Pracovnik_kurz')->setOption('ignore_archive', true); foreach($this->getPracovnik_kurz_list() as $pk) { $pk->delete(); } foreach($this->getKurz_rozvrh_list() as $rozvrh) { $rozvrh->delete(); } $this->delete(); } public function getSeznamBehuPracovnika(Pracovnik $pracovnik, $from, $to) { return Doctrine::getTable('Kurz_beh')->createQuery('beh') ->innerJoin('beh.Kurz_hodina_list hodina') ->innerJoin('hodina.Dochazka_list dochazka') ->addWhere('dochazka.pracovnik_id = ?', $this->getId()) ->where('beh.kurz_id = '.$this->getId()) ->addWhere('(beh.beh_od >= ? AND beh.beh_do <= ?) OR (beh.beh_od <= ? AND beh.beh_do >= ?) OR (beh.beh_od <= ? AND beh.beh_do >= ?)', array($from, $to, $from, $from, $to, $to)) ->execute(); } /** * * @return Kurz_beh */ public function aktualniBeh() { $beh = Doctrine::getTable('Kurz_beh')->createQuery() ->where('kurz_id = '.$this->getId()) ->addWhere("beh_od <= NOW()") ->addWhere("beh_do >= NOW()") ->fetchOne(); if(!$beh) { $beh = Doctrine::getTable('Kurz_beh')->createQuery() ->where('kurz_id = '.$this->getId()) ->orderBy('beh_do DESC') ->fetchOne(); } return $beh; } /** * * @return boolean */ public function maBeh() { return Doctrine::getTable('Kurz_beh')->createQuery() ->where('kurz_id = '.$this->getId()) ->count() > 0; } public function hasPermission(Zakaznik $zakaznik) { return $this->getZakaznikId() == $zakaznik->getId(); } public function getAppendDirChoices($is_agentura = false) { $choices = array('' => ''); foreach($this->getRootDocuments($is_agentura) as $document) { if($document->isDir()) { $choices[$document->getId()] = $document->getName(); $choices = $choices + $document->getDirChoices('-', $is_agentura); } } return $choices; } public function getRootDocuments($is_agentura = false) { $query = Doctrine::getTable('Document')->createQuery() ->addWhere('zakaznik_id = ?', $this->getZakaznikId()) ->addWhere('((kurz_id = ? AND parent_id IS NULL) OR (kurz_id IS NOT NULL AND is_global = ?)) AND !(kurz_id = ? AND parent_id IS NOT NULL AND is_global = ?)', array($this->getId(), true, $this->getId(), true)) ->orderBy('is_global DESC'); if($is_agentura) { $query->addWhere('agentura_read = ?', true); } return $query->execute(); } /** * * @param boolean $active * @return Doctrine_Collection */ public function getBehy($active = null) { $query = Doctrine::getTable('Kurz_beh')->createQuery('b') ->addWhere('b.kurz_id = ?', $this->getId()); if(!is_null($active)) { if($active) { $query->addWhere("b.beh_od <= ?", date("Y-m-d")) ->addWhere("b.beh_do >= ?", date("Y-m-d")); } else { $query->addWhere("b.beh_od > ?", date("Y-m-d")) ->addWhere("b.beh_do < ?", date("Y-m-d")); } } return $query->execute(); } public function pracovnici() { return Doctrine::getTable('Pracovnik')->createQuery('p') ->innerJoin('p.Pracovnik_kurz_list pk') ->addWhere('pk.kurz_id = ?', $this->getId()) ->execute(); } public function vsichniPracovniciPodleDochazky() { return Doctrine::getTable('Pracovnik')->createQuery('p') ->innerJoin('p.Dochazka_list kd') ->innerJoin('kd.Kurz_hodina kh') ->innerJoin('kh.Kurz_beh kb') ->addWhere('kb.kurz_id = ?', $this->getId()) ->orderBy('p.prijmeni ASC, p.jmeno ASC') ->execute(); } public function getPracovniciIds() { $result = array(); foreach($this->pracovnici() as $pracovnik) { $result[] = $pracovnik->getId(); } return $result; } }