<?phpnamespace Whater\Domain\Media\Model;use BornFree\TacticianDomainEvent\Recorder\ContainsRecordedEvents;use BornFree\TacticianDomainEvent\Recorder\EventRecorderCapabilities;use Ramsey\Uuid\Uuid;use Whater\Domain\Common\Exception\InvalidUUIDException;use Whater\Domain\User\Model\User;use Whater\Domain\Whater\Model\WhaterValoration;/** * Class WhaterValorationImage * * @package Whater\Domain\Blog\Model */class WhaterValorationImage implements ContainsRecordedEvents{    use EventRecorderCapabilities;    /**     * @var string     */    private $uuid;    /**     * @var null|\DateTime     */    private $createdAt;    /**     * @var null|\DateTime     */    private $updatedAt;    /**     * @var WhaterValoration     */    private $whaterValoration;    /**     * @var User     */    private $createdBy;    /**     * @var string     */    private $fileName;    /**     * @var integer     */    private $fileSize;    /**     * @var string     */    private $fileMimeType;    /**     * @var string     */    private $fileOriginalname;    /**     * @var array     */    private $fileDimensions;    /**     * @var File     * NOTE: This is not a mapped field of entity metadata, just a simple property.     */    private $fileWhaterValorationImage;    public function __construct(        string $whaterValorationImageId = null,        WhaterValoration $whaterValoration = null,        User $createdBy = null    ) {        try {            $this->uuid = Uuid::fromString($whaterValorationImageId ?: Uuid::uuid4())->toString();        } catch (\InvalidArgumentException $e) {            throw new InvalidUUIDException();        }        $this->createdAt = new \DateTime();        $this->whaterValoration = $whaterValoration;        $this->createdBy = $createdBy;        $this->updatedAt = new \DateTime();    }    public function setData(WhaterValoration $whaterValoration, User $createdBy)    {        $this->whaterValoration = $whaterValoration;        $this->createdBy = $createdBy;        $this->updatedAt = new \DateTime();    }    /**     * @return string     */    public function id(): string    {        return $this->uuid;    }    /**     * @return \DateTime     */    public function createdAt(): \DateTime    {        return $this->createdAt;    }    /**     * @return \DateTime     */    public function updatedAt(): \DateTime    {        return $this->updatedAt;    }    /**     * @return WhaterValoration     */    public function whaterValoration(): WhaterValoration    {        return $this->whaterValoration;    }    /**     * @return User|null     */    public function createdBy(): ?User    {        return $this->createdBy;    }    public function setFileName(?string $fileName): void    {        $this->fileName = $fileName;    }    public function getFileName(): ?string    {        return $this->fileName;    }    public function setFileSize(?int $fileSize): void    {        $this->fileSize = $fileSize;    }    public function getFileSize(): ?int    {        return $this->fileSize;    }    public function setFileMimeType(?string $fileMimeType): void    {        $this->fileMimeType = $fileMimeType;    }    public function getFileMimeType(): ?string    {        return $this->fileMimeType;    }    public function setFileOriginalname(?string $fileOriginalname): void    {        $this->fileOriginalname = $fileOriginalname;    }    public function getFileOriginalname(): ?string    {        return $this->fileOriginalname;    }    public function setFileDimensions(?array $fileDimensions): void    {        $this->fileDimensions = $fileDimensions;    }    public function getFileDimensions(): ?array    {        return $this->fileDimensions;    }    public function setFileWhaterValorationImage($fileWhaterValorationImage): void    {        $this->fileWhaterValorationImage = $fileWhaterValorationImage;    }    public function getFileWhaterValorationImage()    {        return $this->fileWhaterValorationImage;    }    public function serialize()    {        return serialize(array(            $this->uuid        ));    }    public function unserialize($serialized)    {        list(            $this->uuid        ) = unserialize($serialized);    }    /**     * @return bool     */    public function equals(WhaterValorationImage $whaterValorationImage)    {        return $this->id() === $whaterValorationImage->id();    }}