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;
}
</h1>

<?php 
    foreach ($reservierungen as $res_id) {
        //zuerst prüfen ob nicht mitlerweile eine andere buchung eingetragen wurde:
        $vonDatum = getDatumVon($res_id, $link);
        $bisDatum = getDatumBis($res_id, $link);
        $vonTag = getTagFromSQLDate($vonDatum);
        $vonMonat = getMonatFromSQLDate($vonDatum);
        $vonJahr = getJahrFromSQLDate($vonDatum);
        $bisTag = getTagFromSQLDate($bisDatum);
        $bisMonat = getMonatFromSQLDate($bisDatum);
        $bisJahr = getJahrFromSQLDate($bisDatum);
        $gast_id = getGastID($res_id, $link);
        $zimmer_id = getZimmerID($res_id, $link);
        if (isRoomTaken($zimmer_id, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link)) {
            ?>
	<div class="alert alert-info" role="alert">
		
		<h4><?php 
            echo getUebersetzung("Zu dieser Zeit ist bereits eine Buchung eingetragen!", $sprache, $link);
            ?>
</h4>
		<h4><?php 
            echo getUebersetzung("Bitte löschen sie zuerst bereits vorhandene Buchungen zu diesem Datum!", $sprache, $link);
            ?>
</h4>
	</div>
		
		<?php 
            showSubmitButtonWithForm("./index.php", getUebersetzung("zurück", $sprache, $link));
예제 #3
0
} else {
    //zuerst mal prüfen ob datum und so passt:
    //variableninitialisierungen:
    $datumVon = parseDateFormular($vonTag, $vonMonat, $vonJahr);
    $datumBis = parseDateFormular($bisTag, $bisMonat, $bisJahr);
    //wenn nicht ok:
    //1. zimmer ist zu dieser zeit belegt:
    $taken = false;
    if (!isset($zimmer_ids)) {
        $taken = isRoomTaken($zimmer_id, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link);
        //if the room is a parent room, check if the child rooms are taken:
        if (!$taken && hasChildRooms($zimmer_id)) {
            $childs = getChildRooms($zimmer_id);
            while ($c = mysqli_fetch_array($childs)) {
                $child_zi_id = $c['PK_ID'];
                $taken = isRoomTaken($child_zi_id, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link);
                if ($taken) {
                    break;
                }
            }
        }
    }
    if ($taken) {
        ?>
	<table border="0" cellpadding="0" cellspacing="0" class="tableColor">
	  <tr>
	    <td><p class="standardSchriftBold"><?php 
        echo getUebersetzung("Zu dieser Zeit ist es belegt!", $sprache, $link);
        ?>
</p>
	        <p class="standardSchriftBold"><?php 
        ?>
">
                            <input type="submit" name="Submit" class="btn btn-primary"
                                   value="<?php 
        echo getUebersetzung("zurück", $sprache, $link);
        ?>
"></form>
                    </div>
                </div>
                <div class="row">
                    <hr>
                </div>

                <?php 
    } else {
        if (isRoomTaken($zimmer_id, $vonTag, $vonMonat, $vonJahr, $bisTag, $bisMonat, $bisJahr, $link) && $status == 2) {
            ?>
                <div class="row">
                    <div class="col-sm-12">
                        <div class="alert alert-warning" role="alert">
                            <h4><?php 
            echo getUebersetzung("Zu diesem Datum existiert bereits eine Reservierung oder die Reservierungen überschneiden sich", $sprache, $link);
            ?>
                                !</h4>
                            <h4><?php 
            echo getUebersetzung("Bitte korrigieren Sie das Datum oder löschen Sie die bereits vorhandene Reservierung", $sprache, $link);
            ?>
                                !</h4>
                        </div>
                    </div>
                </div>