<?php

namespace CustomerManagement\EnumType;

/**
 * This class stands for CaptureReasonFlags EnumType
 * @subpackage Enumerations
 */
class CaptureReasonFlags
{
    /**
     * Constant for value 'None'
     * @return string 'None'
     */
    const VALUE_NONE = 'None';
    /**
     * Constant for value 'Alarm'
     * @return string 'Alarm'
     */
    const VALUE_ALARM = 'Alarm';
    /**
     * Constant for value 'PeekInNow'
     * @return string 'PeekInNow'
     */
    const VALUE_PEEK_IN_NOW = 'PeekInNow';
    /**
     * Constant for value 'InstallerPeekIn'
     * @return string 'InstallerPeekIn'
     */
    const VALUE_INSTALLER_PEEK_IN = 'InstallerPeekIn';
    /**
     * Constant for value 'ArmedAway'
     * @return string 'ArmedAway'
     */
    const VALUE_ARMED_AWAY = 'ArmedAway';
    /**
     * Constant for value 'PostDisarm'
     * @return string 'PostDisarm'
     */
    const VALUE_POST_DISARM = 'PostDisarm';
    /**
     * Constant for value 'PeekInMotion'
     * @return string 'PeekInMotion'
     */
    const VALUE_PEEK_IN_MOTION = 'PeekInMotion';
    /**
     * Constant for value 'PeekIn'
     * @return string 'PeekIn'
     */
    const VALUE_PEEK_IN = 'PeekIn';
    /**
     * Constant for value 'DailyView'
     * @return string 'DailyView'
     */
    const VALUE_DAILY_VIEW = 'DailyView';
    /**
     * Constant for value 'ActivityAlert'
     * @return string 'ActivityAlert'
     */
    const VALUE_ACTIVITY_ALERT = 'ActivityAlert';
    /**
     * Constant for value 'Genie'
     * @return string 'Genie'
     */
    const VALUE_GENIE = 'Genie';
    /**
     * Constant for value 'InstallerPeekInMotion'
     * @return string 'InstallerPeekInMotion'
     */
    const VALUE_INSTALLER_PEEK_IN_MOTION = 'InstallerPeekInMotion';
    /**
     * Constant for value 'CheckIn'
     * @return string 'CheckIn'
     */
    const VALUE_CHECK_IN = 'CheckIn';
    /**
     * Constant for value 'CheckOut'
     * @return string 'CheckOut'
     */
    const VALUE_CHECK_OUT = 'CheckOut';
    /**
     * Constant for value 'VisualVerificationImage'
     * @return string 'VisualVerificationImage'
     */
    const VALUE_VISUAL_VERIFICATION_IMAGE = 'VisualVerificationImage';
    /**
     * Constant for value 'CameraReasons'
     * @return string 'CameraReasons'
     */
    const VALUE_CAMERA_REASONS = 'CameraReasons';
    /**
     * Constant for value 'ManualUpload'
     * @return string 'ManualUpload'
     */
    const VALUE_MANUAL_UPLOAD = 'ManualUpload';
    /**
     * Constant for value 'WebBasedVisualVerification'
     * @return string 'WebBasedVisualVerification'
     */
    const VALUE_WEB_BASED_VISUAL_VERIFICATION = 'WebBasedVisualVerification';
    /**
     * Constant for value 'BackendReasons'
     * @return string 'BackendReasons'
     */
    const VALUE_BACKEND_REASONS = 'BackendReasons';
    /**
     * Return true if value is allowed
     * @uses self::getValidValues()
     * @param mixed $value value
     * @return bool true|false
     */
    public static function valueIsValid($value)
    {
        return ($value === null) || in_array($value, self::getValidValues(), true);
    }
    /**
     * Return allowed values
     * @uses self::VALUE_NONE
     * @uses self::VALUE_ALARM
     * @uses self::VALUE_PEEK_IN_NOW
     * @uses self::VALUE_INSTALLER_PEEK_IN
     * @uses self::VALUE_ARMED_AWAY
     * @uses self::VALUE_POST_DISARM
     * @uses self::VALUE_PEEK_IN_MOTION
     * @uses self::VALUE_PEEK_IN
     * @uses self::VALUE_DAILY_VIEW
     * @uses self::VALUE_ACTIVITY_ALERT
     * @uses self::VALUE_GENIE
     * @uses self::VALUE_INSTALLER_PEEK_IN_MOTION
     * @uses self::VALUE_CHECK_IN
     * @uses self::VALUE_CHECK_OUT
     * @uses self::VALUE_VISUAL_VERIFICATION_IMAGE
     * @uses self::VALUE_CAMERA_REASONS
     * @uses self::VALUE_MANUAL_UPLOAD
     * @uses self::VALUE_WEB_BASED_VISUAL_VERIFICATION
     * @uses self::VALUE_BACKEND_REASONS
     * @return string[]
     */
    public static function getValidValues()
    {
        return array(
            self::VALUE_NONE,
            self::VALUE_ALARM,
            self::VALUE_PEEK_IN_NOW,
            self::VALUE_INSTALLER_PEEK_IN,
            self::VALUE_ARMED_AWAY,
            self::VALUE_POST_DISARM,
            self::VALUE_PEEK_IN_MOTION,
            self::VALUE_PEEK_IN,
            self::VALUE_DAILY_VIEW,
            self::VALUE_ACTIVITY_ALERT,
            self::VALUE_GENIE,
            self::VALUE_INSTALLER_PEEK_IN_MOTION,
            self::VALUE_CHECK_IN,
            self::VALUE_CHECK_OUT,
            self::VALUE_VISUAL_VERIFICATION_IMAGE,
            self::VALUE_CAMERA_REASONS,
            self::VALUE_MANUAL_UPLOAD,
            self::VALUE_WEB_BASED_VISUAL_VERIFICATION,
            self::VALUE_BACKEND_REASONS,
        );
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
