<?php
namespace App\Entity;
use App\Utility\DateTimeUtility;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use function json_encode;
/**
* @ORM\Entity()
*
* @ORM\Table(
* name="statistics_aggregation_caches",
* )
*/
class StatisticsAggregationCache
{
/**
* @var string
*
* @ORM\Column(name="id", type="string", length=32)
*
* @ORM\Id
*/
protected $id;
public function setId(string $id): void
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
/**
* @var string
*
* @ORM\Column(name="value", type="text", nullable=false)
*/
protected $value;
public function setValue(string $value): void
{
$this->value = $value;
}
public function getValue(): string
{
return $this->value;
}
public static function calculateKey(string $class, DateTime $dateTime, string $filterByAffectedUserIs, array $eventTypes, string $other): string
{
return md5($class . $dateTime->format('Y-m-d') . $filterByAffectedUserIs . json_encode($eventTypes) . $other);
}
public static function getMinimumDateTimeForCache(): DateTime
{
return DateTimeUtility::createDateTimeUtc('-1 week');
}
}