/**
* Gets All of the venues for this PackageOption
*
* // TODO: this function is stupid
*
* @param string $date
* @return array of related Venue objects
*/
function getAllVenues() {
$dao = new DAO();
$query = "SELECT ven.* FROM venues ven
LEFT JOIN optionvenues ov ON ov.venue_id=ven.id
WHERE ven.option_id='$this->id'
ORDER BY rank";
$dao->exec($query);
if ($dao->error_message != 0) {
$this->errors[] = "Error getting venues: " . $dao->error_message;
return null;
}
//$sql = "SELECT venue_id FROM optionvenues
// WHERE option_id = '" . $this->id . "'
// ORDER BY rank";
//$dao->query($sql);
$venue_list = array();
while($row = $dao->getObject()) {
// $venue = new Venue();
// $venue->get($row->venue_id);
array_push($venue_list, $venue);
}
return $venue_list;
}
/**
* Vinny says "This function is not suppose to be used. If you want to
* check the avaiability of a venue use isAvailable()"
*
* @param string $date
* @param string $time
* @param int $num_people
* @return true if available, false if not
*/
function isDateAvailable($date='', $time='', $num_people) {
$dao = new DAO();
$dao2 = new DAO();
$sql = "SELECT * FROM esp_venue_availability WHERE date = '" . $date . "' AND venue_id = " . $this->id;
$dao->query($sql);
if(!$dao->numRows()) {
$week_day = strtolower(date("D", strtotime($date)));
$sql = "SELECT * FROM def_venue_availability WHERE day = '" . $week_day . "' AND venue_id = " . $this->id;
$dao->query($sql);
}
if($dao->numRows()) {
// Checks to see if the reservation time will be at least half-hour before the slot end time
$time_arr = explode(":", $time);
$time_minute = $time_arr[1] - 30;
if($time_minute < 0) {
$extra_hour = -1;
$time_minute = 60 + $time_minute;
} else {
$extra_hour = 0;
}
$time_hour = ($time_arr[0] + $extra_hour) > 0 ? ($time_arr[0] + $extra_hour) : 24 + ($time_arr[0] + $extra_hour);
$time_end = str_pad($time_hour,2,'0',STR_PAD_LEFT) . ":" . str_pad($time_minute,2,'0',STR_PAD_LEFT);
$row = $dao->getObject();
$available_slot = 0;
// Fix problems when time is after 24:00
// Checks to see which time slot this reservation matches
for($i = 1; $i <= 5; $i++) {
$start_time = "start_time".$i;
$end_time = "end_time".$i;
$start_time = explode(":",$row->$start_time);
$end_time = explode(":",$row->$end_time);
if($start_time[0] < 10) {
$start_time[0] += 24;
}
if($end_time[0] < 10) {
$end_time[0] += 24;
}
$start_time = str_pad($start_time[0],2,'0',STR_PAD_LEFT) . ":" . str_pad($start_time[1],2,'0',STR_PAD_LEFT);
$end_time = str_pad($end_time[0] ,2,'0',STR_PAD_LEFT) . ":" . str_pad($end_time[1],2,'0',STR_PAD_LEFT);
if($time >= $start_time && $time <= $end_time && $time_end <= $end_time) {
$available_slot = "total".$i;
}
}
// Check to see if the time matches any of the available slots
if($available_slot) {
$max_available = $row->$available_slot;
$sql = "SELECT SUM(num_people) AS total_people FROM venuebookings
WHERE
venue_id = " . $this->id . " AND
time_arrive >= '" . $time . "' AND
time_arrive <= '" . $time . "' ";
$dao2->query($sql);
$row2 = $dao2->getObject();
$booked_places = $row2->total_people;
// Checks to see if the total booked places + the number of people we want to put thet doesn't exceed to total available
if($max_available - $booked_places - $num_people >= 0) {
return true;
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
}