Spaces:
No application file
No application file
| namespace Mautic\EmailBundle\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\LeadDevice; | |
| class StatDevice | |
| { | |
| public const TABLE_NAME = 'email_stats_devices'; | |
| /** | |
| * @var string | |
| */ | |
| private $id; | |
| /** | |
| * @var Stat|null | |
| */ | |
| private $stat; | |
| /** | |
| * @var LeadDevice|null | |
| */ | |
| private $device; | |
| /** | |
| * @var IpAddress|null | |
| */ | |
| private $ipAddress; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $dateOpened; | |
| public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
| { | |
| $builder = new ClassMetadataBuilder($metadata); | |
| $builder->setTable(self::TABLE_NAME) | |
| ->setCustomRepositoryClass(StatDeviceRepository::class) | |
| ->addIndex(['date_opened'], 'date_opened_search'); | |
| $builder->addBigIntIdField(); | |
| $builder->createManyToOne('device', LeadDevice::class) | |
| ->addJoinColumn('device_id', 'id', true, false, 'CASCADE') | |
| ->build(); | |
| $builder->createManyToOne('stat', 'Stat') | |
| ->addJoinColumn('stat_id', 'id', true, false, 'CASCADE') | |
| ->build(); | |
| $builder->addIpAddress(true); | |
| $builder->createField('dateOpened', 'datetime') | |
| ->columnName('date_opened') | |
| ->build(); | |
| } | |
| /** | |
| * Prepares the metadata for API usage. | |
| */ | |
| public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
| { | |
| $metadata->setGroupPrefix('stat') | |
| ->addProperties( | |
| [ | |
| 'id', | |
| 'device', | |
| 'ipAddress', | |
| 'stat', | |
| ] | |
| ) | |
| ->build(); | |
| } | |
| public function getId(): int | |
| { | |
| return (int) $this->id; | |
| } | |
| /** | |
| * @return IpAddress | |
| */ | |
| public function getIpAddress() | |
| { | |
| return $this->ipAddress; | |
| } | |
| /** | |
| * @param mixed $ip | |
| */ | |
| public function setIpAddress(IpAddress $ip): void | |
| { | |
| $this->ipAddress = $ip; | |
| } | |
| /** | |
| * @return Stat | |
| */ | |
| public function getStat() | |
| { | |
| return $this->stat; | |
| } | |
| /** | |
| * @param Stat | |
| */ | |
| public function setStat(Stat $stat): void | |
| { | |
| $this->stat = $stat; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getDateOpened() | |
| { | |
| return $this->dateOpened; | |
| } | |
| /** | |
| * @param mixed $dateOpened | |
| */ | |
| public function setDateOpened($dateOpened): void | |
| { | |
| $this->dateOpened = $dateOpened; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getDevice() | |
| { | |
| return $this->device; | |
| } | |
| /** | |
| * @param mixed $device | |
| */ | |
| public function setDevice(LeadDevice $device): void | |
| { | |
| $this->device = $device; | |
| } | |
| } | |