public function mozeSaPrihlasit($prihlasTerminyRow, $time) { $predmet = $prihlasTerminyRow[PrihlasTerminyFields::PREDMET_SKRATKA]; if (isset($this->hodnoteniaData[$predmet][HodnoteniaFields::ZNAMKA])) { $znamka = $this->hodnoteniaData[$predmet][HodnoteniaFields::ZNAMKA]; } else { $znamka = ""; } // Note(PPershing): never use $this->hodnoteniaData[$predmet][HodnoteniaFields::MOZE_PRIHLASIT] // AiS will incorrectly report that you can't sign up if you have FX! $mozePredmet = $prihlasTerminyRow[ZoznamTerminovFields::MOZE_PRIHLASIT] == 'A'; if ($znamka != "" && !Znamka::isSame($znamka, 'Fx') && !$mozePredmet) { return self::PRIHLASIT_NEMOZE_ZNAMKA; } try { $prihlasRange = AIS2Utils::parseAISDateTimeRange($prihlasTerminyRow[PrihlasTerminyFields::PRIHLASOVANIE_DATUM]); if (!($prihlasRange['od'] < $time && $prihlasRange['do'] > $time)) { return self::PRIHLASIT_NEMOZE_CAS; } } catch (\Exception $e) { // ignorujme chybu pri parsovani datumu // lepsie pouzivatelovi umoznit vyskusat sa prihlasit // ako mu to neumoznit napriek tomu, ze by sa mal vediet prihlasit } if ($prihlasTerminyRow[PrihlasTerminyFields::MAX_POCET] !== '' && $prihlasTerminyRow[PrihlasTerminyFields::MAX_POCET] <= $prihlasTerminyRow[PrihlasTerminyFields::POCET_PRIHLASENYCH]) { return self::PRIHLASIT_NEMOZE_POCET; } if (!$mozePredmet) { return self::PRIHLASIT_NEMOZE_INE; } if ($znamka != "" && !Znamka::isSame($znamka, 'Fx') && $mozePredmet) { return self::PRIHLASIT_MOZE_ZNAMKA; } return self::PRIHLASIT_MOZE; }
public function prihlasNaTermin(Trace $trace, $terminIndex) { $terminy = $this->executor->readTable(array(), 'terminy'); // Jemna napodobenina logiky pre prihlasovanie, // checkuje ci uz nie som zapisany na iny termin s vyslednou znamkou. foreach ($terminy as $index => $unused) { $info = $this->executor->readTable(array('termin' => $index), 'prihlas'); if (isset($info['jePrihlaseny']) && $info['jePrihlaseny']) { $znamka = $info['prihlasenyData'][self::MOJE_TERMINY_ZNAMKA]; if (!Znamka::isSame($znamka, 'Fx')) { throw new Exception("Už si prihlásený na iný termín z tohoto predmetu!"); } } } $info = $this->executor->readTable(array('termin' => $terminIndex), 'prihlas'); if (!isset($info['mozePrihlasit']) || !$info['mozePrihlasit']) { $dovod = isset($info['nemozePrihlasitDovod']) ? $info['nemozePrihlasitDovod'] : 'neznámy'; throw new Exception("Nemôžem prihlásiť na termín - dôvod: " . $dovod); } if (isset($info['jePrihlaseny']) && $info['jePrihlaseny']) { throw new Exception("Na daný termín si už prihlásený."); } $info['jePrihlaseny'] = true; $this->executor->writeTable(array('termin' => $terminIndex), 'prihlas', $info); $this->closeIfNeeded($trace); return true; }
/** * Zarata predmet s danou znamkou * @param float $kredity pocet kreditov, ktore sa maju zaratat * @param Znamka $znamka znamka, ktora sa ma zarat, NULL sa rata ako * neohodnoteny predmet * @throws InvalidArgumentException ak dana znamka nie je platna */ public function add($kredity, Znamka $znamka = null) { Preconditions::checkContainsInteger($kredity); Preconditions::check($kredity >= 0, "Kreditov musí byť nezáp**ný počet."); if ($znamka == null) { $this->addNeohodnotene($kredity); return; } $this->addOhodnotene($znamka->getNumerickaHodnota(), $kredity); if (!Znamka::isSame($znamka->getNazov(), "Fx")) { $this->addZiskane($kredity); } }
public function testPorovnavaniaZnamok() { $this->assertTrue(Znamka::isSame('a', 'a')); $this->assertTrue(Znamka::isSame('a', 'A')); $this->assertTrue(Znamka::isSame('A', 'a')); $this->assertTrue(Znamka::isSame('Fx', 'Fx')); $this->assertTrue(Znamka::isSame('FX', 'Fx')); $this->assertTrue(Znamka::isSame('Fx', 'FX')); $this->assertTrue(Znamka::isSame('fX', 'fx')); $this->assertTrue(Znamka::isSame('fX', 'FX')); $this->assertFalse(Znamka::isSame('a', 'B')); $this->assertFalse(Znamka::isSame('Fx', 'Fxx')); $this->assertFalse(Znamka::isSame('C', 'EC')); }