*/
class emailTask extends sfBaseTask
{
protected function configure()
{
$this->addOptions(array(
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'admin'),
new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel'),
));
$this->namespace = 'pomocnik';
$this->name = 'email';
$this->briefDescription = 'Generuje e-mailove pomocniky';
}
protected function execute($arguments = array(), $options = array())
{
$configHandler = new sfDatabaseConfigHandler();
$databases = $configHandler->evaluate(array($this->configuration->getRootDir().'/config/databases.yml'));
Doctrine::getTable('Pomocnici_personalisty')->setOption('ignore_archive', true);
$pomocnici = Doctrine::getTable('Pomocnici_personalisty')->createQuery()
->addWhere('email_trkniha_mesicne = ?', true)
->addWhere('email_trkniha_mesicne_ke_dni = ?', date('d'))
->execute();
foreach($pomocnici as $pomocnik)
{
$this->sendMonthyClassBook($pomocnik);
}
/* Whiski - pondělní emaily zatím neřešíme
if ((date('N') == 1) && (date('G') < 12)) {
$this->sendEmails();
}
$zakaznik = new Zakaznik();
$zakaznik->getEmailWarningRozpocet();
$pracovnik = new Pracovnik();
$this->warning = $pracovnik->getWarningIcon();
*/
}
/**
*
* @param Pomocnici_personalisty $pomocnik
*/
protected function sendMonthyClassBook(Pomocnici_personalisty $pomocnik)
{
if($pomocnik->getEmailTrknihaMesicne() && $pomocnik->getEmailTrknihaMesicneKeDni() == date('d'))
//if($pomocnik->getEmailTrknihaMesicne())
{
Doctrine::getTable('Pracovnik')->setOption('ignore_archive', true);
Doctrine::getTable('Kurz_dochazka')->setOption('ignore_archive', true);
$pracovnici = Doctrine::getTable('Pracovnik')->createQuery('pracovnik')
->innerJoin('pracovnik.Dochazka_list as dochazka')
->innerJoin('dochazka.Kurz_hodina as hodina')
->addWhere('pracovnik.zakaznik_id= ? ', $pomocnik->getZakaznikId())
->addWhere('hodina.datum < ?', date('Y-m-1'))
->addWhere('hodina.datum >= ?', date('Y-m-1', strtotime('-1 month')))
->execute();
$mail = array();
foreach($pracovnici as $pracovnik)
{
$mail['sendNow'] = true;
$mail['name'] = $pracovnik->getName();
$mail['email'] = $pracovnik->getEmail();
//$mail['email'] = 'vyskocil@klape.cz';
$mail['subject'] = 'Měsíční výpis třídní knihy';
$mail['html'] = $this->getHtmlContentForClassBookMail($pracovnik, $pomocnik);
if ($mail['html']<>'') // prázdný email neposíláme
$jnEmail = new jnEmailFront($mail);
$this->logSection('Pracovnik', $pracovnik->getName().', '.$mail['email']);
}
}
}
/**
*
* @param Pracovnik $pracovnik
* @param Pomocnici_personalisty $pomocnik
* @return string
*/
protected function getHtmlContentForClassBookMail(Pracovnik $pracovnik, Pomocnici_personalisty $pomocnik)
{
$barva = Kurz_dochazka::$bck_color;
// Pozor - běhy, které jsou v archivu, nevypisujeme (zatím - než se zákazník rozhodne)
//
// Doctrine::getTable('Kurz_beh')->setOption('ignore_archive', true);
Doctrine::getTable('Kurz')->setOption('ignore_archive', true);
$kurzy = Doctrine::getTable('Kurz')->createQuery('kurz')
->innerJoin('kurz.Kurz_beh_list as beh')
->innerJoin('beh.Kurz_hodina_list as hodina')
->innerJoin('hodina.Dochazka_list as dochazka')
->addWhere('kurz.report_trkniha = ?', true)
->addWhere('dochazka.pracovnik_id = ?', $pracovnik->getId())
->addWhere('hodina.datum < ?', date('Y-m-1'))
->addWhere('hodina.datum >= ?', date('Y-m-1', strtotime('-1 month')))
->execute();
$result = '';
if(count($kurzy)){ // tohle je tu kvůli případu, kdy pracovník chodí do kurzů, které mají kurz.report_trkniha=0 - pak vyjížděl prázdný email
$result = 'Dobrý den,
níže v tomto mailu naleznete výpis z třídní knihy Vašeho jazykového kurzu za minulý měsíc.
Tento e-mail budete dostávat každý následující měsíc po dobu trvání Vašeho kurzu.
Cílem těchto e-mailů je poskytnout Vám přehled o počtu absolvovaných hodin a o probrané látce.
Pokud se Vám tato forma předávání informací bude líbit, můžete požádat Vašeho lektora, aby do systému
zadával více specifických informací (je možné doplňovat informace o učebnici, kapitolách, straně, gramatice,
slovní zásobě, domácích úkolech i další, blíže nedefinované údaje).
Pokud v mailu nenaleznete žádné informace z třídní knihy znamená to, že buď v minulém měsíci žádná výuka neproběhla,
nebo že Váš lektor zatím docházku a třídní knihu nevyplnil.
Narazíte-li na technický problém – např. se zobrazováním informací apod. – pošlete nám prosím e-mail na adresu: podpora@jakobson.cz
Pokud naleznete nesrovnalosti ve vyplněných hodinách a docházkách, konzultujte prosím tyto údaje s Vaším lektorem, který tyto informace do systému zadává.
Děkujeme a přejeme hodně úspěchu ve Vašem vzdělávání
Tým agentury Jakobson
';
foreach($kurzy as $kurz)
{
$this->logSection('Kurz', $kurz->getNazev());
$result .= '
| Čas a místo konání: | '; $result .= ''.$this->getHtmlSchedule($kurz).' | '; $result .= '
|---|---|
| Téma, pokročilost: | '; $result .= ''.$beh->getTema().', '.$beh->getPokrocilost().' | '; $result .= '
| Oddělení, lokalita: | '; $result .= ''.$kurz->getOddeleni().', '.$kurz->getLokalita().' | '; $result .= '
| Běh: | '; $result .= ''.date('d.m.Y', strtotime($beh->getBehOd())).' - '.date('d.m.Y', strtotime($beh->getBehDo())); $result .= ', '.$beh->getFjTydne().'x týdně, '.$beh->getFjHodnota().' '.$beh->getFjMeritko().' | '; $result .= '
| Agentura: | '; $result .= ''.$beh->getAgentura()->getNazev().' | '; $result .= '
| Lektor: | '; $result .= ''.$lektor->getJmeno().' '.$lektor->getPrijmeni().', '.$lektor->getEmail().', '.$lektor->getTelefon(); $result .= ' |
| Datum | '; $result .= 'Téma | '; $result .= 'Učebnice | '; $result .= 'Kapitola | '; $result .= 'Strana | '; $result .= 'Gramatika | '; $result .= 'Slovní zásoba | '; $result .= 'Poznámka | '; $result .= 'Vaše docházka *) | '; $result .= '
|---|---|---|---|---|---|---|---|---|
| '.date('d.m.Y', strtotime($hodina->getDatum())).' | '; $result .= ''.$hodina->getTema().' | '; $result .= ''.$hodina->getUcebnice().' | '; $result .= ''.$hodina->getKapitola().' | '; $result .= ''.$hodina->getStrana().' | '; $result .= ''.$hodina->getGramatika().' | '; $result .= ''.$hodina->getSlovniZasoba().' | '; $result .= ''.$hodina->getPoznamka().' | '; $result .= ''.(($dochazka) ? $dochazka->getStav() : 'Nevyplněno').' | '; $result .= '
*) A - přítomen , N - nepřítomen , ZA - zrušila agentura , ZP - zrušeno pozdě , ZV - student zrušil včas
'; } else { // nejsou žádné hodiny v měsíci $result .= 'V třídní knize nejsou za předchozí měsíc žádné informace. V minulém měsíci buď žádná výuka neproběhla, nebo Váš lektor zatím docházku a třídní knihu nevyplnil.
'; } $result .= '