Spaces:
No application file
No application file
| namespace Mautic\NotificationBundle\Entity; | |
| use Doctrine\ORM\Mapping as ORM; | |
| use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; | |
| use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; | |
| use Mautic\CoreBundle\Entity\IpAddress; | |
| use Mautic\LeadBundle\Entity\Lead; | |
| class Stat | |
| { | |
| public const TABLE_NAME = 'push_notification_stats'; | |
| /** | |
| * @var string | |
| */ | |
| private $id; | |
| /** | |
| * @var Notification|null | |
| */ | |
| private $notification; | |
| /** | |
| * @var Lead|null | |
| */ | |
| private $lead; | |
| /** | |
| * @var \Mautic\LeadBundle\Entity\LeadList|null | |
| */ | |
| private $list; | |
| /** | |
| * @var IpAddress|null | |
| */ | |
| private $ipAddress; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $dateSent; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $dateRead; | |
| /** | |
| * @var bool | |
| */ | |
| private $isClicked = false; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $dateClicked; | |
| /** | |
| * @var string|null | |
| */ | |
| private $trackingHash; | |
| /** | |
| * @var int|null | |
| */ | |
| private $retryCount = 0; | |
| /** | |
| * @var string|null | |
| */ | |
| private $source; | |
| /** | |
| * @var int|null | |
| */ | |
| private $sourceId; | |
| /** | |
| * @var array | |
| */ | |
| private $tokens = []; | |
| /** | |
| * @var int|null | |
| */ | |
| private $clickCount; | |
| /** | |
| * @var array | |
| */ | |
| private $clickDetails = []; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $lastClicked; | |
| public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
| { | |
| $builder = new ClassMetadataBuilder($metadata); | |
| $builder->setTable(self::TABLE_NAME) | |
| ->setCustomRepositoryClass(StatRepository::class) | |
| ->addIndex(['notification_id', 'lead_id'], 'stat_notification_search') | |
| ->addIndex(['is_clicked'], 'stat_notification_clicked_search') | |
| ->addIndex(['tracking_hash'], 'stat_notification_hash_search') | |
| ->addIndex(['source', 'source_id'], 'stat_notification_source_search'); | |
| $builder->addBigIntIdField(); | |
| $builder->createManyToOne('notification', 'Notification') | |
| ->inversedBy('stats') | |
| ->addJoinColumn('notification_id', 'id', true, false, 'SET NULL') | |
| ->build(); | |
| $builder->addLead(true, 'SET NULL'); | |
| $builder->createManyToOne('list', \Mautic\LeadBundle\Entity\LeadList::class) | |
| ->addJoinColumn('list_id', 'id', true, false, 'SET NULL') | |
| ->build(); | |
| $builder->addIpAddress(true); | |
| $builder->createField('dateSent', 'datetime') | |
| ->columnName('date_sent') | |
| ->build(); | |
| $builder->createField('dateRead', 'datetime') | |
| ->columnName('date_read') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('isClicked', 'boolean') | |
| ->columnName('is_clicked') | |
| ->build(); | |
| $builder->createField('dateClicked', 'datetime') | |
| ->columnName('date_clicked') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('trackingHash', 'string') | |
| ->columnName('tracking_hash') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('retryCount', 'integer') | |
| ->columnName('retry_count') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('source', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('sourceId', 'integer') | |
| ->columnName('source_id') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('tokens', 'array') | |
| ->nullable() | |
| ->build(); | |
| $builder->addNullableField('clickCount', 'integer', 'click_count'); | |
| $builder->addNullableField('lastClicked', 'datetime', 'last_clicked'); | |
| $builder->addNullableField('clickDetails', 'array', 'click_details'); | |
| } | |
| /** | |
| * Prepares the metadata for API usage. | |
| */ | |
| public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
| { | |
| $metadata->setGroupPrefix('stat') | |
| ->addProperties( | |
| [ | |
| 'id', | |
| 'ipAddress', | |
| 'dateSent', | |
| 'isClicked', | |
| 'dateClicked', | |
| 'retryCount', | |
| 'source', | |
| 'clickCount', | |
| 'lastClicked', | |
| 'sourceId', | |
| 'trackingHash', | |
| 'lead', | |
| 'notification', | |
| ] | |
| ) | |
| ->build(); | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getDateClicked() | |
| { | |
| return $this->dateClicked; | |
| } | |
| /** | |
| * @param mixed $dateClicked | |
| */ | |
| public function setDateClicked($dateClicked): void | |
| { | |
| $this->dateClicked = $dateClicked; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getDateSent() | |
| { | |
| return $this->dateSent; | |
| } | |
| /** | |
| * @param mixed $dateSent | |
| */ | |
| public function setDateSent($dateSent): void | |
| { | |
| $this->dateSent = $dateSent; | |
| } | |
| /** | |
| * @return Notification | |
| */ | |
| public function getNotification() | |
| { | |
| return $this->notification; | |
| } | |
| public function setNotification(Notification $notification = null): void | |
| { | |
| $this->notification = $notification; | |
| } | |
| public function getId(): int | |
| { | |
| return (int) $this->id; | |
| } | |
| /** | |
| * @return IpAddress|null | |
| */ | |
| public function getIpAddress() | |
| { | |
| return $this->ipAddress; | |
| } | |
| /** | |
| * @param mixed $ip | |
| */ | |
| public function setIpAddress(IpAddress $ip): void | |
| { | |
| $this->ipAddress = $ip; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getIsClicked() | |
| { | |
| return $this->isClicked; | |
| } | |
| /** | |
| * @param mixed $isClicked | |
| */ | |
| public function setIsClicked($isClicked): void | |
| { | |
| $this->isClicked = $isClicked; | |
| } | |
| /** | |
| * @return Lead | |
| */ | |
| public function getLead() | |
| { | |
| return $this->lead; | |
| } | |
| /** | |
| * @param mixed $lead | |
| */ | |
| public function setLead(Lead $lead = null): void | |
| { | |
| $this->lead = $lead; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getTrackingHash() | |
| { | |
| return $this->trackingHash; | |
| } | |
| /** | |
| * @param mixed $trackingHash | |
| */ | |
| public function setTrackingHash($trackingHash): void | |
| { | |
| $this->trackingHash = $trackingHash; | |
| } | |
| /** | |
| * @return \Mautic\LeadBundle\Entity\LeadList | |
| */ | |
| public function getList() | |
| { | |
| return $this->list; | |
| } | |
| /** | |
| * @param mixed $list | |
| */ | |
| public function setList($list): void | |
| { | |
| $this->list = $list; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getRetryCount() | |
| { | |
| return $this->retryCount; | |
| } | |
| /** | |
| * @param mixed $retryCount | |
| */ | |
| public function setRetryCount($retryCount): void | |
| { | |
| $this->retryCount = $retryCount; | |
| } | |
| public function upRetryCount(): void | |
| { | |
| ++$this->retryCount; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getSource() | |
| { | |
| return $this->source; | |
| } | |
| /** | |
| * @param mixed $source | |
| */ | |
| public function setSource($source): void | |
| { | |
| $this->source = $source; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getSourceId() | |
| { | |
| return $this->sourceId; | |
| } | |
| /** | |
| * @param mixed $sourceId | |
| */ | |
| public function setSourceId($sourceId): void | |
| { | |
| $this->sourceId = (int) $sourceId; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getTokens() | |
| { | |
| return $this->tokens; | |
| } | |
| /** | |
| * @param mixed $tokens | |
| */ | |
| public function setTokens($tokens): void | |
| { | |
| $this->tokens = $tokens; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getClickCount() | |
| { | |
| return $this->clickCount; | |
| } | |
| /** | |
| * @param mixed $clickCount | |
| * | |
| * @return Stat | |
| */ | |
| public function setClickCount($clickCount) | |
| { | |
| $this->clickCount = $clickCount; | |
| return $this; | |
| } | |
| public function addClickDetails($details): void | |
| { | |
| $this->clickDetails[] = $details; | |
| ++$this->clickCount; | |
| } | |
| /** | |
| * Up the sent count. | |
| * | |
| * @return Stat | |
| */ | |
| public function upClickCount() | |
| { | |
| $count = (int) $this->clickCount + 1; | |
| $this->clickCount = $count; | |
| return $this; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getLastClicked() | |
| { | |
| return $this->lastClicked; | |
| } | |
| /** | |
| * @return Stat | |
| */ | |
| public function setLastClicked(\DateTime $lastClicked) | |
| { | |
| $this->lastClicked = $lastClicked; | |
| return $this; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getClickDetails() | |
| { | |
| return $this->clickDetails; | |
| } | |
| /** | |
| * @param mixed $clickDetails | |
| * | |
| * @return Stat | |
| */ | |
| public function setClickDetails($clickDetails) | |
| { | |
| $this->clickDetails = $clickDetails; | |
| return $this; | |
| } | |
| /** | |
| * @return \DateTimeInterface | |
| */ | |
| public function getDateRead() | |
| { | |
| return $this->dateRead; | |
| } | |
| /** | |
| * @param \DateTime $dateRead | |
| * | |
| * @return Stat | |
| */ | |
| public function setDateRead($dateRead) | |
| { | |
| $this->dateRead = $dateRead; | |
| return $this; | |
| } | |
| } | |