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));
} 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>