<?php

namespace App\Classes\Modules\Rewards\DataTransferObjects;

use App\Classes\General\Interfaces\DataTransferObject;

class RewardObject implements DataTransferObject
{
    /** @var int */
    private $id;

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

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

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

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

    /** @var bool */
    private $isActive;

    /** @var int */
    private $order;

    /**
     * RewardObject constructor.
     * @param int $id
     * @param string $name
     * @param string $description
     * @param string $value
     * @param string $type
     * @param bool $isActive
     * @param int $order
     */
    public function __construct(int $id, string $name, string $description, string $value, string $type, bool $isActive = true, ?int $order = 9999)
    {
        $this->id = $id;
        $this->name = $name;
        $this->description = $description;
        $this->value = $value;
        $this->type = $type;
        $this->isActive = $isActive;
        $this->order = $order;
    }

    /**
     * @return int
     */
    public function getId(): int
    {
        return $this->id;
    }

    /**
     * @return string
     */
    public function getName(): string
    {
        return $this->name;
    }

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

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

    /**
     * @return string
     */
    public function getType(): string
    {
        return $this->type;
    }

    /**
     * @return bool
     */
    public function getIsActive(): bool
    {
        return $this->isActive;
    }

    /**
     * @return int
     */
    public function getOrder(): int
    {
        return $this->order ?? 9999;
    }
}
