mirror of
https://github.com/openvk/openvk
synced 2024-12-23 17:12:01 +03:00
70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php declare(strict_types=1);
|
|
namespace openvk\Web\Models\Entities;
|
|
use openvk\Web\Util\DateTime;
|
|
use Nette\Database\Table\ActiveRow;
|
|
use openvk\Web\Models\RowModel;
|
|
use Chandler\Database\DatabaseConnection;
|
|
use openvk\Web\Models\Repositories\Users;
|
|
use Chandler\Database\DatabaseConnection as DB;
|
|
use Nette\InvalidStateException as ISE;
|
|
use Nette\Database\Table\Selection;
|
|
|
|
class TicketComment extends RowModel
|
|
{
|
|
|
|
protected $tableName = "tickets_comments";
|
|
|
|
function getId(): int
|
|
{
|
|
return $this->getRecord()->id;
|
|
}
|
|
function getUType(): int
|
|
{
|
|
return $this->getRecord()->user_type;
|
|
}
|
|
|
|
function getUser(): User
|
|
{
|
|
return (new Users)->get($this->getRecord()->user_id);
|
|
}
|
|
|
|
function getAgentNumber(): ?string
|
|
{
|
|
if($this->getUType() === 0)
|
|
return NULL;
|
|
|
|
$salt = "kiraMiki";
|
|
$hash = $this->getUser()->getId() . CHANDLER_ROOT_CONF["security"]["secret"] . $salt;
|
|
$hash = hexdec(substr(hash("adler32", $hash), 0, 3));
|
|
$hash = ceil(($hash * 999) / 4096); # proportionalize to 0-999
|
|
|
|
return str_pad((string) $hash, 3, "0", STR_PAD_LEFT);
|
|
}
|
|
|
|
function getColorRotation(): ?int
|
|
{
|
|
if(is_null($agent = $this->getAgentNumber()))
|
|
return NULL;
|
|
|
|
$agent = (int) $agent;
|
|
$rotation = $agent > 500 ? ( ($agent * 360) / 999 ) : $agent; # cap at 360deg
|
|
$values = [0, 45, 160, 220, 310, 345]; # good looking colors
|
|
usort($values, function($x, $y) use ($rotation) {
|
|
# find closest
|
|
return abs($x - $rotation) - abs($y - $rotation);
|
|
});
|
|
|
|
return array_shift($values);
|
|
}
|
|
|
|
function getContext(): string
|
|
{
|
|
return $this->getRecord()->text;
|
|
}
|
|
|
|
function getTime(): DateTime
|
|
{
|
|
return new DateTime($this->getRecord()->created);
|
|
}
|
|
|
|
}
|