<?php
namespace App\Database\Domain\Entity;
use App\Database\Domain\Entity\User\User;
use App\Database\Domain\Traits\CreationDateTrait;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity()
*/
class Log extends AbstractEntity
{
use CreationDateTrait;
public const LEVEL_INFO = 'info';
public const LEVEL_WARNING = 'warning';
public const LEVEL_ERROR = 'error';
public const SOURCE_GLOBAL = 'global';
public const SOURCE_GOOGLE = 'google';
public const SOURCE_FACEBOOK = 'facebook';
public const SOURCE_STRIPE = 'stripe';
public const SOURCE_APPLE = 'apple';
public const SOURCE_MAILER_TRANSPORT = 'mailer.transport';
/**
* @ORM\ManyToOne(targetEntity="App\Database\Domain\Entity\User\User")
*
* @ORM\JoinColumn(nullable=true)
*/
private ?User $user;
/**
* @Assert\Choice(choices={
* Log::LEVEL_INFO,
* Log::LEVEL_WARNING,
* Log::LEVEL_ERROR
* }, message="Invalid log level"
* )
*
* @ORM\Column(type="string", nullable=false)
*/
private string $level;
/**
* @ORM\Column(type="string")
*/
private string $source;
/**
* @ORM\Column(type="string", nullable=false)
*/
private string $message;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $extras;
public function __construct(
string $id,
string $level,
string $source,
string $message,
?array $extras = null,
?User $user = null
) {
$this->id = $id;
$this->level = $level;
$this->message = $message;
$this->source = $source;
$this->extras = $extras;
$this->user = $user;
$this->creationDate = new \DateTimeImmutable();
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getLevel(): string
{
return $this->level;
}
public function setLevel(string $level): self
{
$this->level = $level;
return $this;
}
public function getMessage(): string
{
return $this->message;
}
public function setMessage(string $message): self
{
$this->message = $message;
return $this;
}
public function getExtras(): ?array
{
return $this->extras;
}
public function setExtras(?array $extras): self
{
$this->extras = $extras;
return $this;
}
}