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) }} €
|
+ {{ total_price_per_night|number_format(2) }} €
|
||||||
</td>
|
</td>
|
||||||
<td class="st-position-name-col">
|
<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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
||||||
|
|
@ -168,18 +168,20 @@
|
||||||
|
|
||||||
<div class="form-box">
|
<div class="form-box">
|
||||||
<div class="">
|
<div class="">
|
||||||
{#
|
|
||||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||||
<h5>Allgemeine Geschäftsbedingungen</h5>
|
<h5>Allgemeine Geschäftsbedingungen</h5>
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
{{ form_widget(form.acceptTerms) }}
|
{{ form_widget(form.acceptTerms) }}
|
||||||
<label for="{{ form.acceptTerms.vars.id }}">
|
<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>
|
</label>
|
||||||
{{ form_errors(form.acceptTerms) }}
|
{{ form_errors(form.acceptTerms) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
#}
|
|
||||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||||
<button type="submit" value="SEND" id="submit"
|
<button type="submit" value="SEND" id="submit"
|
||||||
class="aligncenter btn btn-primary btn-lg border-radius"
|
class="aligncenter btn btn-primary btn-lg border-radius"
|
||||||
|
|
|
||||||
|
|
@ -159,7 +159,7 @@ class FewoBookingController extends Controller
|
||||||
|
|
||||||
$timeDiff = date_diff($finalFromDate, $finalToDate);
|
$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->setNumberDays($numberDays);
|
||||||
$fewoBookingRequest->setLodging($lodging);
|
$fewoBookingRequest->setLodging($lodging);
|
||||||
|
|
@ -246,6 +246,7 @@ class FewoBookingController extends Controller
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GET
|
||||||
return $this->render('default/pages/fewoBooking.html.twig', [
|
return $this->render('default/pages/fewoBooking.html.twig', [
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
'fewo_booking_request' => $fewoBookingRequest,
|
'fewo_booking_request' => $fewoBookingRequest,
|
||||||
|
|
@ -259,6 +260,7 @@ class FewoBookingController extends Controller
|
||||||
'allowed_to_dates' => implode(';', $allowedToDateStrs),
|
'allowed_to_dates' => implode(';', $allowedToDateStrs),
|
||||||
'page' => $fewoTravelProgramPage,
|
'page' => $fewoTravelProgramPage,
|
||||||
'show_search_sidebar_widget' => false,
|
'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('fax')
|
||||||
->add('email')
|
->add('email')
|
||||||
->add('notes', TextareaType::class, ['required' => false])
|
->add('notes', TextareaType::class, ['required' => false])
|
||||||
|
->add('acceptTerms', CheckboxType::class, ['required' => true])
|
||||||
;
|
;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ class FileManager
|
||||||
|
|
||||||
$file->move($this->getTargetDir(), $fileName);
|
$file->move($this->getTargetDir(), $fileName);
|
||||||
$path = $this->getTargetDir() .'/'. $fileName;
|
$path = $this->getTargetDir() .'/'. $fileName;
|
||||||
|
// Ermittle Breite, Höhe und Typ des Originalbildes
|
||||||
$imgInfo = getimagesize($path);
|
$imgInfo = getimagesize($path);
|
||||||
if ($imgInfo !== false)
|
if ($imgInfo !== false)
|
||||||
{
|
{
|
||||||
|
|
@ -37,7 +38,11 @@ class FileManager
|
||||||
}
|
}
|
||||||
if (isset($src))
|
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;
|
$destWidth = self::MAX_DEST_HEIGHT * $srcWidth / $srcHeight;
|
||||||
if ($destWidth < self::MAX_DEST_WIDTH)
|
if ($destWidth < self::MAX_DEST_WIDTH)
|
||||||
{
|
{
|
||||||
|
|
@ -52,8 +57,15 @@ class FileManager
|
||||||
$destX = ($destWidth - self::MAX_DEST_WIDTH) / 2;
|
$destX = ($destWidth - self::MAX_DEST_WIDTH) / 2;
|
||||||
$destY = 0;
|
$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);
|
$destWidth, $destHeight, $srcWidth, $srcHeight);
|
||||||
|
|
||||||
$newFileName = md5(uniqid()) .'.jpg';
|
$newFileName = md5(uniqid()) .'.jpg';
|
||||||
if (imagejpeg($tmp, $this->getTargetDir() .'/'. $newFileName, 80))
|
if (imagejpeg($tmp, $this->getTargetDir() .'/'. $newFileName, 80))
|
||||||
{
|
{
|
||||||
|
|
@ -67,7 +79,6 @@ class FileManager
|
||||||
|
|
||||||
return $fileName;
|
return $fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete(FewoLodgingImage $image)
|
public function delete(FewoLodgingImage $image)
|
||||||
{
|
{
|
||||||
$filesystem = new Filesystem();
|
$filesystem = new Filesystem();
|
||||||
|
|
|
||||||
|
|
@ -35,23 +35,31 @@ class LodgingCalendarService
|
||||||
|
|
||||||
setlocale(LC_TIME, "german");
|
setlocale(LC_TIME, "german");
|
||||||
|
|
||||||
|
$yearTurned = false;
|
||||||
|
$yearsTurned = 0;
|
||||||
|
|
||||||
for($m = $currentMonth; $m < ($currentMonth + $months); $m++)
|
for($m = $currentMonth; $m < ($currentMonth + $months); $m++)
|
||||||
{
|
{
|
||||||
if($m < 13)
|
$actualMonth = $m % 12;
|
||||||
|
|
||||||
|
if($actualMonth == 0)
|
||||||
{
|
{
|
||||||
$actualMonth = $m;
|
$actualMonth = 12;
|
||||||
$actualCurrentYear = $currentYear;
|
$yearTurned = true;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$actualMonth = $m % 12;
|
|
||||||
$actualCurrentYear = $currentYear + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$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']];
|
$weekDay = $weekDays[$date['wday']];
|
||||||
|
|
||||||
$numberDays = $this->daysInMonth($actualMonth, $actualCurrentYear);
|
$numberDays = $this->daysInMonth($actualMonth, $actualYear);
|
||||||
$data = null;
|
$data = null;
|
||||||
|
|
||||||
$actualStartingWeekDay = $date['wday'];
|
$actualStartingWeekDay = $date['wday'];
|
||||||
|
|
@ -105,8 +113,8 @@ class LodgingCalendarService
|
||||||
$calendar[] = [
|
$calendar[] = [
|
||||||
'numberDays' => $numberDays,
|
'numberDays' => $numberDays,
|
||||||
'monthNumber' => $actualMonth,
|
'monthNumber' => $actualMonth,
|
||||||
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualCurrentYear))),
|
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualYear))),
|
||||||
'year' => $actualCurrentYear,
|
'year' => $actualYear,
|
||||||
'startWeekDay' => $weekDay,
|
'startWeekDay' => $weekDay,
|
||||||
'data' => $data,
|
'data' => $data,
|
||||||
'marked' => 0
|
'marked' => 0
|
||||||
|
|
@ -127,23 +135,31 @@ class LodgingCalendarService
|
||||||
|
|
||||||
setlocale(LC_TIME, "german");
|
setlocale(LC_TIME, "german");
|
||||||
|
|
||||||
|
$yearTurned = false;
|
||||||
|
$yearsTurned = 0;
|
||||||
|
|
||||||
for($m = $currentMonth; $m < ($currentMonth + $months); $m++)
|
for($m = $currentMonth; $m < ($currentMonth + $months); $m++)
|
||||||
{
|
{
|
||||||
if($m < 13)
|
$actualMonth = $m % 12;
|
||||||
|
|
||||||
|
if($actualMonth == 0)
|
||||||
{
|
{
|
||||||
$actualMonth = $m;
|
$actualMonth = 12;
|
||||||
$actualCurrentYear = $currentYear;
|
$yearTurned = true;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$actualMonth = $m % 12;
|
|
||||||
$actualCurrentYear = $currentYear + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$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']];
|
$weekDay = $weekDays[$date['wday']];
|
||||||
|
|
||||||
$numberDays = $this->daysInMonth($actualMonth, $actualCurrentYear);
|
$numberDays = $this->daysInMonth($actualMonth, $actualYear);
|
||||||
|
|
||||||
/** @var CalendarDayState[] $data */
|
/** @var CalendarDayState[] $data */
|
||||||
$data = null;
|
$data = null;
|
||||||
|
|
@ -160,7 +176,7 @@ class LodgingCalendarService
|
||||||
$day->setIsReservationBegin(false);
|
$day->setIsReservationBegin(false);
|
||||||
$day->setIsReservationEnd(false);
|
$day->setIsReservationEnd(false);
|
||||||
$datetime = new \DateTime();
|
$datetime = new \DateTime();
|
||||||
$datetime->setTimestamp(mktime(0,0,0, $actualMonth, $d, $actualCurrentYear));
|
$datetime->setTimestamp(mktime(0,0,0, $actualMonth, $d, $actualYear));
|
||||||
$day->setDate($datetime);
|
$day->setDate($datetime);
|
||||||
|
|
||||||
$data[] = $day;
|
$data[] = $day;
|
||||||
|
|
@ -169,8 +185,8 @@ class LodgingCalendarService
|
||||||
$calendar[] = [
|
$calendar[] = [
|
||||||
'numberDays' => $numberDays,
|
'numberDays' => $numberDays,
|
||||||
'monthNumber' => $actualMonth,
|
'monthNumber' => $actualMonth,
|
||||||
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualCurrentYear))),
|
'monthName' => utf8_encode(strftime("%B", mktime(0, 0, 0, $actualMonth, 1, $actualYear))),
|
||||||
'year' => $actualCurrentYear,
|
'year' => $actualYear,
|
||||||
'startWeekDay' => $weekDay,
|
'startWeekDay' => $weekDay,
|
||||||
'data' => $data,
|
'data' => $data,
|
||||||
'marked' => 0
|
'marked' => 0
|
||||||
|
|
@ -193,7 +209,9 @@ class LodgingCalendarService
|
||||||
$curMonthDate->setDate($curMonthDate->format('Y'), $curMonthDate->format('n'), 1);
|
$curMonthDate->setDate($curMonthDate->format('Y'), $curMonthDate->format('n'), 1);
|
||||||
$seasonMonthDate = new \DateTime($latestSeason->getToDate()->format('Y-m-d'));
|
$seasonMonthDate = new \DateTime($latestSeason->getToDate()->format('Y-m-d'));
|
||||||
$seasonMonthDate->setDate($seasonMonthDate->format('Y'), $seasonMonthDate->format('n'), 1);
|
$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;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getMonthIndex($calendar, $month)
|
private function getMonthIndex($calendar, $month, $year)
|
||||||
{
|
{
|
||||||
$result = 0;
|
$result = 0;
|
||||||
for($i = 0; $i < count($calendar); $i++)
|
for($i = 0; $i < count($calendar); $i++)
|
||||||
{
|
{
|
||||||
if($calendar[$i]['monthNumber'] == $month)
|
if($calendar[$i]['monthNumber'] == $month && $calendar[$i]['year'] == $year)
|
||||||
{
|
{
|
||||||
$result = $i;
|
$result = $i;
|
||||||
break;
|
break;
|
||||||
|
|
@ -262,185 +280,191 @@ class LodgingCalendarService
|
||||||
$todayYear = $today->format('Y');
|
$todayYear = $today->format('Y');
|
||||||
|
|
||||||
|
|
||||||
if($startMonth < $todayMonth && $startYear == $todayYear)
|
if ($endMonth >= $todayMonth || ($todayMonth == 12 && $endMonth >= 1 && ($todayYear < $endYear))) //($toDate > $today)
|
||||||
{
|
{
|
||||||
$startDay = 1;
|
if($fromDate < $today)
|
||||||
$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 ($reservationMode)
|
$startDay = 1;
|
||||||
{
|
$startMonth = $today->format('n');
|
||||||
if ($i == $startIndex)
|
$startYear = $today->format('Y');
|
||||||
{
|
|
||||||
$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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$calendar[$startCalendarIndex]['data'] = $data;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// erster monat
|
|
||||||
|
|
||||||
/** @var CalendarDayState[] $data */
|
// wenn sich der Kalender über mehrere Jahre zieht, könnte es hier zu Problemen kommen
|
||||||
$data = $calendar[$startCalendarIndex]['data'];
|
$startCalendarIndex = $this->getMonthIndex($calendar, $startMonth, $startYear);
|
||||||
|
$endCalendarIndex = $this->getMonthIndex($calendar, $endMonth, $endYear);
|
||||||
|
|
||||||
$calendar[$startCalendarIndex]['marked'] = 1;
|
// anfang und ende innerhalb eines monats
|
||||||
|
if($startCalendarIndex == $endCalendarIndex)
|
||||||
$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 */
|
/** @var CalendarDayState[] $data */
|
||||||
$data = $calendar[$i]['data'];
|
$data = $calendar[$startCalendarIndex]['data'];
|
||||||
|
|
||||||
$calendar[$i]['marked'] = 1;
|
$calendar[$startCalendarIndex]['marked'] = 1;
|
||||||
|
|
||||||
$startIndex = 0;
|
// hier geht man von ungepaddeten Kalendermonaten aus
|
||||||
$endIndex = count($data) - 1;
|
$startIndex = $startDay - 1;
|
||||||
for($j = $startIndex; $j <= $endIndex; $j++)
|
$endIndex = $endDay - 1;
|
||||||
|
|
||||||
|
for ($i = $startIndex; $i <= $endIndex; $i++)
|
||||||
{
|
{
|
||||||
if ($reservationMode)
|
if ($reservationMode)
|
||||||
{
|
{
|
||||||
$data[$j]->setIsReserved(true);
|
if ($i == $startIndex)
|
||||||
$data[$j]->setReservation($reservation);
|
{
|
||||||
$data[$j]->setIsInSeason(true);
|
$data[$i]->setIsReserved(true);
|
||||||
$data[$j]->setIsBookable(false);
|
$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
|
else
|
||||||
{
|
{
|
||||||
$data[$j]->setIsReserved(false);
|
$data[$i]->setIsReserved(false);
|
||||||
$data[$j]->setPrice($price);
|
$data[$i]->setPrice($price);
|
||||||
$data[$j]->setIsInSeason(true);
|
$data[$i]->setIsInSeason(true);
|
||||||
$data[$j]->setIsBookable(false);
|
$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;
|
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++)
|
for($i = 0; $i < count($calendar); $i++)
|
||||||
{
|
{
|
||||||
|
|
@ -454,71 +478,23 @@ class LodgingCalendarService
|
||||||
|
|
||||||
for($j = 0; $j < $endIndex; $j++)
|
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())
|
if ($extensionCalendarData[$j]->getIsReserved())
|
||||||
{
|
{
|
||||||
// braucht man das überhaupt noch?
|
$price = $calendarData[$j]->getPrice();
|
||||||
if ($withFromTo)
|
//$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
|
$calendarData[$j]->setReservation($reservation);
|
||||||
|
$calendarData[$j]->setIsReservationBegin(false);
|
||||||
if (!($calendarData[$j]->getIsBookable() && $extensionCalendarData[$j]->getIsReservationEnd()))
|
$calendarData[$j]->setIsReservationEnd(false);
|
||||||
{
|
|
||||||
//$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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// erste runde $pricesCalendar merge mit $reservationsCalendar
|
|
||||||
|
|
||||||
$price = $calendarData[$j]->getPrice();
|
/** @var FewoPrice $price */
|
||||||
$isInSeason = $calendarData[$j]->getIsInSeason();
|
$calendarData[$j]->setIsInSeason(true);
|
||||||
$reservation = $calendarData[$j]->getReservation();
|
$calendarData[$j]->setPrice($price);
|
||||||
$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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -698,15 +674,14 @@ class LodgingCalendarService
|
||||||
|
|
||||||
foreach($reservations as $reservation)
|
foreach($reservations as $reservation)
|
||||||
{
|
{
|
||||||
$reservationId = $reservation->getId();
|
|
||||||
$appendix = ','.$reservationId;
|
|
||||||
$fromDate = $reservation->getFromDate();
|
$fromDate = $reservation->getFromDate();
|
||||||
$toDate = $reservation->getToDate();
|
$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);
|
$actuallyReservableDaysCalendar = $this->filterReservableDays($lodging, $mergedPricesAndReservationsCalendar);
|
||||||
//$resultCalendar = $this->mergeCalendars($actuallyReservableDaysCalendar, $reservationsCalendar, true);
|
//$resultCalendar = $this->mergeCalendars($actuallyReservableDaysCalendar, $reservationsCalendar, true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ class FewoBookingRequestValidator extends ConstraintValidator
|
||||||
$reservations = $lodging->getReservations();
|
$reservations = $lodging->getReservations();
|
||||||
|
|
||||||
$timeDiff = date_diff($fromDate, $toDate);
|
$timeDiff = date_diff($fromDate, $toDate);
|
||||||
$numberDays = $timeDiff->days + 1;
|
$numberDays = $timeDiff->days;
|
||||||
|
|
||||||
$withinSeason = false;
|
$withinSeason = false;
|
||||||
$alreadyReserved = false;
|
$alreadyReserved = false;
|
||||||
|
|
@ -94,7 +94,7 @@ class FewoBookingRequestValidator extends ConstraintValidator
|
||||||
|
|
||||||
if($numberDays < $season->getMinimumStay())
|
if($numberDays < $season->getMinimumStay())
|
||||||
{
|
{
|
||||||
$this->context->buildViolation("Mindestanzahl an Tagen nicht erreicht!")
|
$this->context->buildViolation("Mindestanzahl an Nächten nicht erreicht!")
|
||||||
->addViolation();
|
->addViolation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue