git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3362 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
valentin.wacker 2017-12-05 15:26:00 +00:00
parent f53087fde1
commit c2d6038228
7 changed files with 250 additions and 259 deletions

View file

@ -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>

View file

@ -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"

View file

@ -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(),
]); ]);
} }

View file

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

View file

@ -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();

View file

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

View file

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