addArguments(array( // new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'), // )); $this->addOptions(array( new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'), 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 dočasné script pro rýchlé změny v DB.'; $this->detailedDescription = ''; } protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection(); //$this->prepocitejUspesnost(); //$this->smazKurzy(); //$this->importujDochazku(); //$this->prepocitejOdpovedi(); //$this->opravSlamu(); // $this->vytvorPracovnikyPodleUchazecu(); // $this->doplniInfoPracovniky(); //$this->vymazDochazkuUzrusenych(); //$this->doplnStrediskaKPracovnikum(); $this->kopirujPripojedeKBehum(); } 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'); } }