<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Entity(repositoryClass="App\Repository\CompanyContributionRepository")
*/
class CompanyContribution
{
use TimestampableEntity;
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/
private $user;
/**
* @var CompanyFormQuestion
*
* @ORM\ManyToOne(targetEntity="App\Entity\CompanyFormQuestion")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/
private $formQuestion;
/**
* @var Company
*
* @ORM\ManyToOne(targetEntity="App\Entity\Company", inversedBy="formContributions")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
*/
private $company;
/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
*/
private $valueOld;
/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
*/
private $valueNew;
/**
* @var CompanyFormAnswer
*
* @ORM\ManyToOne(targetEntity="App\Entity\CompanyFormAnswer")
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
*/
private $formAnswerOld;
/**
* @var CompanyFormAnswer
*
* @ORM\ManyToOne(targetEntity="App\Entity\CompanyFormAnswer")
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
*/
private $formAnswerNew;
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="App\Entity\CompanyFormAnswer")
* @ORM\JoinTable(name="company_contribution_company_form_answer_old")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $formAnswersOld;
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="App\Entity\CompanyFormAnswer")
* @ORM\JoinTable(name="company_contribution_company_form_answer_new")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $formAnswersNew;
/**
* @var string
*
* @ORM\Column(type="string", length=64, nullable=true)
*/
private $daysOffTypeOld;
/**
* @var string
*
* @ORM\Column(type="string", length=64, nullable=true)
*/
private $daysOffTypeNew;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $affinityGroupsOld;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $affinityGroupsNew;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $affinityGroupsChampionOld;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $affinityGroupsChampionNew;
/**
* @var bool
*
* @ORM\Column(type="boolean")
*/
private $published;
/**
* Virtual.
*/
private $value;
public function __construct()
{
$this->published = false;
$this->formAnswersOld = new ArrayCollection();
$this->formAnswersNew = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getValueOld(): ?string
{
return $this->valueOld;
}
public function setValueOld(?string $valueOld): self
{
$this->valueOld = $valueOld;
return $this;
}
public function getValueNew(): ?string
{
return $this->valueNew;
}
public function setValueNew(?string $valueNew): self
{
$this->valueNew = $valueNew;
return $this;
}
public function getValue(): ?string
{
if (null !== $this->getFormAnswerNew()) {
return $this->getFormAnswerNew()->getValue().((null !== $this->getValueNew()) ? ' ('.$this->getValueNew().')' : '');
} elseif (null !== $this->getValueNew()) {
$value = strip_tags($this->getValueNew());
if (null !== $this->getDaysOffTypeNew()) {
$value .= ' ('.$this->getDaysOffTypeNew().')';
}
return $value;
} elseif ($this->formAnswersNew->count() > 0) {
$value = '';
foreach ($this->formAnswersNew as $companyFormAnswer) {
/** @var CompanyFormAnswer $companyFormAnswer */
$value = $companyFormAnswer->getValue()."\n";
}
return $value;
} else {
$value = '';
if (null !== $this->getAffinityGroupsNew()) {
$value .= (($this->getAffinityGroupsNew()) ? 'Yes' : 'No');
}
if (null !== $this->getAffinityGroupsChampionNew()) {
$value .= ' (Executive Champion: '.(($this->getAffinityGroupsChampionNew()) ? 'yes' : 'no').')';
}
return $value;
}
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getFormQuestion(): ?CompanyFormQuestion
{
return $this->formQuestion;
}
public function setFormQuestion(?CompanyFormQuestion $formQuestion): self
{
$this->formQuestion = $formQuestion;
return $this;
}
public function getCompany(): ?Company
{
return $this->company;
}
public function setCompany(?Company $company): self
{
$this->company = $company;
return $this;
}
public function getFormAnswerOld(): ?CompanyFormAnswer
{
return $this->formAnswerOld;
}
public function setFormAnswerOld(?CompanyFormAnswer $formAnswerOld): self
{
$this->formAnswerOld = $formAnswerOld;
return $this;
}
public function getFormAnswerNew(): ?CompanyFormAnswer
{
return $this->formAnswerNew;
}
public function setFormAnswerNew(?CompanyFormAnswer $formAnswerNew): self
{
$this->formAnswerNew = $formAnswerNew;
return $this;
}
/**
* @return Collection|CompanyFormAnswer[]
*/
public function getFormAnswersOld(): Collection
{
return $this->formAnswersOld;
}
public function addFormAnswersOld(CompanyFormAnswer $formAnswersOld): self
{
if (!$this->formAnswersOld->contains($formAnswersOld)) {
$this->formAnswersOld[] = $formAnswersOld;
}
return $this;
}
public function removeFormAnswersOld(CompanyFormAnswer $formAnswersOld): self
{
if ($this->formAnswersOld->contains($formAnswersOld)) {
$this->formAnswersOld->removeElement($formAnswersOld);
}
return $this;
}
/**
* @return Collection|CompanyFormAnswer[]
*/
public function getFormAnswersNew(): Collection
{
return $this->formAnswersNew;
}
public function addFormAnswersNew(CompanyFormAnswer $formAnswersNew): self
{
if (!$this->formAnswersNew->contains($formAnswersNew)) {
$this->formAnswersNew[] = $formAnswersNew;
}
return $this;
}
public function removeFormAnswersNew(CompanyFormAnswer $formAnswersNew): self
{
if ($this->formAnswersNew->contains($formAnswersNew)) {
$this->formAnswersNew->removeElement($formAnswersNew);
}
return $this;
}
public function getDaysOffTypeOld(): ?string
{
return $this->daysOffTypeOld;
}
public function setDaysOffTypeOld(?string $daysOffTypeOld): self
{
$this->daysOffTypeOld = $daysOffTypeOld;
return $this;
}
public function getDaysOffTypeNew(): ?string
{
return $this->daysOffTypeNew;
}
public function setDaysOffTypeNew(?string $daysOffTypeNew): self
{
$this->daysOffTypeNew = $daysOffTypeNew;
return $this;
}
public function getAffinityGroupsOld(): ?bool
{
return $this->affinityGroupsOld;
}
public function setAffinityGroupsOld(?bool $affinityGroupsOld): self
{
$this->affinityGroupsOld = $affinityGroupsOld;
return $this;
}
public function getAffinityGroupsNew(): ?bool
{
return $this->affinityGroupsNew;
}
public function setAffinityGroupsNew(?bool $affinityGroupsNew): self
{
$this->affinityGroupsNew = $affinityGroupsNew;
return $this;
}
public function getAffinityGroupsChampionOld(): ?bool
{
return $this->affinityGroupsChampionOld;
}
public function setAffinityGroupsChampionOld(?bool $affinityGroupsChampionOld): self
{
$this->affinityGroupsChampionOld = $affinityGroupsChampionOld;
return $this;
}
public function getAffinityGroupsChampionNew(): ?bool
{
return $this->affinityGroupsChampionNew;
}
public function setAffinityGroupsChampionNew(?bool $affinityGroupsChampionNew): self
{
$this->affinityGroupsChampionNew = $affinityGroupsChampionNew;
return $this;
}
public function getPublished(): ?bool
{
return $this->published;
}
public function setPublished(bool $published): self
{
$this->published = $published;
return $this;
}
}