<?php

namespace Xentral\Modules\Report\Data;

use JsonSerializable;

class ReportParameterOptionValue implements JsonSerializable
{
    /** @var string $value */
    private $value;

    /** @var string $description */
    private $description;

    /**
     * @param string $value
     * @param string $description
     */
    public function __construct($value, $description = null)
    {
        $this->value = $value;
        if (empty($description)) {
            $this->description = $this->value;
        } else {
            $this->description = $description;
        }
    }

    /**
     * @return string
     */
    public function getValue()
    {
        return $this->value;
    }

    /**
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * @return string
     */
    public function __toString()
    {
        return sprintf('%s:%s', $this->getDescription(), $this->getValue());
    }

    /**
     * Specify data which should be serialized to JSON
     *
     * @return mixed data which can be serialized by <b>json_encode</b>,
     */
    public function jsonSerialize()
    {
        return [$this->getDescription() => $this->getValue()];
    }
}