<?php

namespace Modules\Permissions\Enums;

use Catch\Enums\Enum;

enum DataRange: int implements Enum
{
    case All_Data = 1; // 全部数据
    case Personal_Choose = 2; // 自定义数据
    case Personal_Data = 3; // 本人数据
    case Department_Data = 4; // 部门数据
    case Department_DOWN_Data = 5; // 部门及以下数据


    public function value(): int
    {
        // TODO: Implement value() method.
        return match ($this) {
            self::All_Data => 1,
            self::Personal_Choose => 2,
            self::Personal_Data => 3,
            self::Department_Data => 4,
            self::Department_DOWN_Data => 5,
        };
    }

    public function name(): string
    {
        // TODO: Implement name() method.
        return match ($this) {
            self::All_Data => '全部数据',
            self::Personal_Choose => '自定义数据',
            self::Personal_Data => '本人数据',
            self::Department_Data => '部门数据',
            self::Department_DOWN_Data => '部门及以下数据',
        };
    }

    /**
     * assert value
     *
     * @param int $value
     * @return bool
     */
    public function assert(int $value): bool
    {
       return $this->value === $value;
    }
}