<?php

namespace CustomerManagement\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SignalStrengthOutput StructType
 * @subpackage Structs
 */
class SignalStrengthOutput extends AbstractStructBase
{
    /**
     * The SignalStrengthAverage
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $SignalStrengthAverage;
    /**
     * The SignalStrengthMin
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $SignalStrengthMin;
    /**
     * The SignalStrengthMax
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $SignalStrengthMax;
    /**
     * Constructor method for SignalStrengthOutput
     * @uses SignalStrengthOutput::setSignalStrengthAverage()
     * @uses SignalStrengthOutput::setSignalStrengthMin()
     * @uses SignalStrengthOutput::setSignalStrengthMax()
     * @param float $signalStrengthAverage
     * @param int $signalStrengthMin
     * @param int $signalStrengthMax
     */
    public function __construct($signalStrengthAverage = null, $signalStrengthMin = null, $signalStrengthMax = null)
    {
        $this
            ->setSignalStrengthAverage($signalStrengthAverage)
            ->setSignalStrengthMin($signalStrengthMin)
            ->setSignalStrengthMax($signalStrengthMax);
    }
    /**
     * Get SignalStrengthAverage value
     * @return float
     */
    public function getSignalStrengthAverage()
    {
        return $this->SignalStrengthAverage;
    }
    /**
     * Set SignalStrengthAverage value
     * @param float $signalStrengthAverage
     * @return \CustomerManagement\StructType\SignalStrengthOutput
     */
    public function setSignalStrengthAverage($signalStrengthAverage = null)
    {
        // validation for constraint: float
        if (!is_null($signalStrengthAverage) && !(is_float($signalStrengthAverage) || is_numeric($signalStrengthAverage))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($signalStrengthAverage, true), gettype($signalStrengthAverage)), __LINE__);
        }
        $this->SignalStrengthAverage = $signalStrengthAverage;
        return $this;
    }
    /**
     * Get SignalStrengthMin value
     * @return int
     */
    public function getSignalStrengthMin()
    {
        return $this->SignalStrengthMin;
    }
    /**
     * Set SignalStrengthMin value
     * @param int $signalStrengthMin
     * @return \CustomerManagement\StructType\SignalStrengthOutput
     */
    public function setSignalStrengthMin($signalStrengthMin = null)
    {
        // validation for constraint: int
        if (!is_null($signalStrengthMin) && !(is_int($signalStrengthMin) || ctype_digit($signalStrengthMin))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($signalStrengthMin, true), gettype($signalStrengthMin)), __LINE__);
        }
        $this->SignalStrengthMin = $signalStrengthMin;
        return $this;
    }
    /**
     * Get SignalStrengthMax value
     * @return int
     */
    public function getSignalStrengthMax()
    {
        return $this->SignalStrengthMax;
    }
    /**
     * Set SignalStrengthMax value
     * @param int $signalStrengthMax
     * @return \CustomerManagement\StructType\SignalStrengthOutput
     */
    public function setSignalStrengthMax($signalStrengthMax = null)
    {
        // validation for constraint: int
        if (!is_null($signalStrengthMax) && !(is_int($signalStrengthMax) || ctype_digit($signalStrengthMax))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($signalStrengthMax, true), gettype($signalStrengthMax)), __LINE__);
        }
        $this->SignalStrengthMax = $signalStrengthMax;
        return $this;
    }
}
