<?php

namespace CustomerManagement\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for RequestRemoteRoutineInspectionInput StructType
 * @subpackage Structs
 */
class RequestRemoteRoutineInspectionInput extends AbstractStructBase
{
    /**
     * The ShouldFailOnTroubleConditions
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldFailOnTroubleConditions;
    /**
     * The ShouldFailOnClockFailure
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldFailOnClockFailure;
    /**
     * The ShouldFailOnDeviceActivations
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldFailOnDeviceActivations;
    /**
     * The ShouldFailOnNoArmDisarm
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldFailOnNoArmDisarm;
    /**
     * The ShouldSendCustomerReport
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldSendCustomerReport;
    /**
     * The ShouldSendEnterpiseNotice
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldSendEnterpiseNotice;
    /**
     * The NumberOfEvents
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $NumberOfEvents;
    /**
     * The FrequentlyUsedDeviceTimeframe
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $FrequentlyUsedDeviceTimeframe;
    /**
     * The ClockFaultAllowance
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $ClockFaultAllowance;
    /**
     * The ShouldCorrectClock
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $ShouldCorrectClock;
    /**
     * The CustomerId
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $CustomerId;
    /**
     * Constructor method for RequestRemoteRoutineInspectionInput
     * @uses RequestRemoteRoutineInspectionInput::setShouldFailOnTroubleConditions()
     * @uses RequestRemoteRoutineInspectionInput::setShouldFailOnClockFailure()
     * @uses RequestRemoteRoutineInspectionInput::setShouldFailOnDeviceActivations()
     * @uses RequestRemoteRoutineInspectionInput::setShouldFailOnNoArmDisarm()
     * @uses RequestRemoteRoutineInspectionInput::setShouldSendCustomerReport()
     * @uses RequestRemoteRoutineInspectionInput::setShouldSendEnterpiseNotice()
     * @uses RequestRemoteRoutineInspectionInput::setNumberOfEvents()
     * @uses RequestRemoteRoutineInspectionInput::setFrequentlyUsedDeviceTimeframe()
     * @uses RequestRemoteRoutineInspectionInput::setClockFaultAllowance()
     * @uses RequestRemoteRoutineInspectionInput::setShouldCorrectClock()
     * @uses RequestRemoteRoutineInspectionInput::setCustomerId()
     * @param bool $shouldFailOnTroubleConditions
     * @param bool $shouldFailOnClockFailure
     * @param bool $shouldFailOnDeviceActivations
     * @param bool $shouldFailOnNoArmDisarm
     * @param bool $shouldSendCustomerReport
     * @param bool $shouldSendEnterpiseNotice
     * @param int $numberOfEvents
     * @param int $frequentlyUsedDeviceTimeframe
     * @param int $clockFaultAllowance
     * @param bool $shouldCorrectClock
     * @param int $customerId
     */
    public function __construct($shouldFailOnTroubleConditions = null, $shouldFailOnClockFailure = null, $shouldFailOnDeviceActivations = null, $shouldFailOnNoArmDisarm = null, $shouldSendCustomerReport = null, $shouldSendEnterpiseNotice = null, $numberOfEvents = null, $frequentlyUsedDeviceTimeframe = null, $clockFaultAllowance = null, $shouldCorrectClock = null, $customerId = null)
    {
        $this
            ->setShouldFailOnTroubleConditions($shouldFailOnTroubleConditions)
            ->setShouldFailOnClockFailure($shouldFailOnClockFailure)
            ->setShouldFailOnDeviceActivations($shouldFailOnDeviceActivations)
            ->setShouldFailOnNoArmDisarm($shouldFailOnNoArmDisarm)
            ->setShouldSendCustomerReport($shouldSendCustomerReport)
            ->setShouldSendEnterpiseNotice($shouldSendEnterpiseNotice)
            ->setNumberOfEvents($numberOfEvents)
            ->setFrequentlyUsedDeviceTimeframe($frequentlyUsedDeviceTimeframe)
            ->setClockFaultAllowance($clockFaultAllowance)
            ->setShouldCorrectClock($shouldCorrectClock)
            ->setCustomerId($customerId);
    }
    /**
     * Get ShouldFailOnTroubleConditions value
     * @return bool
     */
    public function getShouldFailOnTroubleConditions()
    {
        return $this->ShouldFailOnTroubleConditions;
    }
    /**
     * Set ShouldFailOnTroubleConditions value
     * @param bool $shouldFailOnTroubleConditions
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldFailOnTroubleConditions($shouldFailOnTroubleConditions = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldFailOnTroubleConditions) && !is_bool($shouldFailOnTroubleConditions)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldFailOnTroubleConditions, true), gettype($shouldFailOnTroubleConditions)), __LINE__);
        }
        $this->ShouldFailOnTroubleConditions = $shouldFailOnTroubleConditions;
        return $this;
    }
    /**
     * Get ShouldFailOnClockFailure value
     * @return bool
     */
    public function getShouldFailOnClockFailure()
    {
        return $this->ShouldFailOnClockFailure;
    }
    /**
     * Set ShouldFailOnClockFailure value
     * @param bool $shouldFailOnClockFailure
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldFailOnClockFailure($shouldFailOnClockFailure = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldFailOnClockFailure) && !is_bool($shouldFailOnClockFailure)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldFailOnClockFailure, true), gettype($shouldFailOnClockFailure)), __LINE__);
        }
        $this->ShouldFailOnClockFailure = $shouldFailOnClockFailure;
        return $this;
    }
    /**
     * Get ShouldFailOnDeviceActivations value
     * @return bool
     */
    public function getShouldFailOnDeviceActivations()
    {
        return $this->ShouldFailOnDeviceActivations;
    }
    /**
     * Set ShouldFailOnDeviceActivations value
     * @param bool $shouldFailOnDeviceActivations
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldFailOnDeviceActivations($shouldFailOnDeviceActivations = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldFailOnDeviceActivations) && !is_bool($shouldFailOnDeviceActivations)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldFailOnDeviceActivations, true), gettype($shouldFailOnDeviceActivations)), __LINE__);
        }
        $this->ShouldFailOnDeviceActivations = $shouldFailOnDeviceActivations;
        return $this;
    }
    /**
     * Get ShouldFailOnNoArmDisarm value
     * @return bool
     */
    public function getShouldFailOnNoArmDisarm()
    {
        return $this->ShouldFailOnNoArmDisarm;
    }
    /**
     * Set ShouldFailOnNoArmDisarm value
     * @param bool $shouldFailOnNoArmDisarm
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldFailOnNoArmDisarm($shouldFailOnNoArmDisarm = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldFailOnNoArmDisarm) && !is_bool($shouldFailOnNoArmDisarm)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldFailOnNoArmDisarm, true), gettype($shouldFailOnNoArmDisarm)), __LINE__);
        }
        $this->ShouldFailOnNoArmDisarm = $shouldFailOnNoArmDisarm;
        return $this;
    }
    /**
     * Get ShouldSendCustomerReport value
     * @return bool
     */
    public function getShouldSendCustomerReport()
    {
        return $this->ShouldSendCustomerReport;
    }
    /**
     * Set ShouldSendCustomerReport value
     * @param bool $shouldSendCustomerReport
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldSendCustomerReport($shouldSendCustomerReport = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldSendCustomerReport) && !is_bool($shouldSendCustomerReport)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldSendCustomerReport, true), gettype($shouldSendCustomerReport)), __LINE__);
        }
        $this->ShouldSendCustomerReport = $shouldSendCustomerReport;
        return $this;
    }
    /**
     * Get ShouldSendEnterpiseNotice value
     * @return bool
     */
    public function getShouldSendEnterpiseNotice()
    {
        return $this->ShouldSendEnterpiseNotice;
    }
    /**
     * Set ShouldSendEnterpiseNotice value
     * @param bool $shouldSendEnterpiseNotice
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldSendEnterpiseNotice($shouldSendEnterpiseNotice = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldSendEnterpiseNotice) && !is_bool($shouldSendEnterpiseNotice)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldSendEnterpiseNotice, true), gettype($shouldSendEnterpiseNotice)), __LINE__);
        }
        $this->ShouldSendEnterpiseNotice = $shouldSendEnterpiseNotice;
        return $this;
    }
    /**
     * Get NumberOfEvents value
     * @return int
     */
    public function getNumberOfEvents()
    {
        return $this->NumberOfEvents;
    }
    /**
     * Set NumberOfEvents value
     * @param int $numberOfEvents
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setNumberOfEvents($numberOfEvents = null)
    {
        // validation for constraint: int
        if (!is_null($numberOfEvents) && !(is_int($numberOfEvents) || ctype_digit($numberOfEvents))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($numberOfEvents, true), gettype($numberOfEvents)), __LINE__);
        }
        $this->NumberOfEvents = $numberOfEvents;
        return $this;
    }
    /**
     * Get FrequentlyUsedDeviceTimeframe value
     * @return int
     */
    public function getFrequentlyUsedDeviceTimeframe()
    {
        return $this->FrequentlyUsedDeviceTimeframe;
    }
    /**
     * Set FrequentlyUsedDeviceTimeframe value
     * @param int $frequentlyUsedDeviceTimeframe
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setFrequentlyUsedDeviceTimeframe($frequentlyUsedDeviceTimeframe = null)
    {
        // validation for constraint: int
        if (!is_null($frequentlyUsedDeviceTimeframe) && !(is_int($frequentlyUsedDeviceTimeframe) || ctype_digit($frequentlyUsedDeviceTimeframe))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($frequentlyUsedDeviceTimeframe, true), gettype($frequentlyUsedDeviceTimeframe)), __LINE__);
        }
        $this->FrequentlyUsedDeviceTimeframe = $frequentlyUsedDeviceTimeframe;
        return $this;
    }
    /**
     * Get ClockFaultAllowance value
     * @return int
     */
    public function getClockFaultAllowance()
    {
        return $this->ClockFaultAllowance;
    }
    /**
     * Set ClockFaultAllowance value
     * @param int $clockFaultAllowance
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setClockFaultAllowance($clockFaultAllowance = null)
    {
        // validation for constraint: int
        if (!is_null($clockFaultAllowance) && !(is_int($clockFaultAllowance) || ctype_digit($clockFaultAllowance))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($clockFaultAllowance, true), gettype($clockFaultAllowance)), __LINE__);
        }
        $this->ClockFaultAllowance = $clockFaultAllowance;
        return $this;
    }
    /**
     * Get ShouldCorrectClock value
     * @return bool
     */
    public function getShouldCorrectClock()
    {
        return $this->ShouldCorrectClock;
    }
    /**
     * Set ShouldCorrectClock value
     * @param bool $shouldCorrectClock
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setShouldCorrectClock($shouldCorrectClock = null)
    {
        // validation for constraint: boolean
        if (!is_null($shouldCorrectClock) && !is_bool($shouldCorrectClock)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($shouldCorrectClock, true), gettype($shouldCorrectClock)), __LINE__);
        }
        $this->ShouldCorrectClock = $shouldCorrectClock;
        return $this;
    }
    /**
     * Get CustomerId value
     * @return int
     */
    public function getCustomerId()
    {
        return $this->CustomerId;
    }
    /**
     * Set CustomerId value
     * @param int $customerId
     * @return \CustomerManagement\StructType\RequestRemoteRoutineInspectionInput
     */
    public function setCustomerId($customerId = null)
    {
        // validation for constraint: int
        if (!is_null($customerId) && !(is_int($customerId) || ctype_digit($customerId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($customerId, true), gettype($customerId)), __LINE__);
        }
        $this->CustomerId = $customerId;
        return $this;
    }
}
