function getFreieZimmer($unterkunft_id, $anzahlErwachsene, $anzahlKinder, $anzahlZimmer, $haustiere, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link)
{
    //leeres array erzeugen zum speichern der freien zimmer:
    $freieZimmer = array();
    //variable zum zaehlen der erwachsenenBetten, kinderBetten, freie zimmer
    $bettenErw = 0;
    $bettenKin = 0;
    $freieZi = 0;
    //reservierungs-funktionen einbinden:
    include_once "../include/reservierungFunctions.php";
    //zimmer-funktionen hinzufügen:
    include_once "../include/zimmerFunctions.php";
    //properties hinzufügen:
    include_once "../include/propertiesFunctions.php";
    //alle zimmer der unterkunft auslesen und prüfen ob es im angegebenen zeitraum noch frei ist:
    $query = "\n\t\t\tSELECT \n\t\t\tPK_ID\t\t\n\t\t\tFROM\n\t\t\tRezervi_Zimmer\n\t\t\tWHERE\n\t\t\tFK_Unterkunft_ID = '{$unterkunft_id}'\t\n\t\t\tORDER BY\n\t\t\tZimmernr\n\t\t";
    $res = mysqli_query($link, $query);
    while ($d = mysqli_fetch_array($res)) {
        //zimmer-id holen:
        $zi_id = $d["PK_ID"];
        //wenn die suche nach erwachsenen oder kindern nach zimmern gefiltert
        //werden soll (z. b. ferienhäuser nur mit bestimmter personenanzahl):
        //dont check it if the accomodation has rooms and subrooms:
        if (!hasParentRooms($unterkunft_id)) {
            if (getPropertyValue(SUCHFILTER_ZIMMER, $unterkunft_id, $link) == "true") {
                if ($anzahlErwachsene > -1) {
                    if (getBetten($unterkunft_id, $zi_id, $link) < $anzahlErwachsene) {
                        continue;
                    }
                }
                if ($anzahlKinder > -1) {
                    if (getBettenKinder($unterkunft_id, $zi_id, $link) < $anzahlKinder) {
                        continue;
                    }
                }
            }
        }
        if (!isRoomTaken($zi_id, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link)) {
            //zimmer ist noch frei - dem array hinzufügen:
            $freieZimmer[] = $zi_id;
            $freieZi++;
            //zaehlen wie viele erwachsene und kinder platz haben:
            $bettenErw = $bettenErw + getBetten($unterkunft_id, $zi_id, $link);
            //echo("anzahlBetten insgesamt Erw =".$bettenErw."<br/>");
            $bettenKin = $bettenKin + getBettenKinder($unterkunft_id, $zi_id, $link);
            //echo("anzahlBetten insgesamt Kin =".$bettenKin."<br/>");
        }
    }
    if ($anzahlErwachsene > -1) {
        //checken ob genug betten fuer erwachsene frei sind:
        if ($anzahlErwachsene > $bettenErw) {
            //es sind nicht genug betten fuer erwachsene frei!
            $freieZimmer[0] = -1;
        }
    }
    if ($anzahlKinder > -1) {
        //wieviele betten sind noch frei wenn ich die erwachsenen reingelegt habe?
        if ($anzahlErwachsene > -1) {
            $insgesamtBettenFrei = $bettenErw + $bettenKin - $anzahlErwachsene;
        } else {
            $insgesamtBettenFrei = $bettenErw + $bettenKin;
        }
        //checken ob genug betten fuer kinder frei sind:
        if ($anzahlKinder > $insgesamtBettenFrei) {
            //echo("nicht genug betten fuer kinder!<br/>");
            $freieZimmer[0] = -2;
        }
    }
    if ($anzahlZimmer > -1) {
        //checken ob genug zimmer insgesamt frei sind:
        if ($anzahlZimmer > $freieZi) {
            $freieZimmer[0] = -3;
        }
    }
    //check if a parent-child relation exists and remove the parent if the child is not free:
    $freeRooms = array();
    if (count($freieZimmer) > 0 && hasParentRooms($unterkunft_id) && getPropertyValue(RES_HOUSE, $unterkunft_id, $link) == "true") {
        global $root;
        include_once $root . "/include/zimmerFunctions.php";
        foreach ($freieZimmer as $freeRoom) {
            $count = 0;
            $count2 = 0;
            //is the room a parent room?
            if (hasChildRooms($freeRoom)) {
                //the room is a parent room, check if ALL the children are free rooms
                $childs = getChildRooms($freeRoom);
                while ($c = mysqli_fetch_array($childs)) {
                    $count2++;
                    for ($i = 0; $i < count($freieZimmer); $i++) {
                        if ($freieZimmer[$i] == $c['PK_ID']) {
                            $count++;
                        }
                    }
                }
                if ($count == $count2) {
                    $freeRooms[] = $freeRoom;
                }
            } else {
                $freeRooms[] = $freeRoom;
            }
        }
    } else {
        if (count($freieZimmer) > 0 && hasParentRooms($unterkunft_id) && getPropertyValue(RES_HOUSE, $unterkunft_id, $link) != "true") {
            global $root;
            include_once $root . "/include/zimmerFunctions.php";
            include_once $root . "/include/reservierungFunctions.php";
            foreach ($freieZimmer as $freeRoom) {
                $count = 0;
                $count2 = 0;
                //is the room a parent room?
                if (hasChildRooms($freeRoom)) {
                    //the room is a parent room, check if ALL the children are occupied:
                    $childs = getChildRooms($freeRoom);
                    $allOcc = true;
                    while ($c = mysqli_fetch_array($childs)) {
                        $chid = $c['PK_ID'];
                        //if the child is not occupied -> set to false!
                        $taken = isRoomTaken($chid, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link);
                        if (!$taken) {
                            $allOcc = false;
                            break;
                        }
                    }
                    if (!$allOcc) {
                        $freeRooms[] = $freeRoom;
                    }
                } else {
                    $freeRooms[] = $freeRoom;
                }
            }
        } else {
            $freeRooms = $freieZimmer;
        }
    }
    //checken ob genug zimmer insgesamt frei sind:
    if (count($freeRooms) < 1) {
        $freeRooms[0] = -3;
    }
    return $freeRooms;
}
$anzahlZimmer = $_POST["anzahlZimmer"];
$anzahlErwachsene = $_POST["anzahlErwachsene"];
if (isset($_POST["anzahlKinder"]) && $_POST["anzahlKinder"] > 0) {
    $anzahlKinder = $_POST["anzahlKinder"];
} else {
    $anzahlKinder = false;
}
if (isset($_POST["haustiere"]) && $_POST["haustiere"] > 0) {
    $haustiere = $_POST["haustiere"];
} else {
    $haustiere = false;
}
$zimmer_id = getSessionWert(ZIMMER_ID);
$zi_ids = $zimmer_id;
$anzahlTage = numberOfDays($vonMonat, $vonTag, $vonJahr, $bisMonat, $bisTag, $bisJahr);
if (hasParentRooms($unterkunft_id) && getPropertyValue(SEARCH_SHOW_PARENT_ROOM, $unterkunft_id, $link) == "true") {
    $parentsRes = getParentRooms();
    $zimmerIdsParents = array();
    while ($p = mysqli_fetch_array($parentsRes)) {
        $i = $p["PK_ID"];
        if ($_POST['parent_room_' . $i] && $_POST['parent_room_' . $i] == "true") {
            $zimmerIdsParents[] = $i;
        }
        //end if post parent room
    }
    //end while parent rooms
    if (count($zimmerIdsParents) > 0) {
        $zi_ids = $zimmerIdsParents;
    }
}
//end if has parent rooms
/**
returns all parent rooms
* */
function getParentRooms()
{
    global $link;
    global $unterkunft_id;
    if (hasParentRooms($unterkunft_id)) {
        $query = "select * from Rezervi_Zimmer where Parent_ID is null";
        $res = mysqli_query($link, $query);
        if (!$res) {
            echo "die Anfrage {$query} scheitert";
            return false;
        } else {
            return $res;
        }
    }
    return false;
}
Ejemplo n.º 4
0
        }
        ?>
>
                    <?php 
        echo $nachricht;
        ?>
                </div>


                <?php 
    }
    ?>
            <form action="./index.php" method="post" target="_self">

                <?php 
    if (hasParentRooms($unterkunft_id)) {
        ?>
                    <div class="well">
                        <div class="row">
                            <div class="col-sm-12">
                                <label class="control-label">
                                    <?php 
        $text = "Bestehende Zuweisungen:";
        ?>
                                    <?php 
        echo getUebersetzung($text, $sprache, $link);
        ?>
                                </label>
                            </div>
                        </div>