/** * * @param Tables\Reservation $reservation * @return mixed[] */ private function validateReservation($reservation, $game_type_id) { $dateTimeRaw = ['date' => strtotime($reservation->reservation_date), 'time_from' => strtotime($reservation->time_from), 'time_to' => strtotime($reservation->time_to)]; $dateTime = ['date' => DatetimeManager::format($dateTimeRaw['date'], DatetimeManager::DB_DATE_ONLY), 'time_from' => DatetimeManager::format($dateTimeRaw['time_from'], DatetimeManager::DB_TIME_ONLY), 'time_to' => DatetimeManager::format($dateTimeRaw['time_to'], DatetimeManager::DB_TIME_ONLY)]; if ($dateTimeRaw['time_from'] > $dateTimeRaw['time_to']) { return ['result' => false, 'message' => "Čas konce rezervace musí následovat čas začátku rezervace."]; } $hour = date("H", $dateTimeRaw['time_from']); if ($hour * 1 < Tables\Reservation::EARLY_RESERVATION) { return ['result' => false, 'message' => "Nelze vytvářet rezervace před začátkem rezervací({$hour})"]; } $hour = date("H", $dateTimeRaw['time_to']); if ($hour * 1 > Tables\Reservation::LATE_RESERVATION) { return ['result' => false, 'message' => "Nelze vytvářet rezervace po konci rezervací({$hour})"]; } $eventExists = Tables\Event::existsDuring($this->pdo, $dateTime['date'], $dateTime['time_from'], $dateTime['time_to']); if ($eventExists) { return ['result' => false, 'message' => sprtintf('Ve vámi zvolený čas je již naplánovaná událost a nelze tedy uložit rezervaci.')]; } if ($reservation->desk_id != Tables\Desk::NO_DESK) { if (!Views\ReservationExtended::checkDeskAvailable($this->pdo, $reservation->desk_id, $dateTime['date'], $dateTime['time_from'], $dateTime['time_to'])) { return ['result' => false, 'message' => \sprintf("Stůl č %02d je ve vámi zvolený čas obsazený", $reservation->desk_id)]; } } $boxes = Views\ReservationExtended::getAvailableGameBox($this->pdo, $game_type_id, $dateTime['date'], $dateTime['time_from'], $dateTime['time_from']); if ($boxes === false) { return ['result' => false, 'message' => "Při kontrole použitých krabic nastala chyba."]; } if (empty($boxes)) { return ['result' => false, 'message' => "Ve vámi zvolený čas není dostupná žádná herní krabice požadované hry."]; } return ['result' => true, 'box' => array_shift(array_slice($boxes, 0, 1))]; }
public function doSmazat() { $id = $this->getParam('id'); if (Tables\Event::delete($this->pdo, $id)) { $this->message->info("Událost byla odstraněna"); } $this->redirectPars("rezervace", "vypis"); }