public function getTerminyHodnotenia(Trace $trace)
 {
     $result = array();
     $predmety = $this->executor->readTable(array(), 'zapisanePredmety');
     foreach ($predmety as $predmetIndex => $unused) {
         $terminy = $this->executor->readTable(array('predmet' => $predmetIndex), 'terminy');
         foreach ($terminy as $terminIndex => $unused2) {
             $info = $this->executor->readTable(array('predmet' => $predmetIndex, 'termin' => $terminIndex), 'prihlas');
             if (isset($info['jePrihlaseny'])) {
                 $terminData = $info['prihlasenyData'];
                 $terminData[0] = $info['jePrihlaseny'] ? 'TRUE' : 'FALSE';
                 $result[] = $terminData;
             }
         }
     }
     return new DataTableImpl(MojeTerminyRegression::get(), $result);
 }
 /**
  * Akcia ktora sa pokusi prihlasit cloveka na danu skusku
  *
  * @param Trace $trace trace object
  * @param Request $request
  */
 public function runPrihlasNaSkusku(Trace $trace, Request $request)
 {
     if ($this->terminyHodnoteniaScreen == null) {
         return $this->renderResponse('studium/terminyHodnoteniaNedostupne', $this->templateParams);
     }
     $predmetIndex = $request->getParameter("prihlasPredmetIndex");
     $terminIndex = $request->getParameter("prihlasTerminIndex");
     $predmety = $this->terminyHodnoteniaScreen->getPredmetyZapisnehoListu($trace->addChild('Predmety zapisneho listu'));
     $this->warnings->warnWrongTableStructure($trace, 'terminy hodnotenia - predmety', regression\ZapisanePredmetyRegression::get(), $predmety->getTableDefinition());
     $predmetyData = $predmety->getData();
     $predmetKey = -1;
     foreach ($predmetyData as $key => $row) {
         if ((string) $row[PredmetyFields::INDEX] === $predmetIndex) {
             $predmetKey = $key;
         }
     }
     $childTrace = $trace->addChild('Zoznam terminov');
     $terminyDialog = $this->terminyHodnoteniaScreen->getZoznamTerminovDialog($childTrace, $predmetIndex);
     $terminy = $terminyDialog->getZoznamTerminov($childTrace);
     $this->warnings->warnWrongTableStructure($trace, 'zoznam mojich terminov', regression\MojeTerminyRegression::getPrihlasovanie(), $terminy->getTableDefinition());
     $terminyData = $terminy->getData();
     $terminKey = -1;
     foreach ($terminyData as $key => $terminyRow) {
         if ((string) $terminyRow[TerminyFields::INDEX] === $terminIndex) {
             $terminKey = $key;
         }
     }
     if ($predmetKey == -1 || $terminKey == -1) {
         throw new Exception("Ooops, predmet/termín nenájdený. Pravdepodobne\n          zmena dát v AISe.");
     }
     $hash = StudiumUtils::hashNaPrihlasenie($predmetyData[$predmetKey][PredmetyFields::SKRATKA], $terminyData[$terminIndex]);
     if ($hash != $request->getParameter('hash')) {
         throw new Exception("Ooops, nesedia údaje o termíne. Pravdepodobne zmena\n          dát v AISe spôsobila posunutie tabuliek.");
     }
     if (!$terminyDialog->prihlasNaTermin($trace->addChild('prihlasujem na termin'), $terminIndex)) {
         throw new Exception('Na skúšku sa nepodarilo prihlásiť.');
     }
     return new RedirectResponse($this->generateUrl('studium_moje_skusky', array('studium' => $this->studium, 'list' => $this->zapisnyList), true));
 }