events/Classes/Domain/Model/Date.php
Daniel Siepmann ebb668221e Support canceled attribute during import of destination data
Destination data provides an attribute "DETAILS_ABGESAGT" to mark an
event as canceled.
We now fetch that info and mark all dates of that event as canceled.

This also contains refactoring of creation of dates within import.
All dates had the same info, and are now created at a single place.

Relates: #9280
2021-09-07 09:29:38 +02:00

179 lines
2.9 KiB
PHP

<?php
namespace Wrm\Events\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
/**
* Date
*/
class Date extends AbstractEntity
{
/**
* @var \DateTime
*/
protected $start = null;
/**
* @var \DateTime
*/
protected $end = null;
/**
* @var string
*/
protected $canceled = "no";
/**
* @var null|Date
*/
protected $postponedDate;
/**
* @var null|Date
*/
protected $originalDate;
/**
* @var \Wrm\Events\Domain\Model\Event
*/
protected $event = null;
/**
* @var string
*/
protected $canceledLink = '';
/**
* @var int
*/
protected $_languageUid;
/**
* @return \DateTime $start
*/
public function getStart()
{
return $this->start;
}
/**
* @param \DateTime $start
* @return void
*/
public function setStart(\DateTime $start)
{
$this->start = $start;
}
/**
* @return \DateTime end
*/
public function getEnd()
{
return $this->end;
}
/**
* @param \DateTime $end
* @return void
*/
public function setEnd(\DateTime $end)
{
$this->end = $end;
}
/**
* @return Event
*/
public function getEvent(): Event
{
return $this->event;
}
/**
* @param Event $event
*/
public function setEvent(Event $event): self
{
$this->event = $event;
return $this;
}
/**
* @param int $languageUid
* @return void
*/
public function setLanguageUid($languageUid)
{
$this->_languageUid = $languageUid;
}
/**
* @return int
*/
public function getLanguageUid()
{
return $this->_languageUid;
}
/**
* @return string
*/
public function getCanceled(): string
{
return $this->canceled;
}
/**
* @param string $canceled
* @return void
*/
public function setCanceled(string $canceled)
{
$this->canceled = $canceled;
}
public function getPostponedDate(): ?Date
{
if ($this->getCanceled() === 'postponed') {
return $this->postponedDate;
}
return null;
}
public function getOriginalDate(): ?Date
{
return $this->originalDate;
}
public function getCanceledLink(): string
{
if ($this->getCanceled() === 'canceled') {
return $this->canceledLink;
}
return '';
}
public static function createFromDestinationData(
\DateTime $start,
\DateTime $end,
bool $canceled
): self {
$date = new Date();
$date->setLanguageUid(-1);
$date->setStart($start);
$date->setEnd($end);
if ($canceled) {
$date->setCanceled('canceled');
}
return $date;
}
}