Spaces:
No application file
No application file
| namespace MauticPlugin\MauticSocialBundle\Entity; | |
| use Doctrine\DBAL\Types\Types; | |
| use Doctrine\ORM\Mapping as ORM; | |
| use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; | |
| use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; | |
| use Mautic\LeadBundle\Entity\Lead as TheLead; | |
| class TweetStat | |
| { | |
| /** | |
| * @var int | |
| */ | |
| private $id; | |
| /** | |
| * ID of the tweet from Twitter. | |
| * | |
| * @var string|null | |
| */ | |
| private $twitterTweetId; | |
| /** | |
| * @var Tweet|null | |
| */ | |
| private $tweet; | |
| /** | |
| * @var TheLead|null | |
| */ | |
| private $lead; | |
| /** | |
| * @var string | |
| */ | |
| private $handle; | |
| /** | |
| * @var DateTime | |
| */ | |
| private $dateSent; | |
| /** | |
| * @var bool|null | |
| */ | |
| private $isFailed = false; | |
| /** | |
| * @var int|null | |
| */ | |
| private $retryCount = 0; | |
| /** | |
| * @var string|null | |
| */ | |
| private $source; | |
| /** | |
| * @var int|null | |
| */ | |
| private $sourceId; | |
| /** | |
| * @var int|null | |
| */ | |
| private $favoriteCount = 0; | |
| /** | |
| * @var int|null | |
| */ | |
| private $retweetCount = 0; | |
| /** | |
| * @var array|null | |
| */ | |
| private $responseDetails = []; | |
| public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
| { | |
| $builder = new ClassMetadataBuilder($metadata); | |
| $builder->setTable('tweet_stats') | |
| ->setCustomRepositoryClass(TweetStatRepository::class) | |
| ->addIndex(['tweet_id', 'lead_id'], 'stat_tweet_search') | |
| ->addIndex(['lead_id', 'tweet_id'], 'stat_tweet_search2') | |
| ->addIndex(['is_failed'], 'stat_tweet_failed_search') | |
| ->addIndex(['source', 'source_id'], 'stat_tweet_source_search') | |
| ->addIndex(['favorite_count'], 'favorite_count_index') | |
| ->addIndex(['retweet_count'], 'retweet_count_index') | |
| ->addIndex(['date_sent'], 'tweet_date_sent') | |
| ->addIndex(['twitter_tweet_id'], 'twitter_tweet_id_index'); | |
| $builder->addId(); | |
| $builder->createManyToOne('tweet', 'Tweet') | |
| ->inversedBy('stats') | |
| ->addJoinColumn('tweet_id', 'id', true, false, 'SET NULL') | |
| ->build(); | |
| $builder->createField('twitterTweetId', 'string') | |
| ->columnName('twitter_tweet_id') | |
| ->nullable() | |
| ->build(); | |
| $builder->addLead(true, 'SET NULL'); | |
| $builder->createField('handle', 'string') | |
| ->build(); | |
| $builder->createField('dateSent', 'datetime') | |
| ->columnName('date_sent') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('isFailed', 'boolean') | |
| ->columnName('is_failed') | |
| ->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->addNullableField('favoriteCount', 'integer', 'favorite_count'); | |
| $builder->addNullableField('retweetCount', 'integer', 'retweet_count'); | |
| $builder->addNullableField('responseDetails', Types::JSON, 'response_details'); | |
| } | |
| /** | |
| * Prepares the metadata for API usage. | |
| */ | |
| public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
| { | |
| $metadata->setGroupPrefix('stat') | |
| ->addProperties( | |
| [ | |
| 'id', | |
| 'tweetId', | |
| 'handle', | |
| 'dateSent', | |
| 'isFailed', | |
| 'retryCount', | |
| 'favoriteCount', | |
| 'retweetCount', | |
| 'source', | |
| 'sourceId', | |
| 'lead', | |
| 'tweet', | |
| 'responseDetails', | |
| ] | |
| ) | |
| ->build(); | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getId() | |
| { | |
| return $this->id; | |
| } | |
| /** | |
| * @return string|null | |
| */ | |
| public function getTwitterTweetId() | |
| { | |
| return $this->twitterTweetId; | |
| } | |
| /** | |
| * @param string $twitterTweetId | |
| * | |
| * @return $this | |
| */ | |
| public function setTwitterTweetId($twitterTweetId) | |
| { | |
| $this->twitterTweetId = $twitterTweetId; | |
| return $this; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getDateSent() | |
| { | |
| return $this->dateSent; | |
| } | |
| /** | |
| * @param mixed $dateSent | |
| */ | |
| public function setDateSent($dateSent): void | |
| { | |
| $this->dateSent = $dateSent; | |
| } | |
| /** | |
| * @return Tweet | |
| */ | |
| public function getTweet() | |
| { | |
| return $this->tweet; | |
| } | |
| /** | |
| * @param mixed $tweet | |
| */ | |
| public function setTweet(Tweet $tweet = null): void | |
| { | |
| $this->tweet = $tweet; | |
| } | |
| /** | |
| * @return TheLead | |
| */ | |
| public function getLead() | |
| { | |
| return $this->lead; | |
| } | |
| /** | |
| * @param mixed $lead | |
| */ | |
| public function setLead(TheLead $lead = null): void | |
| { | |
| $this->lead = $lead; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getRetryCount() | |
| { | |
| return $this->retryCount; | |
| } | |
| /** | |
| * @param mixed $retryCount | |
| */ | |
| public function setRetryCount($retryCount): void | |
| { | |
| $this->retryCount = $retryCount; | |
| } | |
| public function retryCountUp(): void | |
| { | |
| $this->setRetryCount($this->getRetryCount() + 1); | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getFavoriteCount() | |
| { | |
| return $this->favoriteCount; | |
| } | |
| /** | |
| * @param int $favoriteCount | |
| * | |
| * @return $this | |
| */ | |
| public function setFavoriteCount($favoriteCount) | |
| { | |
| $this->favoriteCount = $favoriteCount; | |
| return $this; | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getRetweetCount() | |
| { | |
| return $this->retweetCount; | |
| } | |
| /** | |
| * @param int $retweetCount | |
| * | |
| * @return $this | |
| */ | |
| public function setRetweetCount($retweetCount) | |
| { | |
| $this->retweetCount = $retweetCount; | |
| return $this; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getIsFailed() | |
| { | |
| return $this->isFailed; | |
| } | |
| /** | |
| * @param mixed $isFailed | |
| */ | |
| public function setIsFailed($isFailed): void | |
| { | |
| $this->isFailed = $isFailed; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function isFailed() | |
| { | |
| return $this->getIsFailed(); | |
| } | |
| /** | |
| * @return string|null | |
| */ | |
| public function getHandle() | |
| { | |
| return $this->handle; | |
| } | |
| /** | |
| * @param mixed $handle | |
| */ | |
| public function setHandle($handle): void | |
| { | |
| $this->handle = $handle; | |
| } | |
| /** | |
| * @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 getResponseDetails() | |
| { | |
| return $this->responseDetails; | |
| } | |
| /** | |
| * @param mixed $responseDetails | |
| * | |
| * @return Stat | |
| */ | |
| public function setResponseDetails($responseDetails) | |
| { | |
| $this->responseDetails = $responseDetails; | |
| return $this; | |
| } | |
| } | |