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; } $prihlasRange = AIS2Utils::parseAISDateTimeRange($prihlasTerminyRow[PrihlasTerminyFields::PRIHLASOVANIE_DATUM]); if (!($prihlasRange['od'] < $time && $prihlasRange['do'] > $time)) { return self::PRIHLASIT_NEMOZE_CAS; } 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; }
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 = ""; } if (isset($this->hodnoteniaData[$predmet][HodnoteniaFields::MOZE_PRIHLASIT]) && $this->hodnoteniaData[$predmet][HodnoteniaFields::MOZE_PRIHLASIT] == 'N') { $mozePredmet = false; } else { $mozePredmet = true; } if ($znamka != "" && !Znamka::isSame($znamka, 'Fx') && !$mozePredmet) { return self::PRIHLASIT_NEMOZE_ZNAMKA; } $prihlasRange = AIS2Utils::parseAISDateTimeRange($prihlasTerminyRow[PrihlasTerminyFields::PRIHLASOVANIE_DATUM]); if (!($prihlasRange['od'] < $time && $prihlasRange['do'] > $time)) { return self::PRIHLASIT_NEMOZE_CAS; } 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 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')); }