<?php

namespace \NineDotMedia\Viapost\Struct;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CalculateCostOfDataList Struct
 * @subpackage Structs
 */
class CalculateCostOfDataList extends AbstractStructBase
{
    /**
     * The singleUse
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $singleUse;
    /**
     * The numberOfItems
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var int
     */
    public $numberOfItems;
    /**
     * The cost
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var float
     */
    public $cost;
    /**
     * The individualCost
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var float
     */
    public $individualCost;
    /**
     * The loginToken
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $loginToken;
    /**
     * The dataList
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $dataList;
    /**
     * The returnMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $returnMessage;
    /**
     * Constructor method for CalculateCostOfDataList
     * @uses CalculateCostOfDataList::setSingleUse()
     * @uses CalculateCostOfDataList::setNumberOfItems()
     * @uses CalculateCostOfDataList::setCost()
     * @uses CalculateCostOfDataList::setIndividualCost()
     * @uses CalculateCostOfDataList::setLoginToken()
     * @uses CalculateCostOfDataList::setDataList()
     * @uses CalculateCostOfDataList::setReturnMessage()
     * @param bool $singleUse
     * @param int $numberOfItems
     * @param float $cost
     * @param float $individualCost
     * @param string $loginToken
     * @param string $dataList
     * @param string $returnMessage
     */
    public function __construct($singleUse = null, $numberOfItems = null, $cost = null, $individualCost = null, $loginToken = null, $dataList = null, $returnMessage = null)
    {
        $this
            ->setSingleUse($singleUse)
            ->setNumberOfItems($numberOfItems)
            ->setCost($cost)
            ->setIndividualCost($individualCost)
            ->setLoginToken($loginToken)
            ->setDataList($dataList)
            ->setReturnMessage($returnMessage);
    }
    /**
     * Get singleUse value
     * @return bool
     */
    public function getSingleUse()
    {
        return $this->singleUse;
    }
    /**
     * Set singleUse value
     * @param bool $singleUse
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setSingleUse($singleUse = null)
    {
        // validation for constraint: boolean
        if (!is_null($singleUse) && !is_bool($singleUse)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($singleUse, true), gettype($singleUse)), __LINE__);
        }
        $this->singleUse = $singleUse;
        return $this;
    }
    /**
     * Get numberOfItems value
     * @return int
     */
    public function getNumberOfItems()
    {
        return $this->numberOfItems;
    }
    /**
     * Set numberOfItems value
     * @param int $numberOfItems
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setNumberOfItems($numberOfItems = null)
    {
        // validation for constraint: int
        if (!is_null($numberOfItems) && !(is_int($numberOfItems) || ctype_digit($numberOfItems))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($numberOfItems, true), gettype($numberOfItems)), __LINE__);
        }
        $this->numberOfItems = $numberOfItems;
        return $this;
    }
    /**
     * Get cost value
     * @return float
     */
    public function getCost()
    {
        return $this->cost;
    }
    /**
     * Set cost value
     * @param float $cost
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setCost($cost = null)
    {
        // validation for constraint: float
        if (!is_null($cost) && !(is_float($cost) || is_numeric($cost))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($cost, true), gettype($cost)), __LINE__);
        }
        $this->cost = $cost;
        return $this;
    }
    /**
     * Get individualCost value
     * @return float
     */
    public function getIndividualCost()
    {
        return $this->individualCost;
    }
    /**
     * Set individualCost value
     * @param float $individualCost
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setIndividualCost($individualCost = null)
    {
        // validation for constraint: float
        if (!is_null($individualCost) && !(is_float($individualCost) || is_numeric($individualCost))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($individualCost, true), gettype($individualCost)), __LINE__);
        }
        $this->individualCost = $individualCost;
        return $this;
    }
    /**
     * Get loginToken value
     * @return string|null
     */
    public function getLoginToken()
    {
        return $this->loginToken;
    }
    /**
     * Set loginToken value
     * @param string $loginToken
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setLoginToken($loginToken = null)
    {
        // validation for constraint: string
        if (!is_null($loginToken) && !is_string($loginToken)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($loginToken, true), gettype($loginToken)), __LINE__);
        }
        $this->loginToken = $loginToken;
        return $this;
    }
    /**
     * Get dataList value
     * @return string|null
     */
    public function getDataList()
    {
        return $this->dataList;
    }
    /**
     * Set dataList value
     * @param string $dataList
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setDataList($dataList = null)
    {
        // validation for constraint: string
        if (!is_null($dataList) && !is_string($dataList)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dataList, true), gettype($dataList)), __LINE__);
        }
        $this->dataList = $dataList;
        return $this;
    }
    /**
     * Get returnMessage value
     * @return string|null
     */
    public function getReturnMessage()
    {
        return $this->returnMessage;
    }
    /**
     * Set returnMessage value
     * @param string $returnMessage
     * @return \\NineDotMedia\Viapost\Struct\CalculateCostOfDataList
     */
    public function setReturnMessage($returnMessage = null)
    {
        // validation for constraint: string
        if (!is_null($returnMessage) && !is_string($returnMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($returnMessage, true), gettype($returnMessage)), __LINE__);
        }
        $this->returnMessage = $returnMessage;
        return $this;
    }
}
