addOptions(array( new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'prod'), )); $this->addArgument('zakaznik_id', sfCommandArgument::REQUIRED, 'ID Zakaznika'); $this->namespace = 'import'; $this->name = 'import2'; $this->briefDescription = 'Napojeni uchazecu na pracovniky pro daneho zakaznika'; } protected function execute($arguments = array(), $options = array()) { $configHandler = new sfDatabaseConfigHandler(); $databases = $configHandler->evaluate(array($this->configuration->getRootDir().'/config/databases.yml')); $zakaznik_id = $arguments['zakaznik_id']; /* * nacteni vsech Uchazecu, kteri nemaji vyplneno pracovnik_id */ $counter = 0; $uchazecArr = Doctrine::getTable('Uchazec') ->createQuery('u') ->leftJoin('u.Test_zakaznik tz') ->where('u.pracovnik_id IS NULL') ->andWhere('tz.zakaznik_id = ?', $zakaznik_id) ->execute(); foreach($uchazecArr AS $uchazec) { $jmeno = ereg_replace('\ {2,}', ' ', $uchazec['jmeno']); $jmArr = explode(' ', $jmeno); if ((count($jmArr) != 2) && empty($uchazec['email'])) continue; try { $pr = Doctrine::getTable('Pracovnik') ->createQuery() ->where("zakaznik_id = {$zakaznik_id}") ->andwhere("((LOWER(jmeno) LIKE LOWER('{$jmArr[0]}')) AND (LOWER(prijmeni) LIKE LOWER('{$jmArr[1]}')))") ->execute(); if (count($pr) == 1) { $uchazec->pracovnik_id = $pr[0]->id; $uchazec->save(); ++$counter; } else { $pr = Doctrine::getTable('Pracovnik') ->createQuery() ->where("zakaznik_id = {$zakaznik_id}") ->andwhere("((LOWER(prijmeni) LIKE LOWER('{$jmArr[0]}')) AND (LOWER(jmeno) LIKE LOWER('{$jmArr[1]}')))") ->execute(); if (count($pr) == 1) { $uchazec->pracovnik_id = $pr[0]->id; $uchazec->save(); ++$counter; } elseif (!empty($uchazec['email'])) { $pr = Doctrine::getTable('Pracovnik') ->createQuery() ->where("zakaznik_id = {$zakaznik_id}") ->andwhere("LOWER(email) LIKE LOWER('{$uchazec['email']}')") ->execute(); if (count($pr) == 1) { $uchazec->pracovnik_id = $pr[0]->id; $uchazec->save(); ++$counter; } } } } catch (Doctrine_Exception $e) { } } echo "\nPRIDANO: {$counter}"; } }