addArguments(array( // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), // )); $this->addOptions(array( new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'zakaznik'), new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel'), // add your own options here )); $this->namespace = 'tmp'; $this->name = 'script'; $this->briefDescription = 'Task pro jednorázové dávky.'; $this->detailedDescription = ''; } protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection(); sfContext::createInstance($this->configuration); //$this->prepocitejUspesnost(); //$this->smazKurzy(); //$this->importujDochazku(); //$this->prepocitejOdpovedi(); //$this->opravSlamu(); // $this->vytvorPracovnikyPodleUchazecu(); // $this->doplniInfoPracovniky(); //$this->vymazDochazkuUzrusenych(); //$this->doplnStrediskaKPracovnikum(); //$this->kopirujPripojedeKBehum(); // $this->rozesliUpozorneniNaNevyplneneTesty(); $this->rozesliZnovuHodnoceni(); } public function kopirujPripojedeKBehum() { $old = array(122, 123, 124, 125, 266, 268, 414, 415, 451, 453); $new = range(521, 530); foreach($old as $i => $old_beh_id) { $new_beh_id = $new[$i]; $this->logSection ('START', 'old: '.$old_beh_id.' / new: '.$new_beh_id); $beh_testy = Doctrine::getTable('Kurz_beh_testy')->findByKurzBehId($old_beh_id); if($beh_testy->count()) { foreach($beh_testy as $beh_test) { $new_beh_test = $beh_test->copy(); $new_beh_test->setKurzBehId($new_beh_id); $new_beh_test->save(); $this->logSection ('Kurz_beh_testy', 'new: '.$new_beh_test->getId()); } } else { $this->logSection ('Warning', 'zadne testy pro beh: '.$old_beh_id); } $hodiny = Doctrine::getTable('Kurz_hodina')->createQuery() ->addWhere('kurz_beh_id = ?', $old_beh_id) ->addWhere('datum >= ?', '2012-01-01') ->execute(); if($hodiny->count()) { foreach($hodiny as $hodina) { $hodina->setKurzBehId($new_beh_id); $hodina->save(); $this->logSection ('Kurz_hodina', 'save: '.$hodina->getId()); } } else { $this->logSection ('Warning', 'zadne hodiny pro beh: '.$old_beh_id); } $uchazeci = Doctrine::getTable('Uchazec')->createQuery() ->addWhere('kurz_beh_id = ?', $old_beh_id) ->addWhere('datum_startu >= ?', '2012-01-01') ->execute(); if($uchazeci->count()) { foreach($uchazeci as $uchazec) { $uchazec->setKurzBehId($new_beh_id); $uchazec->save(); $this->logSection ('Uchazec', 'save: '.$uchazec->getId()); } } else { $this->logSection ('Warning', 'zadni uchazeci pro beh: '.$old_beh_id); } $rozpocty = Doctrine::getTable('Pracovnik_rozpocet')->createQuery() ->addWhere('kurz_beh_id = ?', $old_beh_id) ->execute(); if($rozpocty->count()) { foreach($rozpocty as $rozpocet) { $new_rozpocet = $rozpocet->copy(); $new_rozpocet->setKurzBehId($new_beh_id); $new_rozpocet->save(); $this->logSection ('Pracovnik_rozpocet', 'new: '.$new_rozpocet->getId()); } } else { $this->logSection ('Warning', 'zadny rozpocet pro beh: '.$old_beh_id); } } } public function doplnStrediskaKPracovnikum() { foreach(file(sfConfig::get('sf_data_dir').'/import/HARTMAN-strediska.csv') as $row) { $data = explode(';', $row); $nove_stredisko = empty($data[3]) ? $data[2] : $data[3]; if(!empty($data[0])) { $pracovnik = Doctrine::getTable('Pracovnik')->findOneByOsobniCislo($data[0]); if(!$pracovnik) { $pracovnik = new Pracovnik(); list($prijmeni, $jmeno) = explode(' ', $data[1]); $pracovnik->setJmeno($jmeno); $pracovnik->setPrijmeni($prijmeni); $pracovnik->setOsobniCislo($data[0]); $pracovnik->setZakaznikId(8); // Hartman-Rico $this->logSection('Vytvářím', $data[1].'/'.$nove_stredisko); } else { $this->logSection('Aktualizuji', $pracovnik->getName().'/'.$pracovnik->getNakladoveStredisko().' >> '.$nove_stredisko); } $pracovnik->setOddeleni($data[8]); $pracovnik->setNadrizeny($data[4]); $pracovnik->setPozice($data[5]); $pracovnik->setNakladoveStredisko($nove_stredisko); $pracovnik->save(); } else { $this->logSection('Přeskakuji', $data[1].' - Nemá OS.číslo'); } } } public function vymazDochazkuUzrusenych() { $dochazky = Doctrine::getTable('Kurz_dochazka')->createQuery('kd') ->innerJoin('kd.Kurz_hodina kh') ->addWhere('kh.zruseno != ?', array('ne')) ->execute(); foreach($dochazky as $dochazka) { $puvodni = $dochazka->getStav(); switch($dochazka->getKurz_hodina()->getZruseno()) { case 'pozde': $dochazka->setStav('ZP'); break; case 'vcas': $dochazka->setStav('ZV'); break; case 'agentura': $dochazka->setStav('ZA'); break; } $dochazka->save(); if($puvodni != $dochazka->getStav()) { $this->logSection('Kurz_duchazka', $dochazka->getId().';'.$puvodni.'->'.$dochazka->getStav()); } } } public function doplniInfoPracovniky() { $import = array(); foreach(file(sfConfig::get('sf_data_dir').'/import/FEI_uchazeci.csv') as $row) { $arr = explode(';', $row); if(isset($arr[1])) { $import[$arr[1]] = $arr; } } $pracovnici = Doctrine::getTable('Pracovnik')->createQuery('p') ->innerJoin('p.Uchazec_list u') ->addWhere('u.vlna_id = ?', 50) ->groupBy('p.id') ->execute(); foreach($pracovnici as $pracovnik) { if(isset($import[$pracovnik->getPrijmeni()])) { $arr = $import[$pracovnik->getPrijmeni()]; $pracovnik->setNakladoveStredisko($arr[5]); $pracovnik->setOddeleni($arr[4]); $pracovnik->setPozice($arr[7]); $pracovnik->setNadrizeny($arr[6]); $pracovnik->setOsobniCislo($arr[0]); $pracovnik->save(); $this->logSection('pracovnik', $pracovnik->getEmail()); } } } public function vytvorPracovnikyPodleUchazecu() { $uchazeci = Doctrine::getTable('Uchazec')->createQuery() ->addWhere('vlna_id = ?', 50) ->addWhere('pracovnik_id IS NULL') ->execute(); foreach($uchazeci as $uchazec) { $pracovnik = Doctrine::getTable('Pracovnik')->createQuery() ->addWhere('email = ?', $uchazec->getEmail()) ->fetchOne(); if(!$pracovnik) { list($jmeno, $prijmeni) = explode(' ', $uchazec->getJmeno()); $pracovnik = new Pracovnik(); $pracovnik->setZakaznikId($uchazec->getZakaznikId()); $pracovnik->setEmail($uchazec->getEmail()); $pracovnik->setJmeno($jmeno); $pracovnik->setPrijmeni($prijmeni); $pracovnik->save(); } $uchazec->setPracovnikId($pracovnik->getId()); $uchazec->save(); $this->logSection('uchazec', $uchazec->getEmail().' -> pracovnik: '.$pracovnik->getId()); } } protected function opravSlamu() { $uchazeci = Doctrine::getTable('Uchazec')->createQuery() ->addWhere('pracovnik_id = ?', 336) ->addWhere('id != ?', 2894) ->execute(); foreach($uchazeci as $u) { $new = Doctrine::getTable('Pracovnik')->createQuery() ->addWhere('zakaznik_id = ?', $u->getZakaznikId()) ->addWhere('email = ?', $u->getEmail()) ->fetchOne(); if($new && strlen(trim($u->getEmail())) > 0) { $u->setPracovnikId($new->getId()); $this->logSection('pracovnik', $u->getJmeno().' => '.$new->getJmeno().' '.$new->getPrijmeni()); } else { $u->setPracovnikId(null); $this->logSection('pracovnik', $u->getJmeno().' => NULL'); } $u->save(); } } protected function prepocitejOdpovedi() { $texty = Doctrine::getTable('Uchazec_text')->createQuery() ->addWhere('otazka_id = ?', 2921) ->addWhere('datum_zodpovezeni IS NOT NULL') ->execute(); foreach($texty as $text) { $uchazec = $text->getUchazec(); $puvodni = $uchazec->getUspesnost(); if(!is_null($uchazec->getJmeno())) { $text->evaluate(); $uchazec->vypocitejUspesnost(); $uchazec->save(); $this->logSection('Uchazec', $uchazec->getId().' '.$uchazec->getJmeno().' ('.$uchazec->getDatumStartu().') '.$puvodni.'->'.$uchazec->getUspesnost()); } } $dvorak = Doctrine::getTable('Uchazec')->findOneById(5989); $puvodni = $dvorak->getUspesnost(); $dvorak->vypocitejUspesnost(); $dvorak->save(); $this->logSection('Uchazec', $dvorak->getId().' '.$dvorak->getJmeno().' '.$puvodni.'->'.$dvorak->getUspesnost()); } protected function importujDochazku() { include 'kurz_dochazka.php'; foreach($kurz_dochazka as $d) { $dochazka = new Kurz_dochazka(); $dochazka->setId($d['id']); $dochazka->setPracovnikId($d['pracovnik_id']); $dochazka->setKurzHodinaId($d['kurz_hodina_id']); $dochazka->setCena($d['cena']); $dochazka->setStav($d['stav']); $dochazka->setArchived($d['archived']); $dochazka->save(); $this->logSection('kurz_dochazka', $d['id']); } } protected function prepocitejUspesnost() { $uchazeci = Doctrine::getTable('Uchazec')->createQuery() ->addWhere('uspesnost = ?', 0) //->addWhere('id > ?', 2800) ->execute(); foreach($uchazeci as $uchazec) { $uspesnost = $uchazec->Count_uspesnost(); if(isset($uspesnost['procenta']) && $uspesnost['procenta'] > 0) { $this->log('uspesnost='.$uspesnost['procenta'].' '.$uchazec->getJmeno().' ('.$uchazec->getZakaznik()->getNazev().'), id='.$uchazec->getId().''); $uchazec->setUspesnost($uspesnost['procenta']); $uchazec->save(); } } $this->log('done'); } protected function smazKurzy() { $kurzy = Doctrine::getTable('Kurz')->createQuery() ->addWhere('nazev LIKE ? OR nazev LIKE ?', array('UG%', 'UI%')) ->execute(); foreach($kurzy as $kurz) { $this->logSection('delete', 'kurz_id='.$kurz->getId().', nazev='.$kurz->getNazev()); $kurz->fullDelete(); } $this->log('done'); } protected function rozesliUpozorneniNaNevyplneneTesty() { sfContext::getInstance()->getConfiguration()->loadHelpers('Partial'); $uchazeci = Doctrine::getTable('Uchazec')->createQuery() ->addWhere('datum_startu IS NULL') ->addWhere('zakaznik_id = ?', 8) //Hartmann ->addWhere('vlna_id = ?', 63) ->execute(); foreach($uchazeci as $uchazec) { $personalista = $uchazec->getPersonalista(); $args['email'] = $uchazec->email; //$args['email'] = 'naibrt@klape.cz'; $args['name'] = $uchazec->jmeno; // $args['subject'] = $personalista->Zakaznik->getNazev().': '.$i18n->__('přihlašovací údaje k Vašemu testu'); //$args['subject'] = $personalista->Zakaznik->getNazev().': Testování znalostí AJ - odkaz na test'; $args['subject'] = $personalista->Zakaznik->getNazev() . ': ' . $personalista->Zakaznik->getEmailKodPredmet(); $args['text'] = ""; $args['html'] = get_partial('uchazec/opetovneRozeslaniKoduMailBody', array('uchazec' => $uchazec, 'code' => $uchazec->getKod())); $args['sendNow'] = 1; $args['email_from'] = 'podpora@jakobson.cz'; $args['name_from'] = 'Agentura Jakobson'; $email = new jnEmailFront($args); $uchazec->setKodOdeslan(date('Y-m-d H:i:s')); $uchazec->save(); $this->logSection('odeslano', 'email='.$uchazec->email.' kod='.$uchazec->getKod()); } $this->log('done'); } protected function rozesliZnovuHodnoceni() { sfContext::getInstance()->getConfiguration()->loadHelpers('Partial'); $emaily_k_rozeslani = array( 'ABeran@zetor.com', 'ABily@zetor.com', 'ADolezalova@zetor.com', 'ADvornik@zetor.com', 'AKrejci@zetor.com', 'AKuchar@zetor.com', 'ANemcova@zetor.com', 'ANovak@zetor.com', 'APodsednikova@zetor.com', 'ASlezakova@zetor.com', 'BRudolf@zetor.com', 'DBartonik@zetor.com', 'DChmelicek@zetor.com', 'DKuchtova@zetor.com', 'DLopatova@zetor.com', 'DMaxa@zetor.com', 'DMusil@zetor.com', 'DVitek@zetor.com', 'EHanusova@zetor.com', 'EJilkova@zetor.com', 'EJungova@zetor.com', 'EKobelkova@zetor.com', 'ESkladana@zetor.com', 'FFrana@zetor.com', 'FJurka@zetor.com', 'FKramer@zetor.com', 'FSnobl@zetor.com', 'FSoka@zetor.com', 'HCechova@zetor.com', 'HWito@zetor.com', 'IBuresova@zetor.com', 'IRojkova@zetor.com', 'IRuberova@zetor.com', 'ISlana@zetor.com', 'ITarabova@zetor.com', 'IVeletova@zetor.com', 'IVrskova@zetor.com', 'IZouharova@zetor.com', 'JDrozd@zetor.com', 'JGlotzmann@zetor.com', 'JGregorova@zetor.com', 'JHavel@zetor.com', 'JHladik@zetor.com', 'JHolikova@zetor.com', 'JHurta@zetor.com', 'JJurcek@zetor.com', 'JKadlec@zetor.com', 'JKodes@zetor.com', 'JLukas@zetor.com', 'JLuzny@zetor.com', 'JMachac@zetor.com', 'JMarek@zetor.com', 'JMendel@zetor.com', 'JMlcoch@zetor.com', 'JMynar@zetor.com', 'JNovacek@zetor.com', 'JRagasova@zetor.com', 'JSebestik@zetor.com', 'JSiegerova@zetor.com', 'JSlama@zetor.com', 'JStrakay@zetor.com', 'JStrancova@zetor.com', 'JTurecek@zetor.com', 'JUricar@zetor.com', 'JVicar@zetor.com', 'JVokoun@zetor.com', 'JZatkova@zetor.com', 'JZitka@zetor.com', 'KNovotny@zetor.com', 'KSkacel@zetor.com', 'KValova@zetor.com', 'KZizkova@zetor.com', 'LAubrecht@zetor.com', 'LBen-Chenni@zetor.com', 'LBlazek@zetor.com', 'LHanzelkova@zetor.com', 'LHorak@zetor.com', 'LHorka@zetor.com', 'LJager@zetor.com', 'LKarczmarczykova@zetor.com', 'LKrejci@zetor.com', 'LKrejcir@zetor.com', 'LOtisk@zetor.com', 'LSalajka@zetor.com', 'LTeply@zetor.com', 'LTsponova@zetor.com', 'MAndel@zetor.com', 'MFilipcikova@zetor.com', 'MFlek@zetor.com', 'MGazdik@zetor.com', 'MHadrabova@zetor.com', 'MHolic@zetor.com', 'MHortova@zetor.com', 'MChlup@zetor.com', 'MJargusova@zetor.com', 'MKorbicka@zetor.com', 'MKratky@zetor.com', 'MKucerova@zetor.com', 'MKulhankova@zetor.com', 'MLosova@zetor.com', 'MMazel@zetor.com', 'MMurgas@zetor.com', 'MNemeskal@zetor.com', 'MNevrlik@zetor.com', 'MPlchova@zetor.com', 'MPodhradska@zetor.com', 'MPribylova@zetor.com', 'MSedlackova@zetor.com', 'MSevcik@zetor.com', 'MSkalicka@zetor.com', 'MSlezak@zetor.com', 'MSmidova@zetor.com', 'MVranova@zetor.com', 'MZbur@zetor.com', 'MZilka@zetor.com', 'OJurkova@zetor.com', 'PCechman@zetor.com', 'PJankovic@zetor.com', 'PKavan@zetor.com', 'PKral@zetor.com', 'PKrchnak@zetor.com', 'PNemec@zetor.com', 'POhnutek@zetor.com', 'PPivonka@zetor.com', 'PProchazka@zetor.com', 'PSafranek@zetor.com', 'PSuchankova@zetor.com', 'PSvabensky@zetor.com', 'PValachova@zetor.com', 'PVysoudil@zetor.com', 'PZabrsa@zetor.com', 'PZavadsky@zetor.com', 'RBucek@zetor.com', 'RDvorak@zetor.com', 'RExner@zetor.com', 'RGregr@zetor.com', 'RHanckova@zetor.com', 'RHavirova@zetor.com', 'RHolub@zetor.com', 'RKaluzik@zetor.com', 'RKyzlink@zetor.com', 'RSlovak@zetor.com', 'RTomanova@zetor.com', 'SBobrovska@zetor.com', 'SHutakova@zetor.com', 'SMitas@zetor.com', 'SPrstkova@zetor.com', 'SSevcikova@zetor.com', 'SSrnska@zetor.com', 'TBartausic@zetor.com', 'THajducek@zetor.com', 'TIvicic@zetor.com', 'TKadlec@zetor.com', 'TParilova@zetor.com', 'VBuchta@zetor.com', 'VBukajova@zetor.com', 'VJelinek@zetor.com', 'VKalabkova@zetor.com', 'VMoravec@zetor.com', 'VStankova@zetor.com', 'VStrnadova@zetor.com', 'VVenera@zetor.com', 'ZBrlica@zetor.com', 'ZDrabek@zetor.com', 'ZOpletal@zetor.com', 'ZVagner@zetor.com' ); $codeReplace = new CodeReplace(); foreach($emaily_k_rozeslani as $email_u) { $uchazec = Doctrine::getTable('Uchazec')->findOneByEmail($email_u); if(is_object($uchazec)) { $this->logSection ('Uchazec', 'ID: '.$uchazec->getId().' odeslani_emailu: '.$uchazec->getOdeslaniEmailu().' email: '.$uchazec->getEmail()); if ($uchazec->getOdeslaniEmailu() != 0) { // argumenty pro nahrazení v šablonách $hodnoceni = $uchazec->getHodnoceni(); $test = $uchazec->Test_zakaznik->Test; $arg['[vysledek]'] = $uchazec->uspesnost; $arg['[zakaznik_nazev]'] = $uchazec->Test_zakaznik->Zakaznik->nazev; $arg['[uchazec_jmeno]'] = $uchazec->jmeno; $arg['[uchazec_email]'] = $uchazec->email; $arg['[nazev_testu]'] = $test->nazev_testu; $arg['[uspesnost]'] = $uchazec->uspesnost; $arg['[hodnoceni]'] = $hodnoceni['hodnoceni']; $arg['[hodnoceni_text]'] = $hodnoceni['hodnoceni_text']; $arg['[personalista_email]'] = $uchazec->Personalista->getEmail(); $arg['[personalista_name]'] = $uchazec->Personalista->getJmeno(); $arg['[zakaznik_nazev]'] = $uchazec->Personalista->Zakaznik->getNazev(); $arg['[hodnoceni_gramatika]'] = $uchazec->renderGramatikaToEmail(); // pro odeslání emailu $args['email'] = $uchazec->getEmail(); $args['name'] = $uchazec->getJmeno(); $args['subject'] = $uchazec->Personalista->Zakaznik->getNazev() . ": " . $uchazec->Personalista->Zakaznik->getEmailVysledekPredmet(); $args['html'] = $codeReplace->replaceCode($arg, $uchazec->Personalista->Zakaznik->getEmailVysledek()); if ($uchazec->getOdeslaniEmailu() == 2) { sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url', 'Tag', 'I18N')); $args['html'] .= '
'; $args['html'] .= ''.__('Vyhodnocený test zobrazíte zde').'.'; } // $args['sendNow'] = 1; $args['sendNow'] = 0; // neodešle hned, jen hodí do fronty pro kontrolu. Pozor pro ladění potřeba vypnout odesílání v crontab! $this->logSection ('HTML',$args['html']); $email_vys = new jnEmailFront($args); } } else { $this->logSection ('Uchazec', 'neexistuje uchazec s emailem '.$email_u); } } } /* foreach($uchazeci as $uchazec) { $personalista = $uchazec->getPersonalista(); $args['email'] = $uchazec->email; //$args['email'] = 'naibrt@klape.cz'; $args['name'] = $uchazec->jmeno; // $args['subject'] = $personalista->Zakaznik->getNazev().': '.$i18n->__('přihlašovací údaje k Vašemu testu'); //$args['subject'] = $personalista->Zakaznik->getNazev().': Testování znalostí AJ - odkaz na test'; $args['subject'] = $personalista->Zakaznik->getNazev() . ': ' . $personalista->Zakaznik->getEmailKodPredmet(); $args['text'] = ""; $args['html'] = get_partial('uchazec/opetovneRozeslaniKoduMailBody', array('uchazec' => $uchazec, 'code' => $uchazec->getKod())); $args['sendNow'] = 1; $args['email_from'] = 'podpora@jakobson.cz'; $args['name_from'] = 'Agentura Jakobson'; $email = new jnEmailFront($args); $uchazec->setKodOdeslan(date('Y-m-d H:i:s')); $uchazec->save(); $this->logSection('odeslano', 'email='.$uchazec->email.' kod='.$uchazec->getKod()); } $this->log('done'); } */ }