<?php
namespace App\Entity\ExternalPartner;
use App\Utility\ReflectionHelper;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use InvalidArgumentException;
/**
* @ORM\Entity
*
* @ORM\Table(
* name="external_partner_gauges"
* )
*/
class ExternalPartnerGauge
{
public const GAUGE_TYPE_NUMBER_OF_ACTIVE_RECURRENT_JOBS = 0;
public const GAUGE_TYPE_TOTAL_QUOTA = 1;
public const GAUGE_TYPE_USED_QUOTA = 2;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOBLIFT_FEED = 3;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOBRAPIDO_FEED = 4;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_TALENTCOM_FEED = 5;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOBLIFT_C_FEED = 6;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOBRAPIDO_C_FEED = 7;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_TALENTCOM_C_FEED = 8;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_KIMETA_C_FEED = 9;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_STELLENONLINE_FEED = 10;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_STELLENONLINE_C_FEED = 11;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_EBAY_FEED = 12;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_MEINESTADT_C_FEED = 13;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_MEINESTADT_FEED = 14;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_KIMETA_FEED = 15;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOBIJOBA_FEED = 16;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOBIJOBA_C_FEED = 17;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_WHATJOBS_FEED = 18;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_WHATJOBS_C_FEED = 19;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_JOOBLE_FEED = 20;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_JOOBLE_C_FEED = 21;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_EBAY_EXTENDED_FEED = 22;
public const GAUGE_TYPE_NUMBER_OF_RECURRENT_JOBS_IN_STEPSTONE_FEED = 23;
public const GAUGE_TYPE_AVERAGE_CPC_PRICE_FOR_STEPSTONE_C_FEED = 24;
public function __construct(
int $gaugeType,
DateTime $measuredAt,
IntegratedExternalPartnerCustomer $customer,
?int $value,
?float $floatValue
) {
if (!ReflectionHelper::hasConstWithValue(self::class, 'GAUGE_TYPE_', $gaugeType)) {
throw new InvalidArgumentException('Value ' . $gaugeType . ' not allowed for $gaugeType.');
}
$this->gaugeType = $gaugeType;
$this->measuredAt = $measuredAt;
$this->integratedExternalPartnerCustomerId = $customer->getId();
$this->value = $value;
$this->floatValue = $floatValue;
}
/**
* @ORM\GeneratedValue(strategy="CUSTOM")
*
* @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
*
* @ORM\Column(name="id", type="guid")
*
* @ORM\Id
*/
private string $id;
/**
* @ORM\Column(name="gauge_type", type="smallint", nullable=false)
*/
private int $gaugeType;
/**
* @ORM\Column(name="measured_at", type="datetime", nullable=false)
*/
private DateTime $measuredAt;
/**
* @ORM\Column(name="integrated_external_partner_customer_id", type="guid", nullable=false)
*/
private string $integratedExternalPartnerCustomerId;
/**
* @ORM\Column(name="value", type="integer", nullable=true)
*/
private ?int $value = null;
/**
* @ORM\Column(name="float_value", type="float", nullable=true)
*/
private ?float $floatValue = null;
public function getId(): string
{
return $this->id;
}
public function getGaugeType(): int
{
return $this->gaugeType;
}
public function getMeasuredAt(): DateTime
{
return $this->measuredAt;
}
public function getIntegratedExternalPartnerCustomerId(): string
{
return $this->integratedExternalPartnerCustomerId;
}
public function getValue(): ?int
{
return $this->value;
}
public function getFloatValue(): ?float
{
return $this->floatValue;
}
}