This commit is contained in:
Kevin Adametz 2021-12-25 03:11:08 +01:00
parent ebf90ff869
commit 4e71ddabec
17 changed files with 448 additions and 101 deletions

View file

@ -221,7 +221,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
* @todo Find a more appropriate name for this method
*/
public function getTrueTravelPeriods(TravelProgram $program, $class = false, $flags =
self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL)
self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL, $start = false)
{
if (!($flags & self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL))
{
@ -229,8 +229,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
}
$doQueryVirtualAndNonVirtual = $flags & self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL ==
self::TD_QUERY_VIRTUAL_AND_NON_VIRTUAL;
/** @var TravelPeriod[] $periods */
$qb = $this->createQueryBuilder('p');
$qb
@ -262,8 +261,11 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
$startDate = null;
if (!($flags & self::TD_QUERY_OUTDATED))
{
$startDate = new \DateTime('tomorrow');
if($start && $start == 'start_week'){
$startDate = new \DateTime('+3 week');
}else{
$startDate = new \DateTime('tomorrow');
}
}
if ($class)
{
@ -296,7 +298,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
;
$entities = $qb->getQuery()->execute();
$flightPeriodByKey = null;
if (!$program->getIsMediated())
{
@ -334,6 +336,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
{
$fpKey = $date->getStartDate()->format('Y-m-d') . $date->getEndDate()->format('Y-m-d') .
$program->getTravelArrivalPoint()->getId();
if (isset($flightPeriodByKey[$fpKey]))
{
// #TODO Does this cause performance problems?
@ -342,8 +345,8 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
}
}
}
$this->addTravelDatesToProgram($program, $entities, $flightPeriodByKey, $startDate, null);
return $program->getTravelDates();
$this->addTravelDatesToProgram($program, $entities, $flightPeriodByKey, $startDate, null, $start);
return $program->getTravelDates($start);
}
private $currencyFactor = null;
@ -373,13 +376,14 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
* @throws \Exception
*/
public function addTravelDatesToProgram(TravelProgram &$travelProgram, $travelPeriods, $flightPeriods,
\DateTime $startDate = null, \DateTime $endDate = null)
\DateTime $startDate = null, \DateTime $endDate = null, $header = null)
{
$currencyFactor = $travelProgram->getNettoPricesInEuro() ? 1 : $this->getCurrencyFactor();
$counters = array();
// #TODO Consider adding travelPeriods to travelProgram in the search algorithm
//foreach ($travelProgram->getPeriods() as $travelPeriod)
$counter = 0;
foreach ($travelPeriods as $travelPeriod)
{
if ($travelPeriod->getIsSeason())
@ -406,6 +410,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
\DateInterval::createFromDateString('1 day'), $seasonEndDate);
$doTestStartDate = $startDate != null;
/** @var \DateTime $date */
foreach ($dates as $date)
{
@ -424,7 +429,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
$travelDateEnd = (clone $date)->modify('+'.$travelProgram->getProgramDuration().' day');
$travelDateKey = $this->createTravelDateKey($date, $travelDateEnd);
if (!$travelProgram->hasTravelDate($travelDateKey))
if (!$travelProgram->hasTravelDate($travelDateKey, $header))
{
$flightPeriod = null;
if (!$travelProgram->getIsMediated())
@ -440,7 +445,8 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
$date,
$travelDateEnd,
$flightPeriod,
$currencyFactor
$currencyFactor,
$header
);
}
}
@ -464,8 +470,8 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
}
// #TODO There is an error in the old backend which causes duplicates
if ($travelProgram->hasTravelDate($travelDateKey) &&
$travelProgram->getTravelDate($travelDateKey)->__getTravelPeriod()->getId() != $travelPeriod->getId())
if ($travelProgram->hasTravelDate($travelDateKey, $header) &&
$travelProgram->getTravelDate($travelDateKey, $header)->__getTravelPeriod()->getId() != $travelPeriod->getId())
{
global $kernel;
if($kernel instanceOf \AppCache) $kernel = $kernel->getKernel();
@ -475,7 +481,7 @@ class TravelPeriodRepository extends \Doctrine\ORM\EntityRepository
else
{
$TravelDate = $travelProgram->addTravelDateFromNonSeasonTravelPeriod($travelDateKey, $travelPeriod, $flightPeriod,
$currencyFactor);
$currencyFactor, $header);
}