<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for EcoPerformanceScore StructType
 * @subpackage Structs
 */
class EcoPerformanceScore extends AbstractStructBase
{
    /**
     * The ScoreFuelConsumption
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreFuelConsumption;
    /**
     * The ScoreAverageSpeed
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreAverageSpeed;
    /**
     * The ScoreIdling
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreIdling;
    /**
     * The ScoreHighRpm
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreHighRpm;
    /**
     * The ScoreOverspeeding
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreOverspeeding;
    /**
     * The ScoreCoasting
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreCoasting;
    /**
     * The ScorePanicBraking
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScorePanicBraking;
    /**
     * The ScoreDurationRetarder
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreDurationRetarder;
    /**
     * The ScoreDistanceCruiseControl
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreDistanceCruiseControl;
    /**
     * The ScoreStops100Km
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreStops100Km;
    /**
     * The ScoreBraking100Km
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreBraking100Km;
    /**
     * The ScoreGearingInGreenSpot
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreGearingInGreenSpot;
    /**
     * The ScoreTopSpeedFluctuations
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreTopSpeedFluctuations;
    /**
     * The ScoreRedRpm
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $ScoreRedRpm;
    /**
     * The TotalScore
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * - nillable: true
     * @var float
     */
    public $TotalScore;
    /**
     * Constructor method for EcoPerformanceScore
     * @uses EcoPerformanceScore::setScoreFuelConsumption()
     * @uses EcoPerformanceScore::setScoreAverageSpeed()
     * @uses EcoPerformanceScore::setScoreIdling()
     * @uses EcoPerformanceScore::setScoreHighRpm()
     * @uses EcoPerformanceScore::setScoreOverspeeding()
     * @uses EcoPerformanceScore::setScoreCoasting()
     * @uses EcoPerformanceScore::setScorePanicBraking()
     * @uses EcoPerformanceScore::setScoreDurationRetarder()
     * @uses EcoPerformanceScore::setScoreDistanceCruiseControl()
     * @uses EcoPerformanceScore::setScoreStops100Km()
     * @uses EcoPerformanceScore::setScoreBraking100Km()
     * @uses EcoPerformanceScore::setScoreGearingInGreenSpot()
     * @uses EcoPerformanceScore::setScoreTopSpeedFluctuations()
     * @uses EcoPerformanceScore::setScoreRedRpm()
     * @uses EcoPerformanceScore::setTotalScore()
     * @param float $scoreFuelConsumption
     * @param float $scoreAverageSpeed
     * @param float $scoreIdling
     * @param float $scoreHighRpm
     * @param float $scoreOverspeeding
     * @param float $scoreCoasting
     * @param float $scorePanicBraking
     * @param float $scoreDurationRetarder
     * @param float $scoreDistanceCruiseControl
     * @param float $scoreStops100Km
     * @param float $scoreBraking100Km
     * @param float $scoreGearingInGreenSpot
     * @param float $scoreTopSpeedFluctuations
     * @param float $scoreRedRpm
     * @param float $totalScore
     */
    public function __construct($scoreFuelConsumption = null, $scoreAverageSpeed = null, $scoreIdling = null, $scoreHighRpm = null, $scoreOverspeeding = null, $scoreCoasting = null, $scorePanicBraking = null, $scoreDurationRetarder = null, $scoreDistanceCruiseControl = null, $scoreStops100Km = null, $scoreBraking100Km = null, $scoreGearingInGreenSpot = null, $scoreTopSpeedFluctuations = null, $scoreRedRpm = null, $totalScore = null)
    {
        $this
            ->setScoreFuelConsumption($scoreFuelConsumption)
            ->setScoreAverageSpeed($scoreAverageSpeed)
            ->setScoreIdling($scoreIdling)
            ->setScoreHighRpm($scoreHighRpm)
            ->setScoreOverspeeding($scoreOverspeeding)
            ->setScoreCoasting($scoreCoasting)
            ->setScorePanicBraking($scorePanicBraking)
            ->setScoreDurationRetarder($scoreDurationRetarder)
            ->setScoreDistanceCruiseControl($scoreDistanceCruiseControl)
            ->setScoreStops100Km($scoreStops100Km)
            ->setScoreBraking100Km($scoreBraking100Km)
            ->setScoreGearingInGreenSpot($scoreGearingInGreenSpot)
            ->setScoreTopSpeedFluctuations($scoreTopSpeedFluctuations)
            ->setScoreRedRpm($scoreRedRpm)
            ->setTotalScore($totalScore);
    }
    /**
     * Get ScoreFuelConsumption value
     * @return float
     */
    public function getScoreFuelConsumption()
    {
        return $this->ScoreFuelConsumption;
    }
    /**
     * Set ScoreFuelConsumption value
     * @param float $scoreFuelConsumption
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreFuelConsumption($scoreFuelConsumption = null)
    {
        // validation for constraint: float
        if (!is_null($scoreFuelConsumption) && !(is_float($scoreFuelConsumption) || is_numeric($scoreFuelConsumption))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreFuelConsumption, true), gettype($scoreFuelConsumption)), __LINE__);
        }
        $this->ScoreFuelConsumption = $scoreFuelConsumption;
        return $this;
    }
    /**
     * Get ScoreAverageSpeed value
     * @return float
     */
    public function getScoreAverageSpeed()
    {
        return $this->ScoreAverageSpeed;
    }
    /**
     * Set ScoreAverageSpeed value
     * @param float $scoreAverageSpeed
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreAverageSpeed($scoreAverageSpeed = null)
    {
        // validation for constraint: float
        if (!is_null($scoreAverageSpeed) && !(is_float($scoreAverageSpeed) || is_numeric($scoreAverageSpeed))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreAverageSpeed, true), gettype($scoreAverageSpeed)), __LINE__);
        }
        $this->ScoreAverageSpeed = $scoreAverageSpeed;
        return $this;
    }
    /**
     * Get ScoreIdling value
     * @return float
     */
    public function getScoreIdling()
    {
        return $this->ScoreIdling;
    }
    /**
     * Set ScoreIdling value
     * @param float $scoreIdling
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreIdling($scoreIdling = null)
    {
        // validation for constraint: float
        if (!is_null($scoreIdling) && !(is_float($scoreIdling) || is_numeric($scoreIdling))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreIdling, true), gettype($scoreIdling)), __LINE__);
        }
        $this->ScoreIdling = $scoreIdling;
        return $this;
    }
    /**
     * Get ScoreHighRpm value
     * @return float
     */
    public function getScoreHighRpm()
    {
        return $this->ScoreHighRpm;
    }
    /**
     * Set ScoreHighRpm value
     * @param float $scoreHighRpm
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreHighRpm($scoreHighRpm = null)
    {
        // validation for constraint: float
        if (!is_null($scoreHighRpm) && !(is_float($scoreHighRpm) || is_numeric($scoreHighRpm))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreHighRpm, true), gettype($scoreHighRpm)), __LINE__);
        }
        $this->ScoreHighRpm = $scoreHighRpm;
        return $this;
    }
    /**
     * Get ScoreOverspeeding value
     * @return float
     */
    public function getScoreOverspeeding()
    {
        return $this->ScoreOverspeeding;
    }
    /**
     * Set ScoreOverspeeding value
     * @param float $scoreOverspeeding
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreOverspeeding($scoreOverspeeding = null)
    {
        // validation for constraint: float
        if (!is_null($scoreOverspeeding) && !(is_float($scoreOverspeeding) || is_numeric($scoreOverspeeding))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreOverspeeding, true), gettype($scoreOverspeeding)), __LINE__);
        }
        $this->ScoreOverspeeding = $scoreOverspeeding;
        return $this;
    }
    /**
     * Get ScoreCoasting value
     * @return float
     */
    public function getScoreCoasting()
    {
        return $this->ScoreCoasting;
    }
    /**
     * Set ScoreCoasting value
     * @param float $scoreCoasting
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreCoasting($scoreCoasting = null)
    {
        // validation for constraint: float
        if (!is_null($scoreCoasting) && !(is_float($scoreCoasting) || is_numeric($scoreCoasting))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreCoasting, true), gettype($scoreCoasting)), __LINE__);
        }
        $this->ScoreCoasting = $scoreCoasting;
        return $this;
    }
    /**
     * Get ScorePanicBraking value
     * @return float
     */
    public function getScorePanicBraking()
    {
        return $this->ScorePanicBraking;
    }
    /**
     * Set ScorePanicBraking value
     * @param float $scorePanicBraking
     * @return \StructType\EcoPerformanceScore
     */
    public function setScorePanicBraking($scorePanicBraking = null)
    {
        // validation for constraint: float
        if (!is_null($scorePanicBraking) && !(is_float($scorePanicBraking) || is_numeric($scorePanicBraking))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scorePanicBraking, true), gettype($scorePanicBraking)), __LINE__);
        }
        $this->ScorePanicBraking = $scorePanicBraking;
        return $this;
    }
    /**
     * Get ScoreDurationRetarder value
     * @return float
     */
    public function getScoreDurationRetarder()
    {
        return $this->ScoreDurationRetarder;
    }
    /**
     * Set ScoreDurationRetarder value
     * @param float $scoreDurationRetarder
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreDurationRetarder($scoreDurationRetarder = null)
    {
        // validation for constraint: float
        if (!is_null($scoreDurationRetarder) && !(is_float($scoreDurationRetarder) || is_numeric($scoreDurationRetarder))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreDurationRetarder, true), gettype($scoreDurationRetarder)), __LINE__);
        }
        $this->ScoreDurationRetarder = $scoreDurationRetarder;
        return $this;
    }
    /**
     * Get ScoreDistanceCruiseControl value
     * @return float
     */
    public function getScoreDistanceCruiseControl()
    {
        return $this->ScoreDistanceCruiseControl;
    }
    /**
     * Set ScoreDistanceCruiseControl value
     * @param float $scoreDistanceCruiseControl
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreDistanceCruiseControl($scoreDistanceCruiseControl = null)
    {
        // validation for constraint: float
        if (!is_null($scoreDistanceCruiseControl) && !(is_float($scoreDistanceCruiseControl) || is_numeric($scoreDistanceCruiseControl))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreDistanceCruiseControl, true), gettype($scoreDistanceCruiseControl)), __LINE__);
        }
        $this->ScoreDistanceCruiseControl = $scoreDistanceCruiseControl;
        return $this;
    }
    /**
     * Get ScoreStops100Km value
     * @return float
     */
    public function getScoreStops100Km()
    {
        return $this->ScoreStops100Km;
    }
    /**
     * Set ScoreStops100Km value
     * @param float $scoreStops100Km
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreStops100Km($scoreStops100Km = null)
    {
        // validation for constraint: float
        if (!is_null($scoreStops100Km) && !(is_float($scoreStops100Km) || is_numeric($scoreStops100Km))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreStops100Km, true), gettype($scoreStops100Km)), __LINE__);
        }
        $this->ScoreStops100Km = $scoreStops100Km;
        return $this;
    }
    /**
     * Get ScoreBraking100Km value
     * @return float
     */
    public function getScoreBraking100Km()
    {
        return $this->ScoreBraking100Km;
    }
    /**
     * Set ScoreBraking100Km value
     * @param float $scoreBraking100Km
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreBraking100Km($scoreBraking100Km = null)
    {
        // validation for constraint: float
        if (!is_null($scoreBraking100Km) && !(is_float($scoreBraking100Km) || is_numeric($scoreBraking100Km))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreBraking100Km, true), gettype($scoreBraking100Km)), __LINE__);
        }
        $this->ScoreBraking100Km = $scoreBraking100Km;
        return $this;
    }
    /**
     * Get ScoreGearingInGreenSpot value
     * @return float
     */
    public function getScoreGearingInGreenSpot()
    {
        return $this->ScoreGearingInGreenSpot;
    }
    /**
     * Set ScoreGearingInGreenSpot value
     * @param float $scoreGearingInGreenSpot
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreGearingInGreenSpot($scoreGearingInGreenSpot = null)
    {
        // validation for constraint: float
        if (!is_null($scoreGearingInGreenSpot) && !(is_float($scoreGearingInGreenSpot) || is_numeric($scoreGearingInGreenSpot))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreGearingInGreenSpot, true), gettype($scoreGearingInGreenSpot)), __LINE__);
        }
        $this->ScoreGearingInGreenSpot = $scoreGearingInGreenSpot;
        return $this;
    }
    /**
     * Get ScoreTopSpeedFluctuations value
     * @return float
     */
    public function getScoreTopSpeedFluctuations()
    {
        return $this->ScoreTopSpeedFluctuations;
    }
    /**
     * Set ScoreTopSpeedFluctuations value
     * @param float $scoreTopSpeedFluctuations
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreTopSpeedFluctuations($scoreTopSpeedFluctuations = null)
    {
        // validation for constraint: float
        if (!is_null($scoreTopSpeedFluctuations) && !(is_float($scoreTopSpeedFluctuations) || is_numeric($scoreTopSpeedFluctuations))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreTopSpeedFluctuations, true), gettype($scoreTopSpeedFluctuations)), __LINE__);
        }
        $this->ScoreTopSpeedFluctuations = $scoreTopSpeedFluctuations;
        return $this;
    }
    /**
     * Get ScoreRedRpm value
     * @return float
     */
    public function getScoreRedRpm()
    {
        return $this->ScoreRedRpm;
    }
    /**
     * Set ScoreRedRpm value
     * @param float $scoreRedRpm
     * @return \StructType\EcoPerformanceScore
     */
    public function setScoreRedRpm($scoreRedRpm = null)
    {
        // validation for constraint: float
        if (!is_null($scoreRedRpm) && !(is_float($scoreRedRpm) || is_numeric($scoreRedRpm))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($scoreRedRpm, true), gettype($scoreRedRpm)), __LINE__);
        }
        $this->ScoreRedRpm = $scoreRedRpm;
        return $this;
    }
    /**
     * Get TotalScore value
     * @return float
     */
    public function getTotalScore()
    {
        return $this->TotalScore;
    }
    /**
     * Set TotalScore value
     * @param float $totalScore
     * @return \StructType\EcoPerformanceScore
     */
    public function setTotalScore($totalScore = null)
    {
        // validation for constraint: float
        if (!is_null($totalScore) && !(is_float($totalScore) || is_numeric($totalScore))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($totalScore, true), gettype($totalScore)), __LINE__);
        }
        $this->TotalScore = $totalScore;
        return $this;
    }
}
