<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
use App\Controller\PinpointCampaignConfirmation;
use App\Controller\PinpointCampaignController;
use App\Controller\PinpointCampaignLandingPageController;
use App\Controller\PinpointCampaignLoginController;
use App\Controller\PinpointCampaignSubmission;
use App\Controller\PinpointCampaignSurveyFormSubmissionController;
use App\Controller\SurveyCampaignController;
use App\Controller\SurveyCampaignFormController;
use App\Controller\UnattendedSurveyFormQuestionController;
use App\Validator\PinpointCampaignTestEmail;
use DateTime;
use DateTimeZone;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\PinpointCampaignRepository")
* @ORM\HasLifecycleCallbacks()
* @PinpointCampaignTestEmail()
*/
#[ApiResource(
normalizationContext: ['groups' => ['pinpointCampaign:item', 'pinpointCampaign:list']],
denormalizationContext: ['allow_extra_attributes' => true, 'groups' => ['pinpointCampaign:write']],
collectionOperations: [
'get' => ['normalization_context' => ['groups' => ['pinpointCampaign:list']]],
'post' => ['security' => "is_granted('ROLE_ADMIN') or object.owner == user"],
'pinpointcampaign_confirmation' => [
'method' => 'POST',
'status' => 204,
'path' => '/pinpoint_campaigns/confirmation',
'controller' => PinpointCampaignConfirmation::class,
'normalizationContext' => ['groups' => ['pinpointCampaign:item']],
],
'pinpointcampaign_submit_survey' => [
'method' => 'POST',
'path' => '/survey-campaign/{id}/{userId}/campaign',
'controller' => PinpointCampaignSubmission::class,
'defaults' => ['_api_receive' => false],
],
'pinpointcampaign_submit_survey_form' => [
'method' => 'POST',
'path' => '/survey-campaign/{id}/{userId}/form',
'controller' => PinpointCampaignSurveyFormSubmissionController::class,
'defaults' => ['_api_receive' => false],
],
],
itemOperations: [
'get' => ['normalization_context' => ['groups' => ['pinpointCampaign:item']]],
'put' => ['security' => "is_granted('ROLE_ADMIN') or object.owner == user"],
'delete' => ['security' => "is_granted('ROLE_ADMIN') or object.owner == user"],
'confirmation_pinpointcampaign' => [
'method' => 'POST',
'path' => '/pinpoint_campaigns/{id}/confirmation',
'controller' => PinpointCampaignController::class,
'normalization_context' => ['groups' => ['pinpointCampaign:item']],
],
'survey_pinpointcampaign' => [
'method' => 'GET',
'path' => '/survey-campaign/{id}/{userId}/campaign',
'controller' => SurveyCampaignController::class,
],
'survey_form_pinpointcampaign' => [
'method' => 'GET',
'path' => '/survey-campaign/{id}/{userId}/form',
'controller' => SurveyCampaignFormController::class,
],
'unattended_survey_form_question' => [
'method' => 'GET',
'path' => '/survey-campaign/{id}/{userId}/unattended',
'controller' => UnattendedSurveyFormQuestionController::class,
],
'pinpointcampaign_assessment_landing' => [
'method' => 'GET',
'path' => '/survey-campaign/{id}/landing',
'controller' => PinpointCampaignLandingPageController::class,
],
'pinpointcampaign_assessment_login' => [
'method' => 'POST',
'path' => '/survey-campaign/{id}/login',
'controller' => PinpointCampaignLoginController::class,
],
],
)]
#[ApiFilter(SearchFilter::class, properties: ['id', 'campaignName' => SearchFilter::STRATEGY_PARTIAL, 'surveyCompany' => SearchFilter::STRATEGY_EXACT, 'campaignType' => SearchFilter::STRATEGY_EXACT])]
#[ApiFilter(PropertyFilter::class)]
#[ApiFilter(OrderFilter::class, properties: ['id', 'campaignName', 'email.label', 'campaignId', 'deploymentId', 'isLanding', 'channelType', 'campaignType', 'createdAt'], arguments: ['orderParameterName' => 'order'])]
class PinpointCampaign
{
use TimestampableEntity;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(identifier: true)]
private $id;
/**
* @var string
*
* @ORM\Column(type="string",nullable=true, length=50)
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
private ?string $campaignId = null;
/**
* @var string
*
* @ORM\Column(type="string", length=50)
* @Groups({"pinpointCampaign:item"})
*/
private $applicationId;
/**
* @var string
*
* @ORM\Column(type="string", nullable=true,length=50)
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
private $segmentId;
/**
* @var string
*
* @ORM\Column(type="string", length=100)
* @Assert\NotBlank()
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $campaignName;
/**
* @var string
*
* @ORM\Column(type="string", length=1000)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $campaignDescription;
/**
* @var string
*
* @ORM\Column(type="string", length=50)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $scheduleFrequency;
/**
* @var string
*
* @ORM\Column(type="string", length=50)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $scheduleStarttype;
/**
* @var DateTime
*
* @ORM\Column(type="datetime", nullable=false)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $scheduleStarttime;
/**
* @var DateTime
*
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
// #[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
public ?\DateTime $scheduleEndtime = null;
/**
* @var string
*
* @ORM\Column(type="string", length=45)
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
private $scheduleTimezone;
/**
* @var string
*
* @ORM\Column(type="string", length=50)
* @Assert\NotBlank()
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $channelType = 'EMAIL';
/**
* @var string
*
* @ORM\Column(type="string", length=50)
* @Assert\NotBlank()
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
private $formType;
/**
* @var string
*
* @ORM\Column(type="string", length=50, nullable=false, columnDefinition="enum('Company', 'Strategic Partner')", options={"default": "Company"})
* @Assert\NotBlank()
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $campaignType = 'Company';
/**
* @var int
*
* @ORM\Column(type="integer", length=5)
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'http://schema.org/Integer')]
private $deploymentId;
/**
* @ORM\Column(type="boolean")
* @Assert\Type("bool")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isLanding;
#[Groups(['pinpointCampaign:item', "pinpointCampaign:list",])]
public ?string $landingPage = null;
/**
* @ORM\Column(type="boolean")
* @Assert\Type("bool")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isRetargetUsers;
/**
* @var string
*
* @Assert\NotBlank()
* @ORM\Column(type="string", length=50, columnDefinition="enum('None','Not Started', 'Not Submitted', 'Everyone')", options={"default": "None"})
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $retargetType = 'None';
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="bool")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isPositionSelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="bool")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isDepartmentSelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="boolean")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isBirthDateSelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="boolean")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isEthnicitySelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="boolean")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isRaceSelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="boolean")
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isGenderSelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="boolean")
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $isLanguageSelection;
/**
* @ORM\Column(type="boolean")
* @Assert\Type(type="boolean")
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'https://schema.org/Boolean')]
private $mailAssociatedUser;
/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
* @Assert\Type(type="integer")
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'http://schema.org/Integer')]
private $quesCountFirst;
/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
* @Assert\Type(type="integer")
* @Groups({"pinpointCampaign:item","pinpointCampaign:write"})
*/
#[ApiProperty(iri: 'http://schema.org/Integer')]
private $quesCountAlternate;
/**
* @var string
*
* @ORM\Column(type="string", length=500)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $emailTitle;
/**
* @var string
*
* @ORM\Column(type="string",nullable=true, length=50)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $emailFromName;
/**
* @var string
*
* @ORM\Column(type="string", length=200)
* @Assert\NotBlank()
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $emailFrom;
/**
* @var string
*
* @ORM\Column(type="string", length=500, nullable=true)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $emailCC;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Email", inversedBy="pinpointCampaigns")
* @ORM\JoinColumn(nullable=true)
* @ORM\OrderBy({"id" = "DESC"})
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private Email $email;
/**
* @var string
*
* @ORM\Column(type="text")
* @Assert\NotBlank()
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $emailBody;
/**
* @var string
*
* @ORM\Column(type="text")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $emailHtmlbody;
/**
* @var string
*
* @ORM\Column(type="string", length=500)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $smsBody;
/**
* @var string
*
* @ORM\Column(type="string", length=60, nullable=true)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $smsMessagetype;
/**
* @var string
*
* @ORM\Column(type="string", length=60, nullable=true)
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $smsSenderid;
/**
* @var SurveyCompany
*
* @ORM\ManyToOne(targetEntity="App\Entity\SurveyCompany", inversedBy="pinpointCampaigns", cascade={"persist"})
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $surveyCompany;
/**
* @var Department
*
* @ORM\ManyToOne(targetEntity="App\Entity\Department")
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $department;
/**
* @var City
*
* @ORM\ManyToOne(targetEntity="App\Entity\City")
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $city;
/**
* @var ArrayCollection|SurveyContribution[]
*
* @ORM\OneToMany(targetEntity="App\Entity\SurveyContribution", cascade={"persist"}, mappedBy="pinpointCampaign")
*/
private $surveyContributions;
/**
* @var PinpointCampaign
*
* @ORM\ManyToOne(targetEntity="App\Entity\PinpointCampaign")
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({"pinpointCampaign:item","pinpointCampaign:list","pinpointCampaign:write"})
*/
private $pinpointCampaign;
/**
* @ORM\OneToMany(targetEntity=PinpointCampaignQuestion::class, mappedBy="pinpointCampaign")
*/
private $pinpointCampaignQuestions;
/**
* @ORM\OneToMany(targetEntity=PinpointCampaignUser::class, cascade={"persist"}, mappedBy="pinpointCampaign", orphanRemoval=true)
*/
private $pinpointCampaignUsers;
/**
* @ORM\ManyToOne(targetEntity=MediaImage::class, inversedBy="pinpointCampaigns")
* @ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* @Groups({"pinpointCampaign:item"})
*/
private $image;
/**
* @ORM\OneToMany(targetEntity=CampaignSchedule::class, mappedBy="pinpointCampaign", orphanRemoval=true, cascade={"persist"})
*/
private $campaignSchedules;
public function __construct()
{
$this->isLanding = false;
$this->isRetargetUsers = false;
$this->isLanguageSelection = false;
$this->isPositionSelection = false;
$this->isDepartmentSelection = false;
$this->isBirthDateSelection = false;
$this->isEthnicitySelection = false;
$this->isGenderSelection = false;
$this->isRaceSelection = false;
$this->mailAssociatedUser = false;
$this->quesCountFirst = 60;
$this->deploymentId = 0;
$this->quesCountAlternate = 12;
$this->scheduleStarttime = new \DateTime();
$this->scheduleEndtime = null;
$this->scheduleTimezone = 'UTC';
$this->segmentId = 'dynamic_segement';
$this->applicationId = 'e22c6ebe3c9a45f4a51ae42c3c205ef8';
$this->emailFrom = 'customersuccess@kanarys.com';
$this->emailFromName = 'Kanarys';
$this->emailTitle = 'DEI Assessment';
$this->emailBody = 'Hi {{Attributes.Name}}, Please click url: %url%';
$this->emailHtmlbody = "<p>Hi {{Attributes.Name}},</p><p>Please click below url:<br/><a href='%url%'>Click Here</a></p>";
$this->smsBody = 'Hi {{Attributes.Name}}, Please click url: %url%';
$this->surveyContributions = new ArrayCollection();
$this->pinpointCampaignUsers = new ArrayCollection();
$this->pinpointCampaignQuestions = new ArrayCollection();
$this->campaignSchedules = new ArrayCollection();
}
/**
* @return string
*/
public function __toString()
{
return $this->campaignName;
}
/**
* @return string
*/
public function getLandingPage(): ?string
{
return $this->landingPage = ($this->isLanding) ? $_ENV['APP_PROTOCOL'] . '://' . $_ENV['APP_DOMAIN'] . '/survey-campaign/campaign/' . $this->id : '';
}
public function getId(): ?int
{
return $this->id;
}
public function getCampaignId(): ?string
{
return $this->campaignId;
}
public function setCampaignId(?string $campaignId): self
{
$this->campaignId = $campaignId;
return $this;
}
public function getApplicationId(): ?string
{
return $this->applicationId;
}
public function setApplicationId(string $applicationId): self
{
$this->applicationId = $applicationId;
return $this;
}
public function getSegmentId(): ?string
{
return $this->segmentId;
}
public function setSegmentId(?string $segmentId): self
{
$this->segmentId = $segmentId;
return $this;
}
public function getCampaignName(): ?string
{
return $this->campaignName;
}
public function setCampaignName(string $campaignName): self
{
$this->campaignName = $campaignName;
return $this;
}
public function getCampaigDescription(): ?string
{
return $this->campaignDescription;
}
public function setCampaignDescription(?string $campaignDescription): self
{
$this->campaignDescription = $campaignDescription;
return $this;
}
public function getScheduleFrequency(): ?string
{
return $this->scheduleFrequency;
}
public function setScheduleFrequency(?string $scheduleFrequency): self
{
$this->scheduleFrequency = $scheduleFrequency;
return $this;
}
public function getScheduleStarttype(): ?string
{
return $this->scheduleStarttype;
}
public function setScheduleStarttype(?string $scheduleStarttype): self
{
$this->scheduleStarttype = $scheduleStarttype;
return $this;
}
public function getScheduleStarttime(): DateTime
{
return $this->scheduleStarttime;
}
public function setScheduleStarttime(DateTime $scheduleStarttime): self
{
$this->scheduleStarttime = $scheduleStarttime->setTimezone(new DateTimeZone('US/Central'));
return $this;
}
public function getScheduleEndtime(): ?DateTime
{
return $this->scheduleEndtime;
}
public function setScheduleEndtime(?DateTime $scheduleEndtime): self
{
$this->scheduleEndtime = $scheduleEndtime;
return $this;
}
public function getScheduleTimezone(): ?string
{
return $this->scheduleTimezone;
}
public function setScheduleTimezone(?string $scheduleTimezone): self
{
$this->scheduleTimezone = $scheduleTimezone;
return $this;
}
public function getChannelType(): ?string
{
return $this->channelType;
}
public function setChannelType(string $channelType): self
{
$this->channelType = $channelType;
return $this;
}
public function getFormType(): ?string
{
return $this->formType;
}
public function setFormType(string $formType): self
{
$this->formType = $formType;
return $this;
}
public function getCampaignType(): ?string
{
return $this->campaignType;
}
public function setCampaignType(string $campaignType): self
{
$this->campaignType = $campaignType;
return $this;
}
public function getIsLanding(): bool
{
return $this->isLanding;
}
public function setIsLanding(?bool $isLanding): self
{
if (null === $isLanding) {
$this->isLanding = false;
} else {
$this->isLanding = $isLanding;
}
return $this;
}
public function getIsRetargetUsers(): bool
{
return $this->isRetargetUsers;
}
public function getRetargetType(): string
{
return $this->retargetType;
}
public function setRetargetType(string $retargetType): self
{
$this->retargetType = $retargetType;
return $this;
}
public function getIsLanguageSelection(): bool
{
return $this->isLanguageSelection;
}
public function setIsLanguageSelection(?bool $isLanguageSelection): self
{
if (null === $isLanguageSelection) {
$this->isLanguageSelection = false;
} else {
$this->isLanguageSelection = $isLanguageSelection;
}
return $this;
}
public function setIsPositionSelection(?bool $isPositionSelection): self
{
if (null === $isPositionSelection) {
$this->isPositionSelection = false;
} else {
$this->isPositionSelection = $isPositionSelection;
}
return $this;
}
public function getIsPositionSelection(): bool
{
return $this->isPositionSelection;
}
public function setIsDepartmentSelection(?bool $isDepartmentSelection): self
{
if (null === $isDepartmentSelection) {
$this->isDepartmentSelection = false;
} else {
$this->isDepartmentSelection = $isDepartmentSelection;
}
return $this;
}
public function getIsDepartmentSelection(): bool
{
return $this->isDepartmentSelection;
}
public function setIsBirthDateSelection(?bool $isBirthDateSelection): self
{
if (null === $isBirthDateSelection) {
$this->isBirthDateSelection = false;
} else {
$this->isBirthDateSelection = $isBirthDateSelection;
}
return $this;
}
public function getIsBirthDateSelection(): bool
{
return $this->isBirthDateSelection;
}
public function setIsEthnicitySelection(?bool $isEthnicitySelection): self
{
if (null === $isEthnicitySelection) {
$this->isEthnicitySelection = false;
} else {
$this->isEthnicitySelection = $isEthnicitySelection;
}
return $this;
}
public function getIsEthnicitySelection(): bool
{
return $this->isEthnicitySelection;
}
public function getIsGenderSelection(): bool
{
return $this->isGenderSelection;
}
public function setIsGenderSelection(?bool $isGenderSelection): self
{
if (null === $isGenderSelection) {
$this->isGenderSelection = false;
} else {
$this->isGenderSelection = $isGenderSelection;
}
return $this;
}
public function getIsRaceSelection(): bool
{
return $this->isRaceSelection;
}
public function setIsRaceSelection(?bool $isRaceSelection): self
{
if (null === $isRaceSelection) {
$this->isRaceSelection = false;
} else {
$this->isRaceSelection = $isRaceSelection;
}
return $this;
}
public function setMailAssociatedUser(bool $mailAssociatedUser): void
{
if (null === $mailAssociatedUser) {
$this->mailAssociatedUser = false;
} else {
$this->mailAssociatedUser = $mailAssociatedUser;
}
}
public function getMailAssociatedUser(): bool
{
return $this->mailAssociatedUser;
}
public function setIsRetargetUsers(?bool $isRetargetUsers): self
{
if (null === $isRetargetUsers) {
$this->isRetargetUsers = false;
} else {
$this->isRetargetUsers = $isRetargetUsers;
}
return $this;
}
public function getQuesCountFirst(): int
{
return $this->quesCountFirst;
}
public function setQuesCountFirst(int $quesCountFirst): self
{
$this->quesCountFirst = $quesCountFirst;
return $this;
}
public function getQuesCountAlternate(): int
{
return $this->quesCountAlternate;
}
public function setQuesCountAlternate(int $quesCountAlternate): self
{
$this->quesCountAlternate = $quesCountAlternate;
return $this;
}
public function getDeploymentId(): ?int
{
return $this->deploymentId;
}
public function setDeploymentId(?string $deploymentId): self
{
$this->deploymentId = $deploymentId;
return $this;
}
public function getEmailTitle(): ?string
{
return $this->emailTitle;
}
public function setEmailTitle(?string $emailTitle): self
{
$this->emailTitle = $emailTitle;
return $this;
}
public function getEmailFromName(): ?string
{
return $this->emailFromName;
}
public function setEmailFromName(?string $emailFromName): self
{
$this->emailFromName = $emailFromName;
return $this;
}
public function getEmailFrom(): ?string
{
return $this->emailFrom;
}
public function setEmailFrom(?string $emailFrom): self
{
$this->emailFrom = $emailFrom;
return $this;
}
public function getEmailCC(): ?string
{
return $this->emailCC;
}
public function setEmailCC(?string $emailCC): self
{
$this->emailCC = $emailCC;
return $this;
}
public function getEmail(): ?Email
{
return $this->email;
}
public function setEmail(?Email $email): self
{
$this->email = $email;
return $this;
}
public function getEmailBody(): ?string
{
return $this->emailBody;
}
public function setEmailBody(?string $emailBody): self
{
$this->emailBody = $emailBody;
return $this;
}
public function getEmailHtmlbody(): ?string
{
return $this->emailHtmlbody;
}
public function setEmailHtmlbody(?string $emailHtmlbody): self
{
$this->emailHtmlbody = $emailHtmlbody;
return $this;
}
public function getSmsBody(): ?string
{
return $this->smsBody;
}
public function setSmsBody(?string $smsBody): self
{
$this->smsBody = $smsBody;
return $this;
}
public function getSmsMessagetype(): ?string
{
return $this->smsMessagetype;
}
public function setSmsMessagetype(?string $smsMessagetype): self
{
$this->smsMessagetype = $smsMessagetype;
return $this;
}
public function getSmsSenderid(): ?string
{
return $this->smsSenderid;
}
public function setSmsSenderid(?string $smsSenderid): self
{
$this->smsSenderid = $smsSenderid;
return $this;
}
public function getSurveyCompany(): ?SurveyCompany
{
return $this->surveyCompany;
}
public function setSurveyCompany(?SurveyCompany $surveyCompany): self
{
$this->surveyCompany = $surveyCompany;
return $this;
}
public function getDepartment(): ?Department
{
return $this->department;
}
public function setDepartment(?Department $department): self
{
$this->department = $department;
return $this;
}
public function getCity(): ?City
{
return $this->city;
}
public function setCity(?City $city): self
{
$this->city = $city;
return $this;
}
/**
* @return Collection|SurveyContribution[]
*/
public function getSurveyContributions(): Collection
{
return $this->surveyContributions;
}
public function addSurveyContribution(SurveyContribution $surveyContribution): self
{
if (!$this->surveyContributions->contains($surveyContribution)) {
$this->surveyContributions[] = $surveyContribution;
$surveyContribution->setUser($surveyContribution->getUser());
}
return $this;
}
public function removeSurveyContribution(SurveyContribution $surveyContribution): self
{
if ($this->surveyContributions->contains($surveyContribution)) {
$this->surveyContributions->removeElement($surveyContribution);
// set the owning side to null (unless already changed)
if ($surveyContribution->getUser() === $this) {
$surveyContribution->setUser(null);
}
}
return $this;
}
public function getPinpointCampaign(): ?PinpointCampaign
{
return $this->pinpointCampaign;
}
public function setPinpointCampaign(?PinpointCampaign $pinpointCampaign): self
{
$this->pinpointCampaign = $pinpointCampaign;
return $this;
}
#[Groups('pinpointCampaign:item')]
public function getTotalActiveUser(): int
{
return $this->pinpointCampaignUsers->filter(function ($item) {
return true == $item->getUser()->getEnable();
})->count();
}
#[Groups('pinpointCampaign:item')]
public function getTotalInActiveUser(): int
{
return $this->pinpointCampaignUsers->filter(function ($item) {
return true == $item->getUser()->getEnable();
})->count();
}
#[Groups('pinpointCampaign:item')]
public function getTotalSurveyQuestion(): int
{
return $this->surveyCompany->getSurveyCompanyQuestions()->count();
}
/**
* @return Collection<int, PinpointCampaignQuestion>
*/
public function getPinpointCampaignQuestions(): Collection
{
return $this->pinpointCampaignQuestions;
}
public function addPinpointCampaignQuestion(PinpointCampaignQuestion $pinpointCampaignQuestion): self
{
if (!$this->pinpointCampaignQuestions->contains($pinpointCampaignQuestion)) {
$this->pinpointCampaignQuestions[] = $pinpointCampaignQuestion;
$pinpointCampaignQuestion->setPinpointCampaign($this);
}
return $this;
}
public function removePinpointCampaignQuestion(PinpointCampaignQuestion $pinpointCampaignQuestion): self
{
if ($this->pinpointCampaignQuestions->removeElement($pinpointCampaignQuestion)) {
// set the owning side to null (unless already changed)
if ($pinpointCampaignQuestion->getPinpointCampaign() === $this) {
$pinpointCampaignQuestion->setPinpointCampaign(null);
}
}
return $this;
}
/**
* @return Collection<int, PinpointCampaignUser>
*/
public function getPinpointCampaignUsers(): Collection
{
return $this->pinpointCampaignUsers;
}
public function addPinpointCampaignUser(PinpointCampaignUser $pinpointCampaignUser): self
{
if (!$this->pinpointCampaignUsers->contains($pinpointCampaignUser)) {
$this->pinpointCampaignUsers[] = $pinpointCampaignUser;
$pinpointCampaignUser->setPinpointCampaign($this);
}
return $this;
}
public function removePinpointCampaignUser(PinpointCampaignUser $pinpointCampaignUser): self
{
if ($this->pinpointCampaignUsers->removeElement($pinpointCampaignUser)) {
// set the owning side to null (unless already changed)
if ($pinpointCampaignUser->getPinpointCampaign() === $this) {
$pinpointCampaignUser->setPinpointCampaign(null);
}
}
return $this;
}
/**
* @return Collection<int, CampaignSchedule>
*/
public function getCampaignSchedules(): Collection
{
return $this->campaignSchedules;
}
public function addCampaignSchedule(CampaignSchedule $campaignSchedule): self
{
if (!$this->campaignSchedules->contains($campaignSchedule)) {
$this->campaignSchedules[] = $campaignSchedule;
$campaignSchedule->setPinpointCampaign($this);
}
return $this;
}
public function removeCampaignSchedule(CampaignSchedule $campaignSchedule): self
{
if ($this->campaignSchedules->removeElement($campaignSchedule)) {
// set the owning side to null (unless already changed)
if ($campaignSchedule->getPinpointCampaign() === $this) {
$campaignSchedule->setPinpointCampaign(null);
}
}
return $this;
}
/**
* @Groups({"pinpointCampaign:item","pinpointCampaign:list"})
*/
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
/**
* @Groups({"pinpointCampaign:item","pinpointCampaign:list"})
* Returns string.
*/
public function getIsExpired(): ?string
{
$now = new DateTime('now');
$end = $this->scheduleEndtime;
if (null === $this->scheduleEndtime) {
return 'Active';
} else {
return ($end < $now ) ? 'Expired' : 'Active';
}
}
public function getImage(): ?MediaImage
{
return $this->image;
}
public function setImage(?MediaImage $image): self
{
$this->image = $image;
return $this;
}
}