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;
}
}