<?php

namespace Wrm\Events\Domain\Model;

use TYPO3\CMS\Extbase\Annotation as Extbase;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
use TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy;

/**
 * Extend original model to include furher properties.
 *
 * Used for Plugins and Import.
 */
class Category extends AbstractEntity
{
    /**
     * @var string
     */
    protected $title = '';

    /**
     * @var int
     */
    protected $sorting = 0;

    /**
     * @var bool
     */
    protected $hidden = false;

    /**
     * @var Category|null
     *
     * @Extbase\ORM\Lazy
     */
    protected $parent;

    /**
     * @param Category|null $parent
     */
    public function __construct(
        $parent,
        int $pid,
        string $title,
        bool $hidden
    ) {
        $this->parent = $parent;
        $this->pid = $pid;
        $this->title = $title;
        $this->hidden = $hidden;
    }

    public function getTitle(): string
    {
        return $this->title;
    }

    public function getSorting(): int
    {
        return $this->sorting;
    }

    /**
     * @return Category|null
     */
    public function getParent()
    {
        if ($this->parent instanceof LazyLoadingProxy) {
            $this->parent->_loadRealInstance();
        }
        return $this->parent;
    }
}