src/Entity/Formula.php line 14
<?phpnamespace App\Entity;use App\Enum\FormulaType;use App\Repository\FormulaRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\DBAL\Types\Types;use Doctrine\ORM\Mapping as ORM;use Gedmo\Timestampable\Traits\TimestampableEntity;#[ORM\Entity(repositoryClass: FormulaRepository::class)]class Formula{use TimestampableEntity;#[ORM\Id]#[ORM\GeneratedValue]#[ORM\Column]private ?int $id = null;#[ORM\Column(length: 255)]private ?string $name = null;#[ORM\Column(type: Types::TEXT, nullable: true)]private ?string $formulaExpression = null;#[ORM\Column(type: Types::TEXT, nullable: true)]private ?string $description = null;#[ORM\Column(length: 255)]private ?FormulaType $formulaType = null;#[ORM\OneToMany(mappedBy: 'formula', targetEntity: RuleCondition::class)]private Collection $ruleConditions;#[ORM\OneToMany(mappedBy: 'hold', targetEntity: RuleResult::class)]private Collection $holdRuleResults;#[ORM\OneToMany(mappedBy: 'minimum', targetEntity: RuleResult::class)]private Collection $minimumRuleResults;#[ORM\OneToMany(mappedBy: 'formula', targetEntity: RuleResult::class)]private Collection $ruleResults;#[ORM\OneToMany(mappedBy: 'formula', targetEntity: PayCurve::class)]private Collection $payCurves;public function __construct(){$this->ruleConditions = new ArrayCollection();$this->holdRuleResults = new ArrayCollection();$this->minimumRuleResults = new ArrayCollection();$this->ruleResults = new ArrayCollection();$this->payCurves = new ArrayCollection();}public function getId(): ?int{return $this->id;}public function getName(): ?string{return $this->name;}public function setName(string $name): self{$this->name = $name;return $this;}public function getFormulaExpression(): ?string{return $this->formulaExpression;}public function setFormulaExpression(?string $formulaExpression): self{$this->formulaExpression = $formulaExpression;return $this;}public function getDescription(): ?string{return $this->description;}public function setDescription(?string $description): self{$this->description = $description;return $this;}public function getFormulaType(): ?FormulaType{return $this->formulaType;}public function setFormulaType(FormulaType $formulaType): self{$this->formulaType = $formulaType;return $this;}/*** @return Collection<int, RuleCondition>*/public function getRuleConditions(): Collection{return $this->ruleConditions;}public function addRuleCondition(RuleCondition $ruleCondition): self{if (!$this->ruleConditions->contains($ruleCondition)) {$this->ruleConditions->add($ruleCondition);$ruleCondition->setFormula($this);}return $this;}public function removeRuleCondition(RuleCondition $ruleCondition): self{if ($this->ruleConditions->removeElement($ruleCondition)) {// set the owning side to null (unless already changed)if ($ruleCondition->getFormula() === $this) {$ruleCondition->setFormula(null);}}return $this;}public function __toString(): string{return (string)$this->name;}/*** @return Collection<int, RuleResult>*/public function getHoldRuleResults(): Collection{return $this->holdRuleResults;}public function addHoldRuleResult(RuleResult $holdRuleResult): static{if (!$this->holdRuleResults->contains($holdRuleResult)) {$this->holdRuleResults->add($holdRuleResult);$holdRuleResult->setHold($this);}return $this;}public function removeHoldRuleResult(RuleResult $holdRuleResult): static{if ($this->holdRuleResults->removeElement($holdRuleResult)) {// set the owning side to null (unless already changed)if ($holdRuleResult->getHold() === $this) {$holdRuleResult->setHold(null);}}return $this;}/*** @return Collection<int, RuleResult>*/public function getMinimumRuleResults(): Collection{return $this->minimumRuleResults;}public function addMinimumRuleResult(RuleResult $minimumRuleResult): static{if (!$this->minimumRuleResults->contains($minimumRuleResult)) {$this->minimumRuleResults->add($minimumRuleResult);$minimumRuleResult->setMinimum($this);}return $this;}public function removeMinimumRuleResult(RuleResult $minimumRuleResult): static{if ($this->minimumRuleResults->removeElement($minimumRuleResult)) {// set the owning side to null (unless already changed)if ($minimumRuleResult->getMinimum() === $this) {$minimumRuleResult->setMinimum(null);}}return $this;}/*** @return Collection<int, RuleResult>*/public function getRuleResults(): Collection{return $this->ruleResults;}public function addRuleResult(RuleResult $ruleResult): static{if (!$this->ruleResults->contains($ruleResult)) {$this->ruleResults->add($ruleResult);$ruleResult->setFormula($this);}return $this;}public function removeRuleResult(RuleResult $ruleResult): static{if ($this->ruleResults->removeElement($ruleResult)) {// set the owning side to null (unless already changed)if ($ruleResult->getFormula() === $this) {$ruleResult->setFormula(null);}}return $this;}/*** @return Collection<int, PayCurve>*/public function getPayCurves(): Collection{return $this->payCurves;}public function addPayCurve(PayCurve $payCurve): static{if (!$this->payCurves->contains($payCurve)) {$this->payCurves->add($payCurve);$payCurve->setFormula($this);}return $this;}public function removePayCurve(PayCurve $payCurve): static{if ($this->payCurves->removeElement($payCurve)) {// set the owning side to null (unless already changed)if ($payCurve->getFormula() === $this) {$payCurve->setFormula(null);}}return $this;}/*** Get all rules where this formula is used* @return Collection<int, Rule>*/public function getRelatedRules(): Collection{$rules = new ArrayCollection();// Get rules from RuleConditionsforeach ($this->ruleConditions as $ruleCondition) {$ruleVersion = $ruleCondition->getRuleVersion();if ($ruleVersion && $ruleVersion->getRule() && !$rules->contains($ruleVersion->getRule())) {$rules->add($ruleVersion->getRule());}}// Get rules from RuleResults (formula)foreach ($this->ruleResults as $ruleResult) {if ($ruleResult->getRule() && !$rules->contains($ruleResult->getRule())) {$rules->add($ruleResult->getRule());}}// Get rules from RuleResults (hold)foreach ($this->holdRuleResults as $ruleResult) {if ($ruleResult->getRule() && !$rules->contains($ruleResult->getRule())) {$rules->add($ruleResult->getRule());}}// Get rules from RuleResults (minimum)foreach ($this->minimumRuleResults as $ruleResult) {if ($ruleResult->getRule() && !$rules->contains($ruleResult->getRule())) {$rules->add($ruleResult->getRule());}}return $rules;}}