<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class supports Company Rooms
 *
 * @package    Membership Database
 * @category   Models
 * @author     Deon George
 * @copyright  (c) 2014 Deon George
 * @license    http://dev.leenooks.net/license.html
 */
class Model_Rooms extends ORM {
	protected $_has_many = array(
		'dates'=>array('model'=>'Room_Dates','far_key'=>'id','foreign_key'=>'room_id'),
	);

	public function room_dates(Model_Setup $so,$date,$days=0) {
		$result = array();

		$date_end = $date+$days*86400;
		$open_dates = $so->open_dates($date,$days);
		foreach ($this->dates->where('code','=','A')->where_startstop($date,$date_end)->find_all() as $o) {
			$x = $date;

			while ($x<$date_end) {
				// If we havent made the start date yet, we need to advance
				if (! $open_dates[$x]
					OR ($o->date_start > $x AND (is_null($o->date_stop) OR $o->date_stop > $date_end))
					OR ((is_null($o->date_start) OR $o->date_start > $x) AND $o->date_stop > $date_end)
					OR (! is_null($o->date_start) AND ! is_null($o->date_stop))) {

					if (! isset($result[$x]) OR ! $result[$x])
						$result[$x] = 0;

					$x += 86400;
					continue;
				}

				// Check that this record covers our current date
				if ($o->date_stop < $x AND ! is_null($o->date_stop))
					break;

				$result[$x] = $o->avail(date('w',$x));
				$x += 86400;
			}
		}

		// If we broke out and our date $days hasnt ben evaluated, we are closed
		while ($x<$date_end) {
			if (! isset($result[$x]) OR ! $result[$x])
				$result[$x] = 0;

			$x += 86400;
		}

		return $result;
	}
}
?>