src/App/Entity/ExternalPartner/IntegratedExternalPartnerCustomerCampaign.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity\ExternalPartner;
  3. use App\Utility\ReflectionHelper;
  4. use DateTime;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Exception;
  7. /**
  8. * @ORM\Entity
  9. *
  10. * @ORM\Table(
  11. * name="integrated_external_partner_customer_campaigns"
  12. * )
  13. */
  14. class IntegratedExternalPartnerCustomerCampaign
  15. {
  16. public const CALCULATION_TYPE_TOTAL_VOLUME_FOR_FORWARDS = 0;
  17. public const CALCULATION_TYPE_PRICE_PER_RECURRENT_JOB = 1;
  18. /** @throws Exception */
  19. public function __construct(IntegratedExternalPartnerCustomer $integratedExternalPartnerCustomer, string $name, DateTime $startDate, DateTime $endDate, int $calculationType, float $price)
  20. {
  21. if (!ReflectionHelper::hasConstWithValue(self::class, 'CALCULATION_TYPE_', $calculationType)) {
  22. throw new Exception('Value ' . $calculationType . ' not allowed for $calculationType.');
  23. }
  24. $this->integratedExternalPartnerCustomer = $integratedExternalPartnerCustomer;
  25. $this->name = $name;
  26. $this->calculationType = $calculationType;
  27. $this->price = $price;
  28. $this->endDate = $endDate;
  29. $this->startDate = $startDate;
  30. }
  31. /**
  32. * @ORM\GeneratedValue(strategy="CUSTOM")
  33. *
  34. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  35. *
  36. * @ORM\Column(name="id", type="guid")
  37. *
  38. * @ORM\Id
  39. */
  40. protected string $id;
  41. public function getId(): string
  42. {
  43. return $this->id;
  44. }
  45. /**
  46. * @ORM\Column(name="name", type="string", length=1024)
  47. */
  48. protected string $name;
  49. public function getName(): string
  50. {
  51. return $this->name;
  52. }
  53. public function setName(string $name): void
  54. {
  55. $this->name = $name;
  56. }
  57. /**
  58. * @ORM\Column(name="calculation_type", type="integer")
  59. */
  60. private int $calculationType;
  61. public function getCalculationType(): int
  62. {
  63. return $this->calculationType;
  64. }
  65. public function setCalculationType(int $calculationType): void
  66. {
  67. $this->calculationType = $calculationType;
  68. }
  69. /**
  70. * @ORM\Column(name="price", type="float")
  71. */
  72. private float $price;
  73. public function getPrice(): float
  74. {
  75. return $this->price;
  76. }
  77. public function setPrice(float $price): void
  78. {
  79. $this->price = $price;
  80. }
  81. /**
  82. * @ORM\Column(name="end_date", type="datetime", nullable=false)
  83. */
  84. protected DateTime $endDate;
  85. public function setEndDate(DateTime $endDate): void
  86. {
  87. $this->endDate = $endDate;
  88. }
  89. public function getEndDate(): DateTime
  90. {
  91. return $this->endDate;
  92. }
  93. /**
  94. * @ORM\Column(name="start_date", type="datetime", nullable=false)
  95. */
  96. protected DateTime $startDate;
  97. public function setStartDate(DateTime $startDate): void
  98. {
  99. $this->startDate = $startDate;
  100. }
  101. public function getStartDate(): DateTime
  102. {
  103. return $this->startDate;
  104. }
  105. /**
  106. * @ORM\ManyToOne(targetEntity="App\Entity\ExternalPartner\IntegratedExternalPartnerCustomer", inversedBy="campaigns", cascade={"persist"})
  107. *
  108. * @ORM\JoinColumn(name="integrated_external_partner_customers_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  109. */
  110. protected IntegratedExternalPartnerCustomer $integratedExternalPartnerCustomer;
  111. public function getIntegratedExternalPartnerCustomer(): IntegratedExternalPartnerCustomer
  112. {
  113. return $this->integratedExternalPartnerCustomer;
  114. }
  115. public function setIntegratedExternalPartnerCustomer(IntegratedExternalPartnerCustomer $integratedExternalPartnerCustomer): void
  116. {
  117. $this->integratedExternalPartnerCustomer = $integratedExternalPartnerCustomer;
  118. }
  119. }