public function getZoznamTerminov(Trace $trace) { $data = $this->executor->readTable(array(), 'terminy'); $result = array(); foreach ($data as $index => $value) { $info = $this->executor->readTable(array('termin' => $index), 'prihlas'); if (isset($info['jePrihlaseny']) && $info['jePrihlaseny']) { // skip this in list } else { $result[$index] = $value; } } return new DataTableImpl(TerminyKPredmetuRegression::get(), $result); }
/** * Akcia ktora zobrazi terminy, na ktore je mozne potencialne sa prihlasit. * * @param Trace $trace trace object * @param Request $request */ public function runZoznamTerminov(Trace $trace, Request $request) { $this->templateParams['currentTab'] = 'ZapisSkusok'; $schovajUznane = $request->getParameter('displayFilter', 'uznane') === 'uznane'; if ($this->terminyHodnoteniaScreen == null) { return $this->renderResponse('studium/terminyHodnoteniaNedostupne', $this->templateParams); } $predmetyZapisnehoListu = $this->terminyHodnoteniaScreen->getPredmetyZapisnehoListu($trace); $this->warnings->warnWrongTableStructure($trace, 'terminy hodnotenia - predmety', regression\ZapisanePredmetyRegression::get(), $predmetyZapisnehoListu->getTableDefinition()); $hodnotenia = $this->hodnoteniaScreen->getHodnotenia($trace); $this->warnings->warnWrongTableStructure($trace, 'hodnotenia', regression\HodnoteniaRegression::get(), $hodnotenia->getTableDefinition()); $hodnoteniaData = array(); foreach ($hodnotenia->getData() as $row) { $hodnoteniaData[$row[HodnoteniaFields::PREDMET_SKRATKA]] = $row; } $mozePrihlasitHelper = new MozePrihlasitNaTerminHelper($hodnoteniaData); $terminyData = array(); $pocetSchovanychPredmetov = 0; foreach ($predmetyZapisnehoListu->getData() as $predmetRow) { $predmetSkratka = $predmetRow[PredmetyFields::SKRATKA]; $predmetId = $predmetRow[PredmetyFields::INDEX]; $predmet = $predmetRow[PredmetyFields::NAZOV]; if ($schovajUznane && $hodnoteniaData[$predmetSkratka][HodnoteniaFields::UZNANE] == 'TRUE') { $pocetSchovanychPredmetov++; continue; } $childTrace = $trace->addChild('Zoznam terminov k predmetu ' . $predmet); $dialog = $this->terminyHodnoteniaScreen->getZoznamTerminovDialog($childTrace, $predmetId); $terminy = $dialog->getZoznamTerminov($childTrace); $this->warnings->warnWrongTableStructure($trace, 'zoznam terminov k predmetu ' . $predmet, regression\TerminyKPredmetuRegression::get(), $terminy->getTableDefinition()); // explicitly close this dialog otherwise we will be blocked for next iteration! $dialog->closeWindow(); foreach ($terminy->getData() as $row) { $prihlasTerminyRow = $row; $prihlasTerminyRow[PrihlasTerminyFields::PREDMET] = $predmet; $prihlasTerminyRow[PrihlasTerminyFields::PREDMET_INDEX] = $predmetId; $prihlasTerminyRow[PrihlasTerminyFields::PREDMET_SKRATKA] = $predmetSkratka; $prihlasTerminyRow[PrihlasTerminyFields::ZNAMKA] = $hodnoteniaData[$predmetSkratka][HodnoteniaFields::ZNAMKA]; $prihlasTerminyRow[PrihlasTerminyFields::HASH_PRIHLASENIE] = StudiumUtils::hashNaPrihlasenie($predmetSkratka, $row); // PrihlasTerminyFields::ZNAMKA, PREDMET_SKRATKA must be set before! $prihlasTerminyRow[PrihlasTerminyFields::FAJR_MOZE_PRIHLASIT] = $mozePrihlasitHelper->mozeSaPrihlasit($prihlasTerminyRow, $this->serverTime); $terminyData[] = $prihlasTerminyRow; } } $this->templateParams['prihlaseni'] = null; if ($request->getParameter('termin') !== '' && $request->getParameter('predmet') !== '') { $prihlaseni = $this->terminyHodnoteniaScreen->getZoznamTerminovDialog($trace, $request->getParameter('predmet'))->getZoznamPrihlasenychDialog($trace, $request->getParameter('termin'))->getZoznamPrihlasenych($trace); $this->warnings->warnWrongTableStructure($trace, 'zoznam prihlasenych k terminu', regression\PrihlaseniNaTerminRegression::get(), $prihlaseni->getTableDefinition()); $this->templateParams['prihlaseni'] = $prihlaseni->getData(); } $this->templateParams['predmetyZapisnehoListu'] = $predmetyZapisnehoListu; $this->templateParams['terminy'] = $terminyData; $this->templateParams['termin'] = $request->getParameter('termin'); $this->templateParams['predmet'] = $request->getParameter('predmet'); $this->templateParams['pocetSchovanychPredmetov'] = $pocetSchovanychPredmetov; return $this->renderResponse('studium/zoznamTerminov', $this->templateParams); }