<?php
namespace Whater\Domain\Media\Model;
use Whater\Domain\User\Model\User;
use Sonata\MediaBundle\Entity\BaseMedia;
use Ramsey\Uuid\Uuid;
use Whater\Domain\Common\Exception\InvalidUUIDException;
/**
* Class Media
*
* @package Whater\Domain\Media\Model
*/
class Media extends BaseMedia
{
/**
* @var string
*/
private $uuid;
/**
* @var int
*/
private $position;
/**
* @var User
*/
private $user;
/**
* @return string
*/
public function getId(): string
{
return $this->uuid;
}
/**
* @return int
*/
public function position(): int
{
return $this->position;
}
/**
* @return string
*/
public function context(): string
{
return $this->context;
}
/**
* @return User
*/
public function user(): ?User
{
return $this->user;
}
/**
* Media constructor.
*/
public function __construct(
string $mediaId = null,
string $context,
string $name,
string $providerName,
$binaryContent,
?bool $enabled = true,
?int $position = 1,
?User $user = null
) {
try {
$this->uuid = Uuid::fromString($mediaId ?: Uuid::uuid4())->toString();
} catch (\InvalidArgumentException $e) {
throw new InvalidUUIDException();
}
$this->setContext($context);
$this->setName($name);
$this->setProviderName($providerName);
$this->setBinaryContent($binaryContent);
$this->setEnabled($enabled);
$this->position = $position;
$this->user = $user;
}
public function updateMedia(
string $name,
?string $description = null,
int $position,
bool $enabled,
$binaryContent = null
) {
$this->setName($name);
if ($description != null) {
$this->setDescription($description);
}
$this->position = $position;
$this->setEnabled($enabled);
if (!empty($binaryContent)) {
$this->setBinaryContent($binaryContent);
}
}
}