/** * Zisti ci existuje casova kolizia s existujucou poziadavkou * @return null ak neexistuje, inac string so zaciatkom a koncom koliznej akcie */ public function existujeKolizna() { // hlada nasledovne kolizne pripady: // - existuje zaciatok nejakeho obdobia v nasom // - existuje koniec nejakeho obdobia v nasom // - nejake obdobie kompletne prekryva nase obbodie // pricom vzdy sa ignoruje nase obdobie (kvoli update ktory by bol kolizny so sebou) // a zaroven nie su kolizie ak bezi vaicero akcii na viacero inych semestrov $sql = "SELECT id, " . DateConvert::DBTimestampToSkDateTime("zaciatok") . " AS zaciatok, " . DateConvert::DBTimestampToSkDateTime("koniec") . " AS koniec\n\t\t\tFROM rozvrhova_akcia\n\t\t\t WHERE \n\t\t\t \t((zaciatok>" . DateConvert::SKDateTime2DBTimestamp("\$1") . " AND\n\t\t\t \t zaciatok<" . DateConvert::SKDateTime2DBTimestamp("\$2") . ") OR\t\n\t\t\t \t(koniec>" . DateConvert::SKDateTime2DBTimestamp("\$1") . " AND\n\t\t\t \t koniec<" . DateConvert::SKDateTime2DBTimestamp("\$2") . ") OR\n\t\t\t \t(zaciatok<=" . DateConvert::SKDateTime2DBTimestamp("\$1") . " AND\n\t\t\t \t koniec>=" . DateConvert::SKDateTime2DBTimestamp("\$2") . ")) AND\n\t\t\t \t id_semester=\$3"; $params = array($this->zaciatok, $this->koniec, $this->id_semester); // ak je edit TREBA aj vylucit koliziu so sebou if (!empty($this->id)) { $sql .= " AND id<>\$4"; $params[] = $this->id; } $this->dbh->query($sql, $params); if ($this->dbh->RowCount() > 0) { $kolizia = $this->dbh->fetch_assoc(); return "{$kolizia["zaciatok"]} - {$kolizia["koniec"]}"; } else { return null; } }