*/
if (!defined("IN_REGIONALED_VIEW")) {
    exit;
} elseif (!isset($_SESSION["isAuthorized"]) || !$_SESSION["isAuthorized"]) {
    header("Location: " . ENTRADA_URL);
    exit;
} elseif (!$ENTRADA_ACL->amIAllowed("regionaled", "read")) {
    $ONLOAD[] = "setTimeout('window.location=\\'" . ENTRADA_URL . "/" . $MODULE . "\\'', 15000)";
    $ERROR++;
    $ERRORSTR[] = "Your account does not have the permissions required to use this module.<br /><br />If you believe you are receiving this message in error please contact <a href=\"mailto:" . html_encode($AGENT_CONTACTS["administrator"]["email"]) . "\">" . html_encode($AGENT_CONTACTS["administrator"]["name"]) . "</a> for assistance.";
    echo display_error();
    application_log("error", "Group [" . $_SESSION["permissions"][$ENTRADA_USER->getAccessId()]["group"] . "] and role [" . $_SESSION["permissions"][$ENTRADA_USER->getAccessId()]["role"] . "] do not have access to this module [" . $MODULE . "]");
} else {
    $BREADCRUMB[] = array("url" => "", "title" => "Accommodation Details");
    $max_occupants = (int) $APARTMENT_INFO["max_occupants"];
    $apt_occupants = regionaled_apartment_occupants($APARTMENT_INFO["apartment_id"], $APARTMENT_INFO["inhabiting_start"], $APARTMENT_INFO["inhabiting_finish"]);
    $num_occupants = is_array($apt_occupants) ? count($apt_occupants) : 0;
    $apartment_address = ($APARTMENT_INFO["apartment_number"] != "" ? html_encode($APARTMENT_INFO["apartment_number"]) . "-" : "") . html_encode($APARTMENT_INFO["apartment_address"]) . "<br />\n";
    $apartment_address .= html_encode($APARTMENT_INFO["region_name"]) . ($APARTMENT_INFO["province"] ? ", " . html_encode($APARTMENT_INFO["province"]) : "") . "<br />\n";
    $apartment_address .= html_encode($APARTMENT_INFO["apartment_postcode"]) . ", " . html_encode($APARTMENT_INFO["country"]);
    /**
     * Only allow the confirm / reject code to run if the accommodation is
     * not already confirmed.
     */
    if (!$APARTMENT_INFO["confirmed"]) {
        switch ($ACTION) {
            case "accept":
                if ($db->AutoExecute(CLERKSHIP_DATABASE . ".apartment_schedule", array("confirmed" => 1), "UPDATE", "`aschedule_id` = " . $db->qstr($ASCHEDULE_ID) . " AND `apartment_id` = " . $db->qstr($APARTMENT_INFO["apartment_id"]) . " AND `proxy_id` = " . $db->qstr($ENTRADA_USER->getID()))) {
                    $SUCCESS++;
                    $SUCCESSSTR[] = "You have successfully confirmed your accommodation in this apartment from " . date(DEFAULT_DATE_FORMAT, $APARTMENT_INFO["inhabiting_start"]) . " until " . date(DEFAULT_DATE_FORMAT, $APARTMENT_INFO["inhabiting_finish"]) . ".";
                    $APARTMENT_INFO["confirmed"] = 1;
function regionaled_apartment_availability($apartment_ids = array(), $event_start = 0, $event_finish = 0)
{
    global $db;
    if (is_scalar($apartment_ids)) {
        if ((int) $apartment_ids) {
            $apartment_ids = array($apartment_ids);
        } else {
            $apartment_ids = array();
        }
    }
    $output = array();
    $output["openings"] = 0;
    $output["apartments"] = array();
    if (count($apartment_ids) && ($event_start = (int) $event_start) && ($event_finish = (int) $event_finish)) {
        $query = "\tSELECT a.*, b.`country`, c.`province`\n\t\t\t\t\tFROM `" . CLERKSHIP_DATABASE . "`.`apartments` AS a\n\t\t\t\t\tLEFT JOIN `global_lu_countries` AS b\n\t\t\t\t\tON b.`countries_id` = a.`countries_id`\n\t\t\t\t\tLEFT JOIN `global_lu_provinces` AS c\n\t\t\t\t\tON c.`province_id` = a.`province_id`\n\t\t\t\t\tWHERE a.`apartment_id` IN (" . implode(", ", $apartment_ids) . ")\n\t\t\t\t\tAND (a.`available_start` = '0' OR a.`available_start` <= " . $db->qstr($event_start) . ")\n\t\t\t\t\tAND (a.`available_finish` = '0' OR a.`available_finish` > " . $db->qstr($event_finish) . ")";
        $apartments = $db->GetAll($query);
        if ($apartments) {
            foreach ($apartments as $apartment) {
                $occupants = regionaled_apartment_occupants($apartment["apartment_id"], $event_start, $event_finish);
                $occupants_tmp = array();
                $occupancy_totals = array();
                $concurrent_occupants = 0;
                if ($occupants && is_array($occupants)) {
                    foreach ($occupants as $occupant) {
                        $concurrent_occupants = 1;
                        if (count($occupants_tmp)) {
                            foreach ($occupants_tmp as $tmp_occupant) {
                                if (($occupant["inhabiting_start"] >= $tmp_occupant["inhabiting_start"] || $occupant["inhabiting_finish"] >= $tmp_occupant["inhabiting_start"]) && $occupant["inhabiting_start"] <= $tmp_occupant["inhabiting_finish"]) {
                                    $concurrent_occupants++;
                                }
                            }
                        }
                        $occupants_tmp[] = $occupant;
                        $occupancy_totals[] = $concurrent_occupants;
                    }
                }
                if (count($occupancy_totals)) {
                    $concurrent_occupants = max($occupancy_totals);
                } else {
                    $concurrent_occupants = 0;
                }
                if ($concurrent_occupants < $apartment["max_occupants"]) {
                    $openings = $apartment["max_occupants"] - $concurrent_occupants;
                    $output["openings"] += $openings;
                    $output["apartments"][$apartment["apartment_id"]] = array("openings" => $openings, "occupants" => $occupants, "details" => $apartment);
                }
            }
        }
    }
    return $output;
}
$date = time();
$months = array($date, $date + 2629743, $date + 2629743 * 2, $date + 2629743 * 3);
$msg_body = "";
$contact_id = 0;
/*
 *  fetch the apartments
 */
$query = "\tSELECT a.`apartment_id`, \n\t\t\t\t   a.`apartment_title`, \n\t\t\t\t\tCONCAT_WS(' ',a.super_firstname, a.super_lastname) AS `super_full`, \n\t\t\t\t\t`super_email`, \n\t\t\t\t\tCONCAT_WS(' ',a.keys_firstname,a.keys_lastname) AS `keys_full`, \n\t\t\t\t\ta.`keys_email`,\n\t\t\t\t\tb.`region_name`,\n\t\t\t\t\tc.`department_id`,\n\t\t\t\t\tc.`department_title`\n\t\t\t\tFROM `" . CLERKSHIP_DATABASE . "`.`apartments` a\n\t\t\t\tJOIN `" . CLERKSHIP_DATABASE . "`.`regions` AS b\n\t\t\t\tON a.`region_id` = b.`region_id`\n\t\t\t\tLEFT JOIN `" . AUTH_DATABASE . "`.`departments` as c\n\t\t\t\tON a.`department_id` = c.`department_id`\n\t\t\t\tWHERE a.`available_finish` >= " . $db->qstr(time()) . "\n\t\t\t\tOR a.`available_finish` = 0\n\t\t\t\tGROUP BY a.`apartment_id`\n\t\t\t\tORDER BY a.`region_id`, `keys_full`";
if ($apartments = $db->GetAll($query)) {
    foreach ($apartments as $apartment) {
        $msg_body = "";
        $current_contact = $apartment["super_full"] != $apartment["keys_full"] & !empty($apartment["keys_full"]) ? $apartment["keys_full"] : $apartment["super_full"];
        $current_email = $apartment["super_full"] != $apartment["keys_full"] & !empty($apartment["keys_full"]) ? $apartment["keys_email"] : $apartment["super_email"];
        $messages[$current_email]["name"] = $current_contact;
        $messages[$current_email]["region_name"] = $apartment["region_name"];
        if ($occupants = regionaled_apartment_occupants($apartment["apartment_id"], $months[0], $months[3])) {
            $msg_body .= "The following learners are scheduled to stay in <strong>" . $apartment["apartment_title"] . "</strong>.<br /><br />";
            $occupants_list = "<table width=\"100%\" cellpadding=\"0\" border=\"1\">\n";
            $occupants_list .= "\t\t<td width=\"40%\" valign=\"top\"><strong>Occupant Name</strong></td>\n";
            $occupants_list .= "\t\t<td width=\"30%\" valign=\"top\"><strong>Starting Date</strong></td>\n";
            $occupants_list .= "\t\t<td width=\"30%\" valign=\"top\"><strong>Ending Date</strong></td>\n";
            $occupants_list .= "\t</tr>\n";
            foreach ($occupants as $occupant) {
                if (!empty($occupant["occupant_title"])) {
                    $occupant_name = $occupant["occupant_title"];
                } else {
                    $occupant_name = $occupant["fullname"];
                }
                $occupants_list .= "\t<tr>\n";
                $occupants_list .= "\t\t<td>" . $occupant_name . "</td>\n";
                $occupants_list .= "\t\t<td>" . date("l, F j, Y", $occupant["inhabiting_start"]) . "</td>\n";
    exit;
}
if ($EVENT_ID) {
    switch ($_SESSION["permissions"][$ENTRADA_USER->getAccessId()]["group"]) {
        case "student":
            /**
             * Add the accommodation issue sidebar item.
             */
            $sidebar_html = "<strong>Having issues?</strong> If you are having any problems with your accommodations that you would like to report please <a href=\"javascript:sendAccommodation('" . ENTRADA_URL . "/agent-accommodation.php')\" style=\"font-size: 11px; font-weight: bold\">click here</a>.\n";
            new_sidebar_item("Issue Reporting", $sidebar_html, "page-clerkship", "open");
            $query = "\tSELECT *\n\t\t\t\t\t\tFROM `" . CLERKSHIP_DATABASE . "`.`events` AS a\n\t\t\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`event_contacts` AS b\n\t\t\t\t\t\tON b.`event_id` = a.`event_id`\n\t\t\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`regions` AS c\n\t\t\t\t\t\tON c.`region_id` = a.`region_id`\n\t\t\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`apartment_schedule` AS d\n\t\t\t\t\t\tON d.`event_id` = a.`event_id`\n\t\t\t\t\t\tLEFT JOIN `" . CLERKSHIP_DATABASE . "`.`apartments` AS e\n\t\t\t\t\t\tON e.`apartment_id` = d.`apartment_id`\n\t\t\t\t\t\tWHERE a.`event_id` = " . $db->qstr($EVENT_ID) . "\n\t\t\t\t\t\tAND a.`event_status` = 'published'\n\t\t\t\t\t\tAND b.`econtact_type` = 'student'\n\t\t\t\t\t\tAND b.`etype_id` = " . $db->qstr($ENTRADA_USER->getActiveId()) . "\n\t\t\t\t\t\tAND d.`proxy_id` = " . $db->qstr($ENTRADA_USER->getActiveId()) . "\n\t\t\t\t\t\tAND d.`aschedule_status` = 'published'";
            $result = $db->GetRow($query);
            if ($result) {
                $BREADCRUMB[] = array("url" => "", "title" => "Rotation Details");
                $max_occupants = (int) $result["max_occupants"];
                $apt_occupants = regionaled_apartment_occupants($result["apartment_id"], $result["event_start"], $result["event_finish"]);
                $num_occupants = is_array($apt_occupants) ? count($apt_occupants) : 0;
                /**
                 * Determine whether the Google map can be shown.
                 */
                if (defined("GOOGLE_MAPS_API") && GOOGLE_MAPS_API != "") {
                    $show_google_map = true;
                } else {
                    $show_google_map = false;
                }
                if ($show_google_map) {
                    $HEAD[] = "<script type=\"text/javascript\" src=\"" . GOOGLE_MAPS_API . "\"></script>";
                    $ONLOAD[] = "displayGoogleMap()";
                    ?>
					<script type="text/javascript">
					var map = null;
} else {
    require_once "Entrada/calendar/calendar.class.php";
    $HEAD[] = "<script type=\"text/javascript\" src=\"" . ENTRADA_URL . "/javascript/calendar/script/xc2_timestamp.js\"></script>\n";
    $HEAD[] = "<link href=\"" . ENTRADA_RELATIVE . "/css/calendar.css?release=" . html_encode(APPLICATION_VERSION) . "\" rel=\"stylesheet\" type=\"text/css\" media=\"all\" />";
    /**
     * Check to see if user is requesting the calendar show a specific date.
     */
    if (isset($_GET["dstamp"]) && ($tmp_input = clean_input($_GET["dstamp"], array("nows", "int")))) {
        $timestamp = fetch_timestamps("month", $tmp_input);
    } else {
        $timestamp = fetch_timestamps("month", time());
    }
    $calendar = new Calendar();
    $calendar->setBaseUrl(ENTRADA_URL . "/admin/regionaled/apartments/manage");
    $calendar->setCharset(DEFAULT_CHARSET);
    $schedule = regionaled_apartment_occupants($APARTMENT_INFO["apartment_id"], $timestamp["start"], $timestamp["end"]);
    if ($schedule) {
        foreach ($schedule as $result) {
            $event = array();
            $event["timestamp_start"] = $result["inhabiting_start"];
            $event["timestamp_end"] = $result["inhabiting_finish"];
            switch ($result["occupant_type"]) {
                case "undergrad":
                    $event["calendar_id"] = 1;
                    break;
                case "postgrad":
                    $event["calendar_id"] = 2;
                    break;
                case "other":
                default:
                    $event["calendar_id"] = 0;