<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\LogRepository")
* @ORM\Table(name="log")
* @ORM\Table(indexes={
* @ORM\Index(name="IDX_LOG_LEVEL_NAME", columns={"level_name"}),
* @ORM\Index(name="IDX_LOG_SECTION", columns={"section"}),
* @ORM\Index(name="IDX_LOG_SOURCE", columns={"source"}),
* @ORM\Index(name="IDX_LOG_CONTEXT", columns={"context"}),
* @ORM\Index(name="IDX_LOG_CREATED_AT", columns={"created_at"}),
* @ORM\Index(name="IDX_LOG_TRIGGERED_BY", columns={"triggered_by"})
* })
* @ORM\HasLifecycleCallbacks
*/
class Log
{
const LOG_LVL_CRITICAL = -2;
const LOG_LVL_ERROR = -1;
const LOG_LVL_NOTICE = 1;
const LOG_LVL_INFO = 2;
const LOG_LVL_DEBUG = 3;
const context = [
'USER' => [
'REGISTER',
'PAYMENT',
],
'PREMIUM' => [
'REGISTER',
'EXTEND',
'UPGRADE',
'CANCEL',
],
'MAILCHIMP' => [
'REQUEST',
'RESPONSE'
],
'PNS' => [//Push Notification Service
'REQUEST',
'SQL'
],
'BROKER' => [
'MRK_REQUEST',
'MRK_RESPONSE',
'AVA_REQUEST',
'AVA_RESPONSE',
'CMT_REQUEST',
'AVA_RESPONSE',
'AVA_REQUEST_ROW',
'AVA_RESPONSE_ROW',
'AVA_REQUEST_EUR',
'AVA_RESPONSE_EUR',
'AVA_REQUEST_ROW_APP',
'AVA_RESPONSE_ROW_APP',
'AVA_REQUEST_EUR_APP',
'AVA_RESPONSE_EUR_APP'
],
'MARKETS_API' => [
'PRE_LEAD_REQUEST',
'PRE_LEAD_RESPONSE'
]
];
const sections = ['user', 'premium', 'mailchimp', 'service', 'registration', 'api'];
const sources = ['api', 'mobile', 'web', 'ios', 'android'];
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="message", type="text")
*/
private $message;
/**
* @ORM\Column(name="context", type="string", length=100)
*/
private $context;
/**
* @ORM\Column(name="level", type="smallint")
*/
private $level;
/**
* @ORM\Column(name="level_name", type="string", length=50)
*/
private $levelName;
/**
* @ORM\Column(name="section", type="string", length=50)
*/
private $section;
/**
* @ORM\Column(name="source", type="string", length=50)
*/
private $source;
/**
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;
/**
* @ORM\Column(name="triggered_by", type="string", length=255, nullable=true)
*/
private $triggeredBy;
public function getId(): ?int
{
return $this->id;
}
public function validate(string $section): ?bool
{
return in_array($section, self::sections);
}
public static function getSectionList(): ?array
{
return self::sections;
}
public static function getSourceList(): ?array
{
return self::sources;
}
public static function getContextList(): ?array
{
return self::context;
}
public function getMessage(): ?string
{
return $this->message;
}
public function setMessage(string $message): self
{
$this->message = $message;
return $this;
}
public function getContext(): ?string
{
return $this->context;
}
public function setContext(string $context): self
{
$this->context = $context;
return $this;
}
public function getLevel(): ?int
{
return $this->level;
}
public function setLevel(int $level): self
{
$this->level = $level;
return $this;
}
public function getLevelName(): ?string
{
return $this->levelName;
}
public function setLevelName(string $levelName): self
{
$this->levelName = $levelName;
return $this;
}
public function getSection(): ?string
{
return $this->section;
}
public function setSection(string $section): self
{
$this->section = $section;
return $this;
}
public function getSource(): ?string
{
return $this->source;
}
public function setSource(string $source): self
{
$this->source = $source;
return $this;
}
/**
* @ORM\PrePersist
*/
public function onPrePersist()
{
$this->createdAt = new \DateTime();
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getTriggeredBy(): ?string
{
return $this->triggeredBy;
}
public function setTriggeredBy(string $triggeredBy): self
{
$this->triggeredBy = $triggeredBy;
return $this;
}
}