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;
}
/**
*
* @param Pracovnik $pracovnik
* @return Dotaznik_pracovnik
*/
public function getPracovnikRelation(Pracovnik $pracovnik)
{
return Doctrine::getTable('Dotaznik_pracovnik')->createQuery()
->addWhere('dotaznik_id = ?', $this->getId())
->addWhere('pracovnik_id = ?', $pracovnik->getId())
->fetchOne();
}
/**
* 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);
$rel = $this->getPracovnikRelation($pracovnik);
$rel->setCodeSendDate(date('Y-m-d H:i:s'));
$rel->save();
}
}
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 .= $this->getEmailText();
if(strpos($result, '[kod]') === false)
{
$result .= '
';
$result .= 'Váš vygenerovaný kód pro přístup k dotazníku: [kod]';
}
$result = str_replace("[kod]", $this->getKod(), $result);
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);
}
public function getKodWithStatus()
{
$result = $this->getKod();
$result .= '
';
$odeslano = 0;
$pracovniku = 0;
foreach ($this->getPracovnici() as $pracovnik)
{
$rel = $this->getPracovnikRelation($pracovnik);
if(!is_null($rel->getCodeSendDate()))
{
$odeslano++;
}
$pracovniku++;
}
if($odeslano == $pracovniku && $odeslano > 0)
{
$result .= 'Odeslán všem pracovníkům';
}
elseif($odeslano > 0)
{
$result .= 'Odeslán '.$odeslano.' z '.$pracovniku.' pracovníkům';
}
else
{
$result .= 'Neodeslán';
}
return $result;
}
}