<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/talent/v4/common.proto

namespace Google\Cloud\Talent\V4;

use UnexpectedValueException;

/**
 * Educational degree level defined in International Standard Classification
 * of Education (ISCED).
 *
 * Protobuf type <code>google.cloud.talent.v4.DegreeType</code>
 */
class DegreeType
{
    /**
     * Default value. Represents no degree, or early childhood education.
     * Maps to ISCED code 0.
     * Ex) Kindergarten
     *
     * Generated from protobuf enum <code>DEGREE_TYPE_UNSPECIFIED = 0;</code>
     */
    const DEGREE_TYPE_UNSPECIFIED = 0;
    /**
     * Primary education which is typically the first stage of compulsory
     * education. ISCED code 1.
     * Ex) Elementary school
     *
     * Generated from protobuf enum <code>PRIMARY_EDUCATION = 1;</code>
     */
    const PRIMARY_EDUCATION = 1;
    /**
     * Lower secondary education; First stage of secondary education building on
     * primary education, typically with a more subject-oriented curriculum.
     * ISCED code 2.
     * Ex) Middle school
     *
     * Generated from protobuf enum <code>LOWER_SECONDARY_EDUCATION = 2;</code>
     */
    const LOWER_SECONDARY_EDUCATION = 2;
    /**
     * Middle education; Second/final stage of secondary education preparing for
     * tertiary education and/or providing skills relevant to employment.
     * Usually with an increased range of subject options and streams. ISCED
     * code 3.
     * Ex) High school
     *
     * Generated from protobuf enum <code>UPPER_SECONDARY_EDUCATION = 3;</code>
     */
    const UPPER_SECONDARY_EDUCATION = 3;
    /**
     * Adult Remedial Education; Programmes providing learning experiences that
     * build on secondary education and prepare for labour market entry and/or
     * tertiary education. The content is broader than secondary but not as
     * complex as tertiary education. ISCED code 4.
     *
     * Generated from protobuf enum <code>ADULT_REMEDIAL_EDUCATION = 4;</code>
     */
    const ADULT_REMEDIAL_EDUCATION = 4;
    /**
     * Associate's or equivalent; Short first tertiary programmes that are
     * typically practically-based, occupationally-specific and prepare for
     * labour market entry. These programmes may also provide a pathway to other
     * tertiary programmes. ISCED code 5.
     *
     * Generated from protobuf enum <code>ASSOCIATES_OR_EQUIVALENT = 5;</code>
     */
    const ASSOCIATES_OR_EQUIVALENT = 5;
    /**
     * Bachelor's or equivalent; Programmes designed to provide intermediate
     * academic and/or professional knowledge, skills and competencies leading
     * to a first tertiary degree or equivalent qualification. ISCED code 6.
     *
     * Generated from protobuf enum <code>BACHELORS_OR_EQUIVALENT = 6;</code>
     */
    const BACHELORS_OR_EQUIVALENT = 6;
    /**
     * Master's or equivalent; Programmes designed to provide advanced academic
     * and/or professional knowledge, skills and competencies leading to a
     * second tertiary degree or equivalent qualification. ISCED code 7.
     *
     * Generated from protobuf enum <code>MASTERS_OR_EQUIVALENT = 7;</code>
     */
    const MASTERS_OR_EQUIVALENT = 7;
    /**
     * Doctoral or equivalent; Programmes designed primarily to lead to an
     * advanced research qualification, usually concluding with the submission
     * and defense of a substantive dissertation of publishable quality based on
     * original research. ISCED code 8.
     *
     * Generated from protobuf enum <code>DOCTORAL_OR_EQUIVALENT = 8;</code>
     */
    const DOCTORAL_OR_EQUIVALENT = 8;

    private static $valueToName = [
        self::DEGREE_TYPE_UNSPECIFIED => 'DEGREE_TYPE_UNSPECIFIED',
        self::PRIMARY_EDUCATION => 'PRIMARY_EDUCATION',
        self::LOWER_SECONDARY_EDUCATION => 'LOWER_SECONDARY_EDUCATION',
        self::UPPER_SECONDARY_EDUCATION => 'UPPER_SECONDARY_EDUCATION',
        self::ADULT_REMEDIAL_EDUCATION => 'ADULT_REMEDIAL_EDUCATION',
        self::ASSOCIATES_OR_EQUIVALENT => 'ASSOCIATES_OR_EQUIVALENT',
        self::BACHELORS_OR_EQUIVALENT => 'BACHELORS_OR_EQUIVALENT',
        self::MASTERS_OR_EQUIVALENT => 'MASTERS_OR_EQUIVALENT',
        self::DOCTORAL_OR_EQUIVALENT => 'DOCTORAL_OR_EQUIVALENT',
    ];

    public static function name($value)
    {
        if (!isset(self::$valueToName[$value])) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no name defined for value %s', __CLASS__, $value));
        }
        return self::$valueToName[$value];
    }


    public static function value($name)
    {
        $const = __CLASS__ . '::' . strtoupper($name);
        if (!defined($const)) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no value defined for name %s', __CLASS__, $name));
        }
        return constant($const);
    }
}

