<?php
namespace App\Entity;
use App\Utility\DateTimeUtility;
use App\Utility\GuidUtility;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*
* @ORM\Table(
* name="recurrent_job_status_change_log_entries"
* )
*/
class RecurrentJobStatusChangeLogEntry
{
public const REASON_QUOTA_LIMIT_WAS_EXCEEDED = 0;
public const REASON_MAX_CLICKS_PER_TIME_INTERVAL_REACHED = 1;
public const REASON_BILLWERK_CONTRACT_PAYMENT_ESCALATED = 2;
public const REASON_MAX_NUMBER_OF_PROLONGATIONS_REACHED = 3;
public const REASON_PLUS_JOB_OWNER_MEMBERSHIP_EXPIRED = 4;
public const REASON_PLUS_JOB_EXPIRED_AND_AUTOMATIC_RENEWAL_IS_DEACTIVATED = 5;
public const REASON_PLUS_JOB_BOOKING_ERROR = 6;
public const REASON_ORGANIC_DEACTIVATION_ON_WEBSITE = 7;
public const REASON_DEACTIVATED_BY_ADMIN = 8;
public const REASON_ORGANIC_ACTIVATION_ON_WEBSITE = 9;
public const REASON_ACTIVATED_BY_ADMIN = 10;
public const REASON_ORGANIC_REACTIVATION_ON_WEBSITE = 11;
public const REASON_RECURRENT_JOB_OWNER_PAYMENT_IS_BACK_IN_LINE = 12;
public const REASON_ACTIVATION_DURING_CUSTOMER_JOB_IMPORT_OR_UPDATE = 13;
public const REASON_RECURRENT_JOB_ACTIVATED_DUE_TO_BUGFIX_2088 = 14;
public const REASON_QUOTA_BECAME_AVAILABLE_AGAIN = 15;
public const REASON_QUOTA_WAS_DEACTIVATED = 16;
public const REASON_ADMIN_MASS_EDITOR = 17;
public const REASON_LIMIT_HAS_CAPACITY_AGAIN = 18;
public const REASON_DEV_COMMAND = 19;
public const REASON_PLUS_JOB_WAS_MANUALLY_ANNULLED_ON_BILLWERK = 20;
public function __construct(
RecurrentJob $recurrentJob,
int $newStatus,
?int $reason
) {
$this->recurrentJob = $recurrentJob;
$this->newStatus = $newStatus;
$this->reason = $reason;
$this->occuredAt = DateTimeUtility::createDateTimeUtc();
}
/**
* @var string
*
* @ORM\GeneratedValue(strategy="CUSTOM")
*
* @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
*
* @ORM\Column(name="id", type="guid")
*
* @ORM\Id
*/
protected $id;
public function setId(string $id): void
{
GuidUtility::validOrThrow($id);
$this->id = $id;
}
public function getId()
{
return $this->id;
}
/**
* @ORM\Column(name="new_status", type="smallint", nullable=false)
*/
private int $newStatus;
public function setNewStatus(int $newStatus)
{
$this->newStatus = $newStatus;
}
public function getNewStatus(): int
{
return $this->newStatus;
}
/**
* @ORM\Column(name="occured_at", type="datetime", nullable=false)
*/
private DateTime $occuredAt;
public function setOccuredAt(DateTime $occuredAt): void
{
$this->occuredAt = $occuredAt;
}
public function getOccuredAt(): DateTime
{
return $this->occuredAt;
}
/**
* @ORM\Column(name="reason", type="smallint", nullable=true)
*/
private ?int $reason;
public function getReason(): ?int
{
return $this->reason;
}
public function setReason(?int $reason): void
{
$this->reason = $reason;
}
/**
* @ORM\ManyToOne(targetEntity="App\Entity\RecurrentJob", inversedBy="statusChangeLogEntries", cascade={"persist"})
*
* @ORM\JoinColumn(name="recurrent_jobs_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
*/
private RecurrentJob $recurrentJob;
public function getRecurrentJob(): RecurrentJob
{
return $this->recurrentJob;
}
}