Initial commit: CloudOps infrastructure platform
This commit is contained in:
@@ -0,0 +1,241 @@
|
||||
<?php
|
||||
|
||||
namespace Mautic\CampaignBundle\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver;
|
||||
use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder;
|
||||
|
||||
class Lead
|
||||
{
|
||||
/**
|
||||
* @var Campaign
|
||||
*/
|
||||
private $campaign;
|
||||
|
||||
/**
|
||||
* @var \Mautic\LeadBundle\Entity\Lead
|
||||
*/
|
||||
private $lead;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface
|
||||
**/
|
||||
private $dateAdded;
|
||||
|
||||
/**
|
||||
* @var \DateTimeInterface
|
||||
*/
|
||||
private $dateLastExited;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $manuallyRemoved = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $manuallyAdded = false;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $rotation = 1;
|
||||
|
||||
public static function loadMetadata(ORM\ClassMetadata $metadata): void
|
||||
{
|
||||
$builder = new ClassMetadataBuilder($metadata);
|
||||
|
||||
$builder->setTable('campaign_leads')
|
||||
->setCustomRepositoryClass(LeadRepository::class)
|
||||
->addIndex(['date_added'], 'campaign_leads_date_added')
|
||||
->addIndex(['date_last_exited'], 'campaign_leads_date_exited')
|
||||
->addIndex(['campaign_id', 'manually_removed', 'lead_id', 'rotation'], 'campaign_leads');
|
||||
|
||||
$builder->createManyToOne('campaign', 'Campaign')
|
||||
->makePrimaryKey()
|
||||
->inversedBy('leads')
|
||||
->addJoinColumn('campaign_id', 'id', false, false, 'CASCADE')
|
||||
->build();
|
||||
|
||||
$builder->addLead(false, 'CASCADE', true);
|
||||
|
||||
$builder->addDateAdded();
|
||||
|
||||
$builder->createField('manuallyRemoved', 'boolean')
|
||||
->columnName('manually_removed')
|
||||
->build();
|
||||
|
||||
$builder->createField('manuallyAdded', 'boolean')
|
||||
->columnName('manually_added')
|
||||
->build();
|
||||
|
||||
$builder->addNamedField('dateLastExited', 'datetime', 'date_last_exited', true);
|
||||
|
||||
$builder->addField('rotation', 'integer');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the metadata for API usage.
|
||||
*/
|
||||
public static function loadApiMetadata(ApiMetadataDriver $metadata): void
|
||||
{
|
||||
$metadata->setGroupPrefix('campaignLead')
|
||||
->addListProperties(
|
||||
[
|
||||
'dateAdded',
|
||||
'manuallyRemoved',
|
||||
'manuallyAdded',
|
||||
'rotation',
|
||||
'dateLastExited',
|
||||
]
|
||||
)
|
||||
->addProperties(
|
||||
[
|
||||
'lead',
|
||||
'campaign',
|
||||
]
|
||||
)
|
||||
->build();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTimeInterface
|
||||
*/
|
||||
public function getDateAdded()
|
||||
{
|
||||
return $this->dateAdded;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \DateTime $date
|
||||
*/
|
||||
public function setDateAdded($date): void
|
||||
{
|
||||
$this->dateAdded = $date;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Mautic\LeadBundle\Entity\Lead
|
||||
*/
|
||||
public function getLead()
|
||||
{
|
||||
return $this->lead;
|
||||
}
|
||||
|
||||
public function setLead(\Mautic\LeadBundle\Entity\Lead $lead): void
|
||||
{
|
||||
$this->lead = $lead;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Campaign
|
||||
*/
|
||||
public function getCampaign()
|
||||
{
|
||||
return $this->campaign;
|
||||
}
|
||||
|
||||
public function setCampaign(Campaign $campaign): void
|
||||
{
|
||||
$this->campaign = $campaign;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function getManuallyRemoved()
|
||||
{
|
||||
return $this->manuallyRemoved;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $manuallyRemoved
|
||||
*/
|
||||
public function setManuallyRemoved($manuallyRemoved): void
|
||||
{
|
||||
$this->manuallyRemoved = $manuallyRemoved;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function wasManuallyRemoved()
|
||||
{
|
||||
return $this->manuallyRemoved;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function getManuallyAdded()
|
||||
{
|
||||
return $this->manuallyAdded;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $manuallyAdded
|
||||
*/
|
||||
public function setManuallyAdded($manuallyAdded): void
|
||||
{
|
||||
$this->manuallyAdded = $manuallyAdded;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function wasManuallyAdded()
|
||||
{
|
||||
return $this->manuallyAdded;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getRotation()
|
||||
{
|
||||
return $this->rotation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $rotation
|
||||
*
|
||||
* @return Lead
|
||||
*/
|
||||
public function setRotation($rotation)
|
||||
{
|
||||
$this->rotation = (int) $rotation;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function startNewRotation()
|
||||
{
|
||||
++$this->rotation;
|
||||
$this->dateAdded = new \DateTime();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \DateTimeInterface|null
|
||||
*/
|
||||
public function getDateLastExited()
|
||||
{
|
||||
return $this->dateLastExited;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Lead
|
||||
*/
|
||||
public function setDateLastExited(?\DateTime $dateLastExited = null)
|
||||
{
|
||||
$this->dateLastExited = $dateLastExited;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user