/** * * @param \PDO $pdo * @param int $game_type_id * @param Date $date * @param Time $time_from * @param Time $time_to * @return GameBoxExtended[] */ public static function getAvailableGameBox($pdo, $game_type_id, $date, $time_from, $time_to) { $boxes = GameBoxExtended::fetchAllByGameType($pdo, $game_type_id); $statement = $pdo->prepare('SELECT game_box_id FROM reservation_extended ' . 'WHERE game_type_id = :game_type_id AND ' . 'reservation_date = :date AND ( ' . ' ( time_from <= :time_from1 AND :time_from2 <= time_to ) OR' . ' ( time_from <= :time_to1 AND :time_to2 <= time_to )' . ')'); $pars = ['game_type_id' => $game_type_id, 'date' => $date, 'time_from1' => $time_from, 'time_from2' => $time_from, 'time_to1' => $time_to, 'time_to2' => $time_to]; if (!$statement->execute($pars)) { DB_Service::logError($statement->errorInfo(), __CLASS__ . "::" . __FUNCTION__, $statement->queryString, $pars); return false; } $boxesInUse = $statement->fetchAll(\PDO::FETCH_COLUMN); foreach ($boxesInUse as $boi) { unset($boxes[$boi]); } return $boxes; }