*/ 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) { if(strlen($pracovnik->getEmail()) > 0) { $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']); } else { $this->logSection('CHYBA', 'Pracovnik '.$pracovnik->getName().' má prázdný 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 .= '

Kurz: '.$kurz->getNazev().'

'; $behy = Doctrine::getTable('Kurz_beh')->createQuery() ->addWhere('kurz_id = ?', $kurz->getId()) ->addWhere('beh_do >= ?', date('Y-m-1', strtotime('-1 month'))) ->addWhere('beh_od <= ?', date('Y-m-1', strtotime('-1 day'))) ->execute(); foreach($behy as $beh) { $result .= ''; $this->logSection('Beh', $beh->getBehOd().' -> '.$beh->getBehDo()); $lektor = $beh->getLektor(); $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= ''; $result .= '
Čas a místo konání:'.$this->getHtmlSchedule($kurz).'
Téma, pokročilost:'.$beh->getTema().', '.$beh->getPokrocilost().'
Oddělení, lokalita: '.$kurz->getOddeleni().', '.$kurz->getLokalita().'
Běh: '.date('d.m.Y', strtotime($beh->getBehOd())).' - '.date('d.m.Y', strtotime($beh->getBehDo())); $result .= ', '.$beh->getFjTydne().'x týdně, '.$beh->getFjHodnota().' '.$beh->getFjMeritko().'
Agentura: '.$beh->getAgentura()->getNazev().'
Lektor: '.$lektor->getJmeno().' '.$lektor->getPrijmeni().', '.$lektor->getEmail().', '.$lektor->getTelefon(); $result .= '
'; $hodiny = Doctrine::getTable('Kurz_hodina')->createQuery('hodina') ->innerJoin('hodina.Dochazka_list as dochazka') ->addWhere('dochazka.pracovnik_id = ?', $pracovnik->getId()) ->addWhere('hodina.kurz_beh_id = ?', $beh->getId()) ->addWhere('hodina.datum < ?', date('Y-m-1')) ->addWhere('hodina.datum >= ?', date('Y-m-1', strtotime('-1 month'))) ->execute(); $result .= '
'; if (count($hodiny)) { $result .= ''; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; foreach($hodiny as $hodina) { $this->logSection('Hodina', $hodina->getDatum()); $dochazka = $hodina->getDochazkaByPracovnik($pracovnik); $barva_radku = $barva[$dochazka->getStav()]; $result .= ''; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ' '; $result .= ''; } $result .= '
DatumTémaUčebniceKapitolaStranaGramatikaSlovní zásobaPoznámkaVaše docházka *)
'.date('d.m.Y', strtotime($hodina->getDatum())).''.$hodina->getTema().''.$hodina->getUcebnice().''.$hodina->getKapitola().''.$hodina->getStrana().''.$hodina->getGramatika().''.$hodina->getSlovniZasoba().''.$hodina->getPoznamka().''.(($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 .= '
'; $result .= '
'; } } } return $result; } protected function getHtmlSchedule(Kurz $kurz) { return $kurz->getRozvrh(); } private function sendEmails(){ Doctrine::getTable('Kurz_beh')->setOption('ignore_archive', true); Doctrine::getTable('Agentura')->setOption('ignore_archive', true); Doctrine::getTable('Kurz')->setOption('ignore_archive', true); Doctrine::getTable('Zakaznik')->setOption('ignore_archive', true); Doctrine::getTable('Personalista')->setOption('ignore_archive', true); Doctrine::getTable('Kurz_hodina')->setOption('ignore_archive', true); $behy = Doctrine::getTable('Kurz_beh')->createQuery('a') ->where("a.beh_od <='".date("Y-m-d")."'") ->andWhere("a.beh_do >= '".date("Y-m-d")."'")->execute(); foreach($behy as $beh){ $sum = 0; $sum = $beh->getFjTydne(); $hodina = Doctrine::getTable('Kurz_hodina')->createQuery('a') ->where("a.kurz_beh_id = ".$beh->getId()) ->andWhere("a.datum >='".date("Y-m-d",strtotime("-7 day"))."'") ->andWhere("a.datum <='".date("Y-m-d")."'") ->execute(); if($sum > count($hodina)){ $mail['name'] = $beh->Kurz->Zakaznik->getNazev(); $mail['sendNow'] = 1; $mail['subject'] =$beh->Kurz->Zakaznik->getNazev()." nevyplněná docházka agentury"; $mail['html'] = "V minulém týdnu agentura ".$beh->Agentura->getNazev()." nevyplnila docházku k následujícím kurzům: ".$beh->Kurz->getNazev()." ."; foreach($beh->Kurz->Zakaznik->Personalista_list as $personalista){ $mail['email'] = $personalista->getEmail(); new jnEmailFront($mail); } $mail['html'] = "V minulém týdnu Vaše agentura ".$beh->Agentura->getNazev()." nevyplnila docházku k následujícím kurzům: ".$beh->Kurz->getNazev()." ."; $mail['email'] = $beh->Agentura->getEmail(); new jnEmailFront($mail); } } } }