<?php
namespace App\Entity;
use App\Utility\GuidUtility;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Exception;
/**
* @ORM\Entity
*
* @ORM\Table(
* name="webrequest_events",
* indexes={
*
* @ORM\Index(name="occured_at_idx", columns={"occured_at"})
* }
* )
*/
class WebrequestEvent
{
/**
* @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(): ?string
{
return $this->id;
}
/**
* @var DateTime
*
* @ORM\Column(name="occured_at", type="datetime", nullable=false)
*/
protected $occuredAt;
public function setOccuredAt(DateTime $occuredAt): void
{
$this->occuredAt = $occuredAt;
}
public function getOccuredAt(): DateTime
{
return $this->occuredAt;
}
/**
* @ORM\Column(name="affected_user_id", type="guid", nullable=true)
*
* We don't make this a foreign key on purpose, we don't need the integrity and don't want to delete event data
* if a user is deleted.
*/
protected $affectedUserId;
public function setAffectedUserId(?string $userId = null): void
{
GuidUtility::validOrThrow($userId, true);
$this->affectedUserId = $userId;
}
public function getAffectedUserId(): ?string
{
return $this->affectedUserId;
}
/**
* @ORM\Column(name="admin_user_id", type="guid", nullable=true)
*
* We don't make this a foreign key on purpose, we don't need the integrity and don't want to delete event data
* if a user is deleted.
*/
protected $adminUserId;
public function setAdminUserId(?string $adminUserId = null): void
{
GuidUtility::validOrThrow($adminUserId, true);
$this->adminUserId = $adminUserId;
}
public function getAdminUserId(): ?string
{
return $this->adminUserId;
}
/**
* @ORM\Column(name="affected_user_is_jobofferer", type="boolean", nullable=true)
*/
protected $affectedUserIsJobofferer;
public function setAffectedUserIsJobofferer(?bool $affectedUserIsJobofferer): void
{
$this->affectedUserIsJobofferer = $affectedUserIsJobofferer;
}
public function getAffectedUserIsJobofferer(): ?bool
{
return $this->affectedUserIsJobofferer;
}
/**
* @ORM\Column(name="affected_user_is_jobseeker", type="boolean", nullable=true)
*/
protected $affectedUserIsJobseeker;
public function setAffectedUserIsJobseeker(?bool $affectedUserIsJobseeker): void
{
$this->affectedUserIsJobseeker = $affectedUserIsJobseeker;
}
public function getAffectedUserIsJobseeker(): ?bool
{
return $this->affectedUserIsJobseeker;
}
/**
* @ORM\Column(name="affected_user_registered_at", type="datetime", nullable=true)
*
* In order to show statistics related to the cohorte of all users registered on day X, we need this field
*
* E.g. "from all user registered on 2018-04-07, how many ran into error X?"
*/
protected $affectedUserRegisteredAt;
public function setAffectedUserRegisteredAt(?DateTime $affectedUserRegisteredAt = null): void
{
$this->affectedUserRegisteredAt = $affectedUserRegisteredAt;
}
public function getAffectedUserRegisteredAt(): ?DateTime
{
return $this->affectedUserRegisteredAt;
}
/**
* @ORM\Column(name="starttime", type="float", nullable=true)
*/
protected $starttime;
public function setStarttime(?float $starttime): void
{
$this->starttime = $starttime;
}
public function getStarttime(): ?float
{
return $this->starttime;
}
/**
* @ORM\Column(name="endtime", type="float", nullable=true)
*/
protected $endtime;
public function setEndtime(float $endtime): void
{
$this->endtime = $endtime;
}
public function getEndtime(): float
{
return $this->endtime;
}
/**
* @ORM\Column(name="statuscode", type="integer", nullable=false)
*/
protected $statuscode;
public function setStatuscode(int $statuscode): void
{
$this->statuscode = $statuscode;
}
public function getStatuscode(): int
{
return $this->statuscode;
}
/**
* @ORM\Column(name="request_method", type="text", length=16384, nullable=false)
*/
protected $requestMethod;
public function setRequestMethod(string $requestMethod): void
{
$this->requestMethod = $requestMethod;
}
public function getRequestMethod(): string
{
return $this->requestMethod;
}
/**
* @ORM\Column(name="request_uri", type="text", length=16384, nullable=false)
*/
protected $requestUri;
public function setRequestUri(string $requestUri): void
{
$this->requestUri = $requestUri;
}
public function getRequestUri(): string
{
return $this->requestUri;
}
/**
* @ORM\Column(name="query_string", type="text", length=16384, nullable=true)
*/
protected $queryString;
public function setQueryString(?string $queryString = null): void
{
$this->queryString = $queryString;
}
public function getQueryString(): ?string
{
return $this->queryString;
}
/**
* @ORM\Column(name="referer", type="text", length=16384, nullable=true)
*/
protected $referer;
public function setReferer(?string $referer = null): void
{
$this->referer = $referer;
}
public function getReferer(): ?string
{
return $this->referer;
}
/**
* @ORM\Column(name="request_headers", type="text", length=32768, nullable=false)
*/
protected $requestHeaders;
/**
* @throws Exception
*/
public function setRequestHeaders(string $requestHeaders): void
{
if (!is_null($requestHeaders)) {
if (is_null(json_decode($requestHeaders))) {
throw new Exception('requestHeaders must be valid JSON');
}
}
$this->requestHeaders = $requestHeaders;
}
public function getRequestHeaders(): string
{
return $this->requestHeaders;
}
/**
* @ORM\Column(name="response_headers", type="text", length=32768, nullable=false)
*/
protected $responseHeaders;
/**
* @throws Exception
*/
public function setResponseHeaders(string $responseHeaders): void
{
if (!is_null($responseHeaders)) {
if (is_null(json_decode($responseHeaders))) {
throw new Exception('responseHeaders must be valid JSON');
}
}
$this->responseHeaders = $responseHeaders;
}
public function getResponseHeaders(): string
{
return $this->responseHeaders;
}
/**
* @ORM\Column(name="symfony_route", type="text", length=2048, nullable=true)
*/
protected $symfonyRoute;
public function setSymfonyRoute(?string $symfonyRoute = null): void
{
$this->symfonyRoute = $symfonyRoute;
}
public function getSymfonyRoute(): ?string
{
return $this->symfonyRoute;
}
/**
* @ORM\Column(name="request_id", type="text", length=256, nullable=true)
*/
protected $requestId;
public function setRequestId(?string $requestId = null): void
{
$this->requestId = $requestId;
}
public function getRequestId(): ?string
{
return $this->requestId;
}
/**
* @ORM\Column(name="session_id", type="text", length=256, nullable=true)
*/
protected $sessionId;
public function setSessionId(?string $sessionId = null): void
{
$this->sessionId = $sessionId;
}
public function getSessionId(): ?string
{
return $this->sessionId;
}
/**
* @ORM\Column(name="client_id", type="text", length=64, nullable=true)
*/
protected $clientId;
public function setClientId(?string $clientId = null): void
{
$this->clientId = $clientId;
}
public function getClientId(): ?string
{
return $this->clientId;
}
/**
* @ORM\Column(name="client_ip_address", type="text", length=64, nullable=false)
*/
private string $clientIp;
/**
* @ORM\Column(name="is_probably_bot_request", type="boolean", nullable=true)
*/
private ?bool $isProbablyBotRequest = null;
}