src/App/Entity/ExternalPartner/ExternalPartnerGauge.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 InvalidArgumentException;
  7. /**
  8. * @ORM\Entity
  9. *
  10. * @ORM\Table(
  11. * name="external_partner_gauges"
  12. * )
  13. */
  14. class ExternalPartnerGauge
  15. {
  16. public const GAUGE_TYPE_NUMBER_OF_ACTIVE_RECURRENT_JOBS = 0;
  17. public const GAUGE_TYPE_TOTAL_QUOTA = 1;
  18. public const GAUGE_TYPE_USED_QUOTA = 2;
  19. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOBLIFT_FEED = 3;
  20. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOBRAPIDO_FEED = 4;
  21. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_TALENTCOM_FEED = 5;
  22. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOBLIFT_C_FEED = 6;
  23. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOBRAPIDO_C_FEED = 7;
  24. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_TALENTCOM_C_FEED = 8;
  25. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_KIMETA_C_FEED = 9;
  26. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_STELLENONLINE_FEED = 10;
  27. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_STELLENONLINE_C_FEED = 11;
  28. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_EBAY_FEED = 12;
  29. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_MEINESTADT_C_FEED = 13;
  30. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_MEINESTADT_FEED = 14;
  31. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_KIMETA_FEED = 15;
  32. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOBIJOBA_FEED = 16;
  33. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOBIJOBA_C_FEED = 17;
  34. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_WHATJOBS_FEED = 18;
  35. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_WHATJOBS_C_FEED = 19;
  36. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOOBLE_FEED = 20;
  37. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOOBLE_C_FEED = 21;
  38. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_EBAY_EXTENDED_FEED = 22;
  39. public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_STEPSTONE_FEED = 23;
  40. public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_STEPSTONE_C_FEED = 24;
  41. public function __construct(
  42. int $gaugeType,
  43. DateTime $measuredAt,
  44. IntegratedExternalPartnerCustomer $customer,
  45. ?int $value,
  46. ?float $floatValue
  47. ) {
  48. if (!ReflectionHelper::hasConstWithValue(self::class, 'GAUGE_TYPE_', $gaugeType)) {
  49. throw new InvalidArgumentException('Value ' . $gaugeType . ' not allowed for $gaugeType.');
  50. }
  51. $this->gaugeType = $gaugeType;
  52. $this->measuredAt = $measuredAt;
  53. $this->integratedExternalPartnerCustomerId = $customer->getId();
  54. $this->value = $value;
  55. $this->floatValue = $floatValue;
  56. }
  57. /**
  58. * @ORM\GeneratedValue(strategy="CUSTOM")
  59. *
  60. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  61. *
  62. * @ORM\Column(name="id", type="guid")
  63. *
  64. * @ORM\Id
  65. */
  66. private string $id;
  67. /**
  68. * @ORM\Column(name="gauge_type", type="smallint", nullable=false)
  69. */
  70. private int $gaugeType;
  71. /**
  72. * @ORM\Column(name="measured_at", type="datetime", nullable=false)
  73. */
  74. private DateTime $measuredAt;
  75. /**
  76. * @ORM\Column(name="integrated_external_partner_customer_id", type="guid", nullable=false)
  77. */
  78. private string $integratedExternalPartnerCustomerId;
  79. /**
  80. * @ORM\Column(name="value", type="integer", nullable=true)
  81. */
  82. private ?int $value = null;
  83. /**
  84. * @ORM\Column(name="float_value", type="float", nullable=true)
  85. */
  86. private ?float $floatValue = null;
  87. public function getId(): string
  88. {
  89. return $this->id;
  90. }
  91. public function getGaugeType(): int
  92. {
  93. return $this->gaugeType;
  94. }
  95. public function getMeasuredAt(): DateTime
  96. {
  97. return $this->measuredAt;
  98. }
  99. public function getIntegratedExternalPartnerCustomerId(): string
  100. {
  101. return $this->integratedExternalPartnerCustomerId;
  102. }
  103. public function getValue(): ?int
  104. {
  105. return $this->value;
  106. }
  107. public function getFloatValue(): ?float
  108. {
  109. return $this->floatValue;
  110. }
  111. }