12.21
This commit is contained in:
parent
ebf90ff869
commit
4e71ddabec
17 changed files with 448 additions and 101 deletions
|
|
@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue