createQuery("a") ->where("a.dotaznik_id = " . $this->getId())->execute(); $g = Doctrine::getTable('Dotaznik_pracovnik')->createQuery("a") ->where("a.dotaznik_id = " . $this->getId())->andWhere('a.dokonceno = 1')->execute(); return count($g) . " z " . count($x); } public function getVysledek() { if ($this->typ == "vahove") { $min = 0; $max = 0; $sum = 0; foreach ($this->Dotaznik_otazka_list as $otazka) { $meziMax = 0; $meziMin = 0; foreach ($otazka->Dotaznik_otazka_odpoved_list as $odpoved) { if ($odpoved->body > $meziMax) $meziMax = $odpoved->body; if ($odpoved->body < $meziMin) $meziMin = $odpoved->body; } $max +=$meziMax; $min +=$meziMin; $p = Doctrine::getTable('Dotaznik_pracovnik_odpoved')->createQuery("a") ->where('a.dotaznik_otazka_id = ' . $otazka->getId())->execute(); foreach ($p as $k) $sum +=$k->body; } if ($sum == 0 || $max == 0) { $count = 0; } else { $count = (($sum - $min) / ($max - $min) * 100) / count($this->Dotaznik_pracovnik_list); } return number_format($count, 0, "", " ") . " %"; } else { $x = 0; foreach ($this->Dotaznik_otazka_list as $otazka) $x += count($otazka->Dotaznik_pracovnik_odpoved_list); if ($x == 0 || count($this->Dotaznik_otazka_list) == 0) return "0 %"; return number_format($x / count($this->Dotaznik_otazka_list), 0, "", " ") . " %"; } } public function getVysledekByPracovnik($pracovnik) { if ($this->isDokonceno($pracovnik) == 1) { if ($this->typ == "vahove") { $min = 0; $max = 0; $sum = 0; foreach ($this->Dotaznik_otazka_list as $otazka) { $meziMax = 0; $meziMin = 0; foreach ($otazka->Dotaznik_otazka_odpoved_list as $odpoved) { if ($odpoved->body > $meziMax) $meziMax = $odpoved->body; if ($odpoved->body < $meziMin) $meziMin = $odpoved->body; } $max +=$meziMax; $min +=$meziMin; $p = Doctrine::getTable('Dotaznik_pracovnik_odpoved')->createQuery("a") ->where('a.dotaznik_otazka_id = ' . $otazka->getId()) ->andWhere("a.pracovnik_id = " . $pracovnik->getId())->execute(); foreach ($p as $k) $sum +=$k->body; } if ($sum == 0 || $max == 0) { $count = 0; } else { $count = ($sum - $min) / ($max - $min) * 100; } return number_format($count, 0, "", " ") . " %"; } else { $x = count($this->Dotaznik_otazka_list); $p = Doctrine::getTable('Dotaznik_pracovnik_odpoved')->createQuery("a")->where("a.pracovnik_id = " . $pracovnik->getId()) ->andWhere("a.dotaznik_id = " . $this->getId())->execute(); if ($x == 0 || count($p) == 0) return "0 %"; return number_format($x / count($p), 0, "", " ") . " %"; } } } public function isDokoncenoStr($pracovnik) { $d = Doctrine::getTable('dotaznik_pracovnik')->createQuery("a")->where("a.dotaznik_id = " . $this->getId()) ->andWhere("a.pracovnik_id = " . $pracovnik->getId())->execute(); if ($d[0]->dokonceno == 1) return "dokočeno"; else return "nespuštěno"; } public function isDokonceno($pracovnik) { $d = Doctrine::getTable('dotaznik_pracovnik')->createQuery("a")->where("a.dotaznik_id = " . $this->getId()) ->andWhere("a.pracovnik_id = " . $pracovnik->getId())->execute(); return $d[0]->dokonceno; } public function getStavByKurz($kurz) { $x = Doctrine::getTable('Dotaznik_pracovnik')->createQuery("a") ->where("a.dotaznik_id = " . $this->getId()) ->andWhere("a.kurz_id = " . $kurz)->execute(); $g = Doctrine::getTable('Dotaznik_pracovnik')->createQuery("a") ->where("a.dotaznik_id = " . $this->getId())->andWhere('a.dokonceno = 1') ->andWhere("a.kurz_id = " . $kurz)->execute(); return count($g) . " z " . count($x); } public function getVysledekByKurz($kurz) { if ($this->typ == "vahove") { $min = 0; $max = 0; $sum = 0; foreach ($this->Dotaznik_otazka_list as $otazka) { $meziMax = 0; $meziMin = 0; foreach ($otazka->Dotaznik_otazka_odpoved_list as $odpoved) { if ($odpoved->body > $meziMax) $meziMax = $odpoved->body; if ($odpoved->body < $meziMin) $meziMin = $odpoved->body; } $max +=$meziMax; $min +=$meziMin; $p = Doctrine::getTable('Dotaznik_pracovnik')->createQuery("a") ->where('a.dotaznik_id = ' . $this->getId()) ->andWhere("a.kurz_id = " . $kurz->getId())->execute(); foreach ($p as $k) { $s = Doctrine::getTable('Dotaznik_pracovnik_odpoved')->createQuery("a") ->where('a.dotaznik_otazka_id = ' . $otazka->getId()) ->andWhere("a.pracovnik_id = " . $k->getPracovnikId())->execute(); foreach ($s as $a) $sum +=$a->body; } } if ($sum == 0 || $max == 0) { $count = 0; } else { $count = (($sum - $min) / ($max - $min) * 100) / count($p); } return number_format($count, 0, "", " ") . " %"; } else { $x = count($this->Dotaznik_otazka_list); $sum = 0; $p = Doctrine::getTable('Dotaznik_pracovnik')->createQuery("a") ->where('a.dotaznik_id = ' . $this->getId()) ->andWhere("a.kurz_id = " . $kurz->getId())->execute(); foreach ($p as $k) { $s = Doctrine::getTable('Dotaznik_pracovnik_odpoved')->createQuery("a") ->where('a.dotaznik_otazka_id = ' . $otazka->getId()) ->andWhere("a.pracovnik_id = " . $k->getId())->execute(); $sum +=count($s); } if ($x == 0 || $sum == 0) return "0 %"; return number_format($sum / $x, 0, "", " ") . " %"; } } public function fullDelete() { foreach ($this->getDotaznik_pracovnik_list() as $dp) { $dp->delete(); } foreach ($this->getDotaznik_otazka_list() as $otazka) { $otazka->fullDelete(); } $this->delete(); } /** * Zjistí jestli je Kurz připojený kdotazzníku * * @param Kurz $kurz * @return boolean */ public function jePripojenyKurz(Kurz $kurz) { return Doctrine::getTable('DotaznikKurz')->createQuery() ->addWhere('dotaznik_id = ?', $this->getId()) ->addWhere('kurz_id = ?', $kurz->getId()) ->count() > 0; } /** * Připojí kurz k dotazníku * * @param Kurz $kurz */ public function pripojitKurz(Kurz $kurz) { if (!$this->jePripojenyKurz($kurz)) { $dk = new DotaznikKurz(); $dk->setDotaznikId($this->getId()); $dk->setKurzId($kurz->getId()); $dk->save(); } } /** * Odebere kurz * * @param Kurz $kurz */ public function odpojitKurz(Kurz $kurz) { $dk = Doctrine::getTable('DotaznikKurz')->createQuery() ->addWhere('dotaznik_id = ?', $this->getId()) ->addWhere('kurz_id = ?', $kurz->getId()) ->fetchOne(); if ($dk) { $dk->delete(); } } /** * Zjistí jestli je k dotazníku připojený pracovník * * @param Pracovnik $pracovnik * @return boolean */ public function jePripojenyPracovnik(Pracovnik $pracovnik) { return Doctrine::getTable('Dotaznik_pracovnik')->createQuery() ->addWhere('dotaznik_id = ?', $this->getId()) ->addWhere('pracovnik_id = ?', $pracovnik->getId()) ->count() > 0; } /** * Připojí k dotazníku pracovníka * * @param Pracovnik $pracovnik */ public function pripojitPracovnika(Pracovnik $pracovnik) { if (!$this->jePripojenyPracovnik($pracovnik)) { $dp = new Dotaznik_pracovnik(); $dp->setDotaznikId($this->getId()); $dp->setPracovnikId($pracovnik->getId()); $dp->save(); } } /** * Odebere pracovnika * * @param Pracovnik $pracovnik */ public function odpojitPracovnika(Pracovnik $pracovnik) { $dp = Doctrine::getTable('Dotaznik_pracovnik')->createQuery() ->addWhere('dotaznik_id = ?', $this->getId()) ->addWhere('pracovnik_id = ?', $pracovnik->getId()) ->fetchOne(); if ($dp) { $dp->delete(); } } public function sendCodes() { foreach ($this->getPracovnici() as $pracovnik) { $this->sendCode($pracovnik); } } public function sendCode(Pracovnik $pracovnik) { $i18n = sfContext::getInstance()->getI18N(); $mail = array(); $mail['sendNow'] = true; $mail['name'] = $pracovnik->getName(); $mail['email'] = $pracovnik->getEmail(); //$mail['email'] = 'tomas@naibrt.cz'; $mail['subject'] = $i18n->__('Byl Vám přidělen dotazník %nazev%', array ('%nazev%' => $this->getNazev())); $mail['html'] = $this->getCodeMailBody(); $jnEmail = new jnEmailFront($mail); } public function getCodeMailBody() { $result = $this->getEmailHlavicka(); $result .= '

'; $result .= str_replace("[kod]", $this->getKod(), $this->getEmailText()); return $result; } public function sendConfirmation(Pracovnik $pracovnik) { $i18n = sfContext::getInstance()->getI18N(); $mail = array(); $mail['sendNow'] = true; $mail['name'] = $pracovnik->getName(); $mail['email'] = $dotaznik->Personalista->getEmail(); //$mail['email'] = 'tomas@naibrt.cz'; $mail['subject'] = $i18n->__('Dokončení dotazníku %nazev%', array ('%nazev%' => $this->getNazev())); $mail['html'] = "Dne ".date("d.m Y").", pracovník ".$pracovnik->getName()." dokončil dotazník ".$dotaznik->getNazev(); $jnEmail = new jnEmailFront($mail); } }