<?php

declare (strict_types=1);
namespace idoit\Module\JDisc\Graphql\Schema\Model;

use Axtiva\FlexibleGraphql\Generator\Exception\UnknownEnumValue;
use Axtiva\FlexibleGraphql\Type\EnumInterface;

/**
 * This code is @generated by axtiva/flexible-graphql-php
 * and will be regenerated. Do not edit it manually
 * PHP representation of graphql enum DeviceRole
 * A device's role (such as Domain Controller, DNS Server, Database Server, ...)
 */
final class DeviceRoleEnum implements EnumInterface
{
    public const PrimaryDomainController = 'PrimaryDomainController';
    public const BackupDomainController = 'BackupDomainController';
    public const DNSServer = 'DNSServer';
    public const DatabaseServer = 'DatabaseServer';
    public const WebServer = 'WebServer';
    public const VirtualServer = 'VirtualServer';
    public const DirectoryService = 'DirectoryService';
    public const GlobalCatalog = 'GlobalCatalog';
    public const KerberosKeyDistributionCenter = 'KerberosKeyDistributionCenter';
    public const TimeService = 'TimeService';
    public const DomainController = 'DomainController';
    public const ApplicationServer = 'ApplicationServer';
    public const MailServer = 'MailServer';
    public const StorageManagement = 'StorageManagement';
    public const TerminalServices = 'TerminalServices';
    public const VirtualizationManagement = 'VirtualizationManagement';
    public const DeviceManagement = 'DeviceManagement';
    public const AccessPointController = 'AccessPointController';
    public const Router = 'Router';
    public const DhcpServer = 'DhcpServer';
    public const TransactionServer = 'TransactionServer';
    public const LicenseService = 'LicenseService';
    public const ClusterService = 'ClusterService';
    public string $value;
    private static array $map = [
        self::PrimaryDomainController => true,
        self::BackupDomainController => true,
        self::DNSServer => true,
        self::DatabaseServer => true,
        self::WebServer => true,
        self::VirtualServer => true,
        self::DirectoryService => true,
        self::GlobalCatalog => true,
        self::KerberosKeyDistributionCenter => true,
        self::TimeService => true,
        self::DomainController => true,
        self::ApplicationServer => true,
        self::MailServer => true,
        self::StorageManagement => true,
        self::TerminalServices => true,
        self::VirtualizationManagement => true,
        self::DeviceManagement => true,
        self::AccessPointController => true,
        self::Router => true,
        self::DhcpServer => true,
        self::TransactionServer => true,
        self::LicenseService => true,
        self::ClusterService => true,
    ];

    public function __construct($value)
    {
        if (!isset(self::$map[$value])) {
            throw new UnknownEnumValue(__CLASS__, $value);
        }
        $this->value = $value;
    }

    public function __toString(): string
    {
        return $this->value;
    }
}