Spaces:
No application file
No application file
File size: 4,029 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
<?php
declare(strict_types=1);
namespace Mautic\CampaignBundle\Tests\Functional\Fixtures;
use Doctrine\ORM\EntityManagerInterface;
use Mautic\CampaignBundle\Entity\Campaign;
use Mautic\CampaignBundle\Entity\Event;
use Mautic\CampaignBundle\Entity\Lead as CampaignLead;
use Mautic\LeadBundle\Entity\Lead;
final class FixtureHelper
{
public function __construct(private EntityManagerInterface $em)
{
}
public function createContact(string $email): Lead
{
$contact = new Lead();
$contact->setEmail($email);
$this->em->persist($contact);
return $contact;
}
public function addContactToCampaign(Lead $contact, Campaign $campaign): CampaignLead
{
$ref = new CampaignLead();
$ref->setCampaign($campaign);
$ref->setLead($contact);
$ref->setDateAdded(new \DateTime());
$this->em->persist($ref);
return $ref;
}
public function createCampaign(string $name): Campaign
{
$campaign = new Campaign();
$campaign->setName($name);
$campaign->setIsPublished(true);
$this->em->persist($campaign);
return $campaign;
}
public function createCampaignWithScheduledEvent(Campaign $campaign, int $interval = 1, string $intervalUnit = 'd', \DateTimeInterface $hour = null): Event
{
if (!$campaign->getId()) {
$this->em->flush();
}
$event = new Event();
$event->setCampaign($campaign);
$event->setName('Adjust contact points');
$event->setType('lead.changepoints');
$event->setEventType('action');
$event->setTriggerInterval($interval);
$event->setTriggerIntervalUnit($intervalUnit);
$event->setTriggerMode('interval');
if ($hour) {
$event->setTriggerHour($hour->format('H:i'));
}
$event->setProperties(
[
'canvasSettings' => [
'droppedX' => '1080',
'droppedY' => '155',
],
'name' => '',
'triggerMode' => 'interval',
'triggerDate' => null,
'triggerInterval' => $interval,
'triggerIntervalUnit' => $intervalUnit,
'triggerHour' => $hour,
'triggerRestrictedStartHour' => '',
'triggerRestrictedStopHour' => '',
'anchor' => 'leadsource',
'properties' => ['points' => '5'],
'type' => 'lead.changepoints',
'eventType' => 'action',
'anchorEventType' => 'source',
'campaignId' => $campaign->getId(),
'buttons' => ['save' => ''],
'points' => 5,
]
);
$this->em->persist($event);
$this->em->flush();
$campaign->addEvent(0, $event);
$campaign->setCanvasSettings(
[
'nodes' => [
[
'id' => $event->getId(),
'positionX' => '1080',
'positionY' => '155',
],
[
'id' => 'lists',
'positionX' => '1180',
'positionY' => '50',
],
],
'connections' => [
[
'sourceId' => 'lists',
'targetId' => $event->getId(),
'anchors' => [
'source' => 'leadsource',
'target' => 'top',
],
],
],
]
);
return $event;
}
}
|