git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3362 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
parent
f53087fde1
commit
c2d6038228
7 changed files with 250 additions and 259 deletions
|
|
@ -5,7 +5,7 @@
|
|||
+ {{ total_price_per_night|number_format(2) }} €
|
||||
</td>
|
||||
<td class="st-position-name-col">
|
||||
({{ fewo_booking_request.numberDays }} {{ fewo_price.season.minimumStay < 2 ? 'Nacht' : 'Nächte' }} x {{ fewo_price.perNight|number_format(2) }} €)
|
||||
({{ fewo_booking_request.numberDays }} {{ fewo_booking_request.numberDays < 2 ? 'Nacht' : 'Nächte' }} x {{ fewo_price.perNight|number_format(2) }} €)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -168,18 +168,20 @@
|
|||
|
||||
<div class="form-box">
|
||||
<div class="">
|
||||
{#
|
||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||
<h5>Allgemeine Geschäftsbedingungen</h5>
|
||||
<div class="checkbox">
|
||||
{{ form_widget(form.acceptTerms) }}
|
||||
<label for="{{ form.acceptTerms.vars.id }}">
|
||||
Ich habe alles gelesen usw...
|
||||
Ich habe alle Daten und Angaben auf Richtigkeit überprüft. Ich habe die
|
||||
<a href="/uploads/{{ terms_filename }}" target="_blank">
|
||||
Allgemeinen Geschäftsbedingungen des Reisevermittlers
|
||||
</a>
|
||||
gelesen und akzeptiert. Zugleich erkenne ich diese für alle Reiseteilnehmer an.
|
||||
</label>
|
||||
{{ form_errors(form.acceptTerms) }}
|
||||
</div>
|
||||
</div>
|
||||
#}
|
||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||
<button type="submit" value="SEND" id="submit"
|
||||
class="aligncenter btn btn-primary btn-lg border-radius"
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ class FewoBookingController extends Controller
|
|||
|
||||
$timeDiff = date_diff($finalFromDate, $finalToDate);
|
||||
|
||||
$numberDays = $timeDiff->days + 1;
|
||||
$numberDays = $timeDiff->days; // todo: evtl umbenennen, damit es eindeutig für Nächte und nicht mehr für Tage verwendet wird
|
||||
|
||||
$fewoBookingRequest->setNumberDays($numberDays);
|
||||
$fewoBookingRequest->setLodging($lodging);
|
||||
|
|
@ -246,6 +246,7 @@ class FewoBookingController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
// GET
|
||||
return $this->render('default/pages/fewoBooking.html.twig', [
|
||||
'form' => $form->createView(),
|
||||
'fewo_booking_request' => $fewoBookingRequest,
|
||||
|
|
@ -259,6 +260,7 @@ class FewoBookingController extends Controller
|
|||
'allowed_to_dates' => implode(';', $allowedToDateStrs),
|
||||
'page' => $fewoTravelProgramPage,
|
||||
'show_search_sidebar_widget' => false,
|
||||
'terms_filename' => $this->getDoctrine()->getRepository('AppBundle:TravelOrganizer')->find(1)->getFileName(),
|
||||
]);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,6 +119,7 @@ class FewoBookingRequestType extends AbstractType
|
|||
->add('fax')
|
||||
->add('email')
|
||||
->add('notes', TextareaType::class, ['required' => false])
|
||||
->add('acceptTerms', CheckboxType::class, ['required' => true])
|
||||
;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ class FileManager
|
|||
|
||||
$file->move($this->getTargetDir(), $fileName);
|
||||
$path = $this->getTargetDir() .'/'. $fileName;
|
||||
// Ermittle Breite, Höhe und Typ des Originalbildes
|
||||
$imgInfo = getimagesize($path);
|
||||
if ($imgInfo !== false)
|
||||
{
|
||||
|
|
@ -37,7 +38,11 @@ class FileManager
|
|||
}
|
||||
if (isset($src))
|
||||
{
|
||||
$tmp = imagecreatetruecolor(848, 280);
|
||||
$destWidth = min(2 * self::MAX_DEST_WIDTH, $srcWidth);
|
||||
|
||||
$destHeight = $destWidth * $srcHeight / $srcWidth;
|
||||
|
||||
/*
|
||||
$destWidth = self::MAX_DEST_HEIGHT * $srcWidth / $srcHeight;
|
||||
if ($destWidth < self::MAX_DEST_WIDTH)
|
||||
{
|
||||
|
|
@ -52,8 +57,15 @@ class FileManager
|
|||
$destX = ($destWidth - self::MAX_DEST_WIDTH) / 2;
|
||||
$destY = 0;
|
||||
}
|
||||
imagecopyresampled($tmp, $src, 0, 0, $destX, $destY,
|
||||
*/
|
||||
|
||||
// Breite: MIN(2*848,$srcWidth); Höhe ergibt sich aus Seitenverhältnis d. Originalbildes
|
||||
$tmp = imagecreatetruecolor($destWidth, $destHeight);
|
||||
|
||||
|
||||
imagecopyresampled($tmp, $src, 0, 0, 0, 0,
|
||||
$destWidth, $destHeight, $srcWidth, $srcHeight);
|
||||
|
||||
$newFileName = md5(uniqid()) .'.jpg';
|
||||
if (imagejpeg($tmp, $this->getTargetDir() .'/'. $newFileName, 80))
|
||||
{
|
||||
|
|
@ -67,7 +79,6 @@ class FileManager
|
|||
|
||||
return $fileName;
|
||||
}
|
||||
|
||||
public function delete(FewoLodgingImage $image)
|
||||
{
|
||||
$filesystem = new Filesystem();
|
||||
|
|
|
|||
|
|
@ -35,23 +35,31 @@ class LodgingCalendarService
|
|||
|
||||
setlocale(LC_TIME, "german");
|
||||
|
||||
$yearTurned = false;
|
||||
$yearsTurned = 0;
|
||||
|
||||
for($m = $currentMonth; $m < ($currentMonth + $months); $m++)
|
||||
{
|
||||
if($m < 13)
|
||||
$actualMonth = $m % 12;
|
||||
|
||||
if($actualMonth == 0)
|
||||
{
|
||||
$actualMonth = $m;
|
||||
$actualCurrentYear = $currentYear;
|
||||
}
|
||||
else
|
||||
{
|
||||
$actualMonth = $m % 12;
|
||||
$actualCurrentYear = $currentYear + 1;
|
||||
$actualMonth = 12;
|
||||
$yearTurned = true;
|
||||
}
|
||||
|
||||
$date = getdate(mktime(0,0,0, $actualMonth, 1, $actualCurrentYear));
|
||||
$actualYear = $currentYear + $yearsTurned;
|
||||
|
||||
if($yearTurned)
|
||||
{
|
||||
$yearsTurned = $yearsTurned + 1;
|
||||
$yearTurned = false;
|
||||
}
|
||||
|
||||
$date = getdate(mktime(0,0,0, $actualMonth, 1, $actualYear));
|
||||
$weekDay = $weekDays[$date['wday']];
|
||||
|
||||
$numberDays = $this->daysInMonth($actualMonth, $actualCurrentYear);
|
||||
$numberDays = $this->daysInMonth($actualMonth, $actualYear);
|
||||
$data = null;
|
||||
|
||||
$actualStartingWeekDay = $date['wday'];
|
||||
|
|
@ -105,8 +113,8 @@ class LodgingCalendarService
|
|||
$calendar[] = [
|
||||
'numberDays' => $numberDays,
|
||||
'monthNumber' => $actualMonth,
|
||||
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualCurrentYear))),
|
||||
'year' => $actualCurrentYear,
|
||||
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualYear))),
|
||||
'year' => $actualYear,
|
||||
'startWeekDay' => $weekDay,
|
||||
'data' => $data,
|
||||
'marked' => 0
|
||||
|
|
@ -127,23 +135,31 @@ class LodgingCalendarService
|
|||
|
||||
setlocale(LC_TIME, "german");
|
||||
|
||||
$yearTurned = false;
|
||||
$yearsTurned = 0;
|
||||
|
||||
for($m = $currentMonth; $m < ($currentMonth + $months); $m++)
|
||||
{
|
||||
if($m < 13)
|
||||
$actualMonth = $m % 12;
|
||||
|
||||
if($actualMonth == 0)
|
||||
{
|
||||
$actualMonth = $m;
|
||||
$actualCurrentYear = $currentYear;
|
||||
}
|
||||
else
|
||||
{
|
||||
$actualMonth = $m % 12;
|
||||
$actualCurrentYear = $currentYear + 1;
|
||||
$actualMonth = 12;
|
||||
$yearTurned = true;
|
||||
}
|
||||
|
||||
$date = getdate(mktime(0,0,0, $actualMonth, 1, $actualCurrentYear));
|
||||
$actualYear = $currentYear + $yearsTurned;
|
||||
|
||||
if($yearTurned)
|
||||
{
|
||||
$yearsTurned = $yearsTurned + 1;
|
||||
$yearTurned = false;
|
||||
}
|
||||
|
||||
$date = getdate(mktime(0,0,0, $actualMonth, 1, $actualYear));
|
||||
$weekDay = $weekDays[$date['wday']];
|
||||
|
||||
$numberDays = $this->daysInMonth($actualMonth, $actualCurrentYear);
|
||||
$numberDays = $this->daysInMonth($actualMonth, $actualYear);
|
||||
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = null;
|
||||
|
|
@ -160,7 +176,7 @@ class LodgingCalendarService
|
|||
$day->setIsReservationBegin(false);
|
||||
$day->setIsReservationEnd(false);
|
||||
$datetime = new \DateTime();
|
||||
$datetime->setTimestamp(mktime(0,0,0, $actualMonth, $d, $actualCurrentYear));
|
||||
$datetime->setTimestamp(mktime(0,0,0, $actualMonth, $d, $actualYear));
|
||||
$day->setDate($datetime);
|
||||
|
||||
$data[] = $day;
|
||||
|
|
@ -169,8 +185,8 @@ class LodgingCalendarService
|
|||
$calendar[] = [
|
||||
'numberDays' => $numberDays,
|
||||
'monthNumber' => $actualMonth,
|
||||
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualCurrentYear))),
|
||||
'year' => $actualCurrentYear,
|
||||
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualYear))),
|
||||
'year' => $actualYear,
|
||||
'startWeekDay' => $weekDay,
|
||||
'data' => $data,
|
||||
'marked' => 0
|
||||
|
|
@ -193,7 +209,9 @@ class LodgingCalendarService
|
|||
$curMonthDate->setDate($curMonthDate->format('Y'), $curMonthDate->format('n'), 1);
|
||||
$seasonMonthDate = new \DateTime($latestSeason->getToDate()->format('Y-m-d'));
|
||||
$seasonMonthDate->setDate($seasonMonthDate->format('Y'), $seasonMonthDate->format('n'), 1);
|
||||
return 2 + intval($seasonMonthDate->diff($curMonthDate)->format('%m'));
|
||||
$dateInterval = $seasonMonthDate->diff($curMonthDate);
|
||||
$month = intval($dateInterval->format('%m')) + (intval($dateInterval->format('%y')) * 12);
|
||||
return 2 + $month;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -224,12 +242,12 @@ class LodgingCalendarService
|
|||
return $ret;
|
||||
}
|
||||
|
||||
private function getMonthIndex($calendar, $month)
|
||||
private function getMonthIndex($calendar, $month, $year)
|
||||
{
|
||||
$result = 0;
|
||||
for($i = 0; $i < count($calendar); $i++)
|
||||
{
|
||||
if($calendar[$i]['monthNumber'] == $month)
|
||||
if($calendar[$i]['monthNumber'] == $month && $calendar[$i]['year'] == $year)
|
||||
{
|
||||
$result = $i;
|
||||
break;
|
||||
|
|
@ -262,185 +280,191 @@ class LodgingCalendarService
|
|||
$todayYear = $today->format('Y');
|
||||
|
||||
|
||||
if($startMonth < $todayMonth && $startYear == $todayYear)
|
||||
if ($endMonth >= $todayMonth || ($todayMonth == 12 && $endMonth >= 1 && ($todayYear < $endYear))) //($toDate > $today)
|
||||
{
|
||||
$startDay = 1;
|
||||
$startMonth = $today->format('n');
|
||||
$startYear = $today->format('Y');
|
||||
}
|
||||
|
||||
$startCalendarIndex = $this->getMonthIndex($calendar, $startMonth);
|
||||
$endCalendarIndex = $this->getMonthIndex($calendar, $endMonth);
|
||||
|
||||
|
||||
// anfang und ende innerhalb eines monats
|
||||
if($startCalendarIndex == $endCalendarIndex)
|
||||
{
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$startCalendarIndex]['data'];
|
||||
|
||||
$calendar[$startCalendarIndex]['marked'] = 1;
|
||||
|
||||
$startIndex = $startDay - 1;
|
||||
$endIndex = $endDay - 1;
|
||||
|
||||
for ($i = $startIndex; $i <= $endIndex; $i++)
|
||||
if($fromDate < $today)
|
||||
{
|
||||
if ($reservationMode)
|
||||
{
|
||||
if ($i == $startIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationBegin(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
elseif ($i == $endIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationEnd(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
//$data[$i]->setIsBookable(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(false);
|
||||
$data[$i]->setPrice($price);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
$startDay = 1;
|
||||
$startMonth = $today->format('n');
|
||||
$startYear = $today->format('Y');
|
||||
}
|
||||
$calendar[$startCalendarIndex]['data'] = $data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// erster monat
|
||||
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$startCalendarIndex]['data'];
|
||||
// wenn sich der Kalender über mehrere Jahre zieht, könnte es hier zu Problemen kommen
|
||||
$startCalendarIndex = $this->getMonthIndex($calendar, $startMonth, $startYear);
|
||||
$endCalendarIndex = $this->getMonthIndex($calendar, $endMonth, $endYear);
|
||||
|
||||
$calendar[$startCalendarIndex]['marked'] = 1;
|
||||
|
||||
$startIndex = $startDay - 1;
|
||||
|
||||
$endIndex = count($data) - 1;
|
||||
for($i = $startIndex; $i <= $endIndex; $i++)
|
||||
{
|
||||
if ($reservationMode)
|
||||
{
|
||||
if ($i == $startIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationBegin(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(false);
|
||||
$data[$i]->setPrice($price);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
$calendar[$startCalendarIndex]['data'] = $data;
|
||||
|
||||
// letzter monat
|
||||
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$endCalendarIndex]['data'];
|
||||
|
||||
$calendar[$endCalendarIndex]['marked'] = 1;
|
||||
|
||||
$startIndex = 0;
|
||||
$endIndex = $endDay - 1;
|
||||
for($i = $startIndex; $i <= $endIndex; $i++)
|
||||
{
|
||||
|
||||
if ($reservationMode)
|
||||
{
|
||||
if ($i == $endIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationEnd(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
//$data[$i]->setIsBookable(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(false);
|
||||
$data[$i]->setPrice($price);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
$calendar[$endCalendarIndex]['data'] = $data;
|
||||
|
||||
|
||||
// alle monate dazwischen
|
||||
for($i = $startCalendarIndex + 1; $i < $endCalendarIndex; $i++)
|
||||
// anfang und ende innerhalb eines monats
|
||||
if($startCalendarIndex == $endCalendarIndex)
|
||||
{
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$i]['data'];
|
||||
$data = $calendar[$startCalendarIndex]['data'];
|
||||
|
||||
$calendar[$i]['marked'] = 1;
|
||||
$calendar[$startCalendarIndex]['marked'] = 1;
|
||||
|
||||
$startIndex = 0;
|
||||
$endIndex = count($data) - 1;
|
||||
for($j = $startIndex; $j <= $endIndex; $j++)
|
||||
// hier geht man von ungepaddeten Kalendermonaten aus
|
||||
$startIndex = $startDay - 1;
|
||||
$endIndex = $endDay - 1;
|
||||
|
||||
for ($i = $startIndex; $i <= $endIndex; $i++)
|
||||
{
|
||||
if ($reservationMode)
|
||||
{
|
||||
$data[$j]->setIsReserved(true);
|
||||
$data[$j]->setReservation($reservation);
|
||||
$data[$j]->setIsInSeason(true);
|
||||
$data[$j]->setIsBookable(false);
|
||||
if ($i == $startIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationBegin(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
elseif ($i == $endIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationEnd(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
//$data[$i]->setIsBookable(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$j]->setIsReserved(false);
|
||||
$data[$j]->setPrice($price);
|
||||
$data[$j]->setIsInSeason(true);
|
||||
$data[$j]->setIsBookable(false);
|
||||
$data[$i]->setIsReserved(false);
|
||||
$data[$i]->setPrice($price);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
$calendar[$i]['data'] = $data;
|
||||
$calendar[$startCalendarIndex]['data'] = $data;
|
||||
}
|
||||
else
|
||||
{
|
||||
// erster monat
|
||||
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$startCalendarIndex]['data'];
|
||||
|
||||
$calendar[$startCalendarIndex]['marked'] = 1;
|
||||
|
||||
$startIndex = $startDay - 1;
|
||||
|
||||
$endIndex = count($data) - 1;
|
||||
for($i = $startIndex; $i <= $endIndex; $i++)
|
||||
{
|
||||
if ($reservationMode)
|
||||
{
|
||||
if ($i == $startIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationBegin(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(false);
|
||||
$data[$i]->setPrice($price);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
$calendar[$startCalendarIndex]['data'] = $data;
|
||||
|
||||
// letzter monat
|
||||
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$endCalendarIndex]['data'];
|
||||
|
||||
$calendar[$endCalendarIndex]['marked'] = 1;
|
||||
|
||||
$startIndex = 0;
|
||||
$endIndex = $endDay - 1;
|
||||
for($i = $startIndex; $i <= $endIndex; $i++)
|
||||
{
|
||||
|
||||
if ($reservationMode)
|
||||
{
|
||||
if ($i == $endIndex)
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setIsReservationEnd(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
//$data[$i]->setIsBookable(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(true);
|
||||
$data[$i]->setReservation($reservation);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$i]->setIsReserved(false);
|
||||
$data[$i]->setPrice($price);
|
||||
$data[$i]->setIsInSeason(true);
|
||||
$data[$i]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
$calendar[$endCalendarIndex]['data'] = $data;
|
||||
|
||||
|
||||
// alle monate dazwischen
|
||||
for($i = $startCalendarIndex + 1; $i < $endCalendarIndex; $i++)
|
||||
{
|
||||
/** @var CalendarDayState[] $data */
|
||||
$data = $calendar[$i]['data'];
|
||||
|
||||
$calendar[$i]['marked'] = 1;
|
||||
|
||||
$startIndex = 0;
|
||||
$endIndex = count($data) - 1;
|
||||
for($j = $startIndex; $j <= $endIndex; $j++)
|
||||
{
|
||||
if ($reservationMode)
|
||||
{
|
||||
$data[$j]->setIsReserved(true);
|
||||
$data[$j]->setReservation($reservation);
|
||||
$data[$j]->setIsInSeason(true);
|
||||
$data[$j]->setIsBookable(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$data[$j]->setIsReserved(false);
|
||||
$data[$j]->setPrice($price);
|
||||
$data[$j]->setIsInSeason(true);
|
||||
$data[$j]->setIsBookable(false);
|
||||
}
|
||||
}
|
||||
$calendar[$i]['data'] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $calendar;
|
||||
}
|
||||
|
||||
private function mergeCalendars($calendar, $extensionCalendar, $withFromTo = false)
|
||||
// in der Regel: calendar = pricesCalendar; extensionCalendar = reservationsCalendar
|
||||
private function mergeCalendars($calendar, $extensionCalendar)
|
||||
{
|
||||
for($i = 0; $i < count($calendar); $i++)
|
||||
{
|
||||
|
|
@ -454,71 +478,23 @@ class LodgingCalendarService
|
|||
|
||||
for($j = 0; $j < $endIndex; $j++)
|
||||
{
|
||||
if ($withFromTo)
|
||||
{
|
||||
if ($extensionCalendarData[$j]->getIsInSeason())
|
||||
{
|
||||
//$calendarData[$j] = $extensionCalendarData[$j];
|
||||
$price = $extensionCalendarData[$j]->getPrice();
|
||||
$calendarData[$j]->setIsInSeason(true);
|
||||
$calendarData[$j]->setPrice($price);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($extensionCalendarData[$j]->getIsReserved())
|
||||
{
|
||||
// braucht man das überhaupt noch?
|
||||
if ($withFromTo)
|
||||
$price = $calendarData[$j]->getPrice();
|
||||
//$isInSeason = $calendarData[$j]->getIsInSeason();
|
||||
$reservation = $calendarData[$j]->getReservation();
|
||||
$calendarData[$j] = $extensionCalendarData[$j];
|
||||
|
||||
if ($calendarData[$j]->getIsReservationEnd() && $extensionCalendarData[$j]->getIsReservationBegin())
|
||||
{
|
||||
// zweite runde $actuallyReservableDaysCalendar merge mit $reservationsCalendar
|
||||
|
||||
if (!($calendarData[$j]->getIsBookable() && $extensionCalendarData[$j]->getIsReservationEnd()))
|
||||
{
|
||||
//$calendarData[$j] = $extensionCalendarData[$j];
|
||||
|
||||
$price = $calendarData[$j]->getPrice();
|
||||
|
||||
//$calendarData[$j] = $extensionCalendarData[$j];// todo
|
||||
$calendarData[$j]->setIsBookable(false);
|
||||
$calendarData[$j]->setIsReserved(true);
|
||||
$calendarData[$j]->setReservation($extensionCalendarData[$j]->getReservation());
|
||||
|
||||
$calendarData[$j]->setIsReservationBegin($extensionCalendarData[$j]->getIsReservationBegin());
|
||||
$calendarData[$j]->setIsReservationEnd($extensionCalendarData[$j]->getIsReservationEnd());
|
||||
|
||||
|
||||
|
||||
if ($calendarData[$j]->getIsReservationEnd() && $extensionCalendarData[$j]->getIsReservationBegin())
|
||||
{
|
||||
$calendarData[$j]->setIsReservationBegin(false);
|
||||
$calendarData[$j]->setIsReservationEnd(false);
|
||||
}
|
||||
|
||||
$calendarData[$j]->setIsInSeason(true);
|
||||
$calendarData[$j]->setPrice($price);
|
||||
}
|
||||
$calendarData[$j]->setReservation($reservation);
|
||||
$calendarData[$j]->setIsReservationBegin(false);
|
||||
$calendarData[$j]->setIsReservationEnd(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// erste runde $pricesCalendar merge mit $reservationsCalendar
|
||||
|
||||
$price = $calendarData[$j]->getPrice();
|
||||
$isInSeason = $calendarData[$j]->getIsInSeason();
|
||||
$reservation = $calendarData[$j]->getReservation();
|
||||
$calendarData[$j] = $extensionCalendarData[$j];
|
||||
|
||||
if ($calendarData[$j]->getIsReservationEnd() && $extensionCalendarData[$j]->getIsReservationBegin())
|
||||
{
|
||||
$calendarData[$j]->setReservation($reservation);
|
||||
$calendarData[$j]->setIsReservationBegin(false);
|
||||
$calendarData[$j]->setIsReservationEnd(false);
|
||||
}
|
||||
|
||||
/** @var FewoPrice $price */
|
||||
$calendarData[$j]->setIsInSeason(true);
|
||||
$calendarData[$j]->setPrice($price);
|
||||
}
|
||||
/** @var FewoPrice $price */
|
||||
$calendarData[$j]->setIsInSeason(true);
|
||||
$calendarData[$j]->setPrice($price);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -698,15 +674,14 @@ class LodgingCalendarService
|
|||
|
||||
foreach($reservations as $reservation)
|
||||
{
|
||||
$reservationId = $reservation->getId();
|
||||
$appendix = ','.$reservationId;
|
||||
$fromDate = $reservation->getFromDate();
|
||||
$toDate = $reservation->getToDate();
|
||||
|
||||
$reservationsCalendar = $this->markCalendarDays($reservationsCalendar, $fromDate, $toDate, true, null, $reservation); //TODO fast fertig
|
||||
$reservationsCalendar = $this->markCalendarDays($reservationsCalendar, $fromDate, $toDate,
|
||||
true, null, $reservation); //TODO fast fertig
|
||||
}
|
||||
|
||||
$mergedPricesAndReservationsCalendar = $this->mergeCalendars($pricesCalendar, $reservationsCalendar, false);
|
||||
$mergedPricesAndReservationsCalendar = $this->mergeCalendars($pricesCalendar, $reservationsCalendar);
|
||||
$actuallyReservableDaysCalendar = $this->filterReservableDays($lodging, $mergedPricesAndReservationsCalendar);
|
||||
//$resultCalendar = $this->mergeCalendars($actuallyReservableDaysCalendar, $reservationsCalendar, true);
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class FewoBookingRequestValidator extends ConstraintValidator
|
|||
$reservations = $lodging->getReservations();
|
||||
|
||||
$timeDiff = date_diff($fromDate, $toDate);
|
||||
$numberDays = $timeDiff->days + 1;
|
||||
$numberDays = $timeDiff->days;
|
||||
|
||||
$withinSeason = false;
|
||||
$alreadyReserved = false;
|
||||
|
|
@ -94,7 +94,7 @@ class FewoBookingRequestValidator extends ConstraintValidator
|
|||
|
||||
if($numberDays < $season->getMinimumStay())
|
||||
{
|
||||
$this->context->buildViolation("Mindestanzahl an Tagen nicht erreicht!")
|
||||
$this->context->buildViolation("Mindestanzahl an Nächten nicht erreicht!")
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue