Spaces:
No application file
No application file
namespace Mautic\DynamicContentBundle\Entity; | |
use Doctrine\ORM\Mapping as ORM; | |
use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; | |
use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; | |
use Mautic\LeadBundle\Entity\Lead; | |
class Stat | |
{ | |
/** | |
* @var string | |
*/ | |
private $id; | |
/** | |
* @var DynamicContent|null | |
*/ | |
private $dynamicContent; | |
/** | |
* @var Lead|null | |
*/ | |
private $lead; | |
/** | |
* @var \DateTimeInterface | |
*/ | |
private $dateSent; | |
/** | |
* @var int|null | |
*/ | |
private $sentCount; | |
/** | |
* @var int | |
*/ | |
private $lastSent; | |
/** | |
* @var array | |
*/ | |
private $sentDetails = []; | |
/** | |
* @var string|null | |
*/ | |
private $source; | |
/** | |
* @var int|null | |
*/ | |
private $sourceId; | |
/** | |
* @var array | |
*/ | |
private $tokens = []; | |
public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
{ | |
$builder = new ClassMetadataBuilder($metadata); | |
$builder->setTable('dynamic_content_stats') | |
->setCustomRepositoryClass(StatRepository::class) | |
->addIndex(['dynamic_content_id', 'lead_id'], 'stat_dynamic_content_search') | |
->addIndex(['source', 'source_id'], 'stat_dynamic_content_source_search'); | |
$builder->addBigIntIdField(); | |
$builder->createManyToOne('dynamicContent', 'DynamicContent') | |
->inversedBy('stats') | |
->addJoinColumn('dynamic_content_id', 'id', true, false, 'SET NULL') | |
->build(); | |
$builder->addLead(true, 'SET NULL'); | |
$builder->createField('dateSent', 'datetime') | |
->columnName('date_sent') | |
->build(); | |
$builder->createField('source', 'string') | |
->nullable() | |
->build(); | |
$builder->createField('sourceId', 'integer') | |
->columnName('source_id') | |
->nullable() | |
->build(); | |
$builder->createField('tokens', 'array') | |
->nullable() | |
->build(); | |
$builder->addNullableField('sentCount', 'integer', 'sent_count'); | |
$builder->addNullableField('lastSent', 'datetime', 'last_sent'); | |
$builder->addNullableField('sentDetails', 'array', 'sent_details'); | |
} | |
/** | |
* Prepares the metadata for API usage. | |
*/ | |
public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
{ | |
$metadata->setGroupPrefix('stat') | |
->addProperties( | |
[ | |
'id', | |
'dateSent', | |
'source', | |
'sentCount', | |
'lastSent', | |
'sourceId', | |
'lead', | |
'dynamicContent', | |
] | |
) | |
->build(); | |
} | |
public function addSentDetails($details): void | |
{ | |
$this->sentDetails[] = $details; | |
++$this->sentCount; | |
} | |
/** | |
* Up the sent count. | |
* | |
* @return Stat | |
*/ | |
public function upSentCount() | |
{ | |
$count = (int) $this->sentCount + 1; | |
$this->sentCount = $count; | |
return $this; | |
} | |
public function getId(): int | |
{ | |
return (int) $this->id; | |
} | |
/** | |
* @param int $id | |
*/ | |
public function setId($id): void | |
{ | |
$this->id = (string) $id; | |
} | |
/** | |
* @return DynamicContent | |
*/ | |
public function getDynamicContent() | |
{ | |
return $this->dynamicContent; | |
} | |
public function setDynamicContent(DynamicContent $dynamicContent): void | |
{ | |
$this->dynamicContent = $dynamicContent; | |
} | |
/** | |
* @return Lead | |
*/ | |
public function getLead() | |
{ | |
return $this->lead; | |
} | |
/** | |
* @param Lead $lead | |
*/ | |
public function setLead($lead): void | |
{ | |
$this->lead = $lead; | |
} | |
/** | |
* @return \DateTimeInterface | |
*/ | |
public function getDateSent() | |
{ | |
return $this->dateSent; | |
} | |
/** | |
* @param \DateTime $dateSent | |
*/ | |
public function setDateSent($dateSent): void | |
{ | |
$this->dateSent = $dateSent; | |
} | |
/** | |
* @return int | |
*/ | |
public function getSentCount() | |
{ | |
return $this->sentCount; | |
} | |
/** | |
* @param int $sentCount | |
*/ | |
public function setSentCount($sentCount): void | |
{ | |
$this->sentCount = $sentCount; | |
} | |
/** | |
* @return int | |
*/ | |
public function getLastSent() | |
{ | |
return $this->lastSent; | |
} | |
/** | |
* @param int $lastSent | |
*/ | |
public function setLastSent($lastSent): void | |
{ | |
$this->lastSent = $lastSent; | |
} | |
/** | |
* @return array | |
*/ | |
public function getSentDetails() | |
{ | |
return $this->sentDetails; | |
} | |
/** | |
* @param array $sentDetails | |
*/ | |
public function setSentDetails($sentDetails): void | |
{ | |
$this->sentDetails = $sentDetails; | |
} | |
/** | |
* @return string | |
*/ | |
public function getSource() | |
{ | |
return $this->source; | |
} | |
/** | |
* @param string $source | |
*/ | |
public function setSource($source): void | |
{ | |
$this->source = $source; | |
} | |
/** | |
* @return int | |
*/ | |
public function getSourceId() | |
{ | |
return $this->sourceId; | |
} | |
/** | |
* @param int $sourceId | |
*/ | |
public function setSourceId($sourceId): void | |
{ | |
$this->sourceId = $sourceId; | |
} | |
/** | |
* @return array | |
*/ | |
public function getTokens() | |
{ | |
return $this->tokens; | |
} | |
/** | |
* @param array $tokens | |
*/ | |
public function setTokens($tokens): void | |
{ | |
$this->tokens = $tokens; | |
} | |
} | |