<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for PaycheckPayDisburse StructType
 * @subpackage Structs
 */
class PaycheckPayDisburse extends AbstractStructBase
{
    /**
     * The method
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $method;
    /**
     * The bankName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $bankName;
    /**
     * The bankAccountDecrypt
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $bankAccountDecrypt;
    /**
     * The statusName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $statusName;
    /**
     * The amount
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $amount;
    /**
     * Constructor method for PaycheckPayDisburse
     * @uses PaycheckPayDisburse::setMethod()
     * @uses PaycheckPayDisburse::setBankName()
     * @uses PaycheckPayDisburse::setBankAccountDecrypt()
     * @uses PaycheckPayDisburse::setStatusName()
     * @uses PaycheckPayDisburse::setAmount()
     * @param string $method
     * @param string $bankName
     * @param string $bankAccountDecrypt
     * @param string $statusName
     * @param float $amount
     */
    public function __construct($method = null, $bankName = null, $bankAccountDecrypt = null, $statusName = null, $amount = null)
    {
        $this
            ->setMethod($method)
            ->setBankName($bankName)
            ->setBankAccountDecrypt($bankAccountDecrypt)
            ->setStatusName($statusName)
            ->setAmount($amount);
    }
    /**
     * Get method value
     * @return string|null
     */
    public function getMethod()
    {
        return $this->method;
    }
    /**
     * Set method value
     * @param string $method
     * @return \StructType\PaycheckPayDisburse
     */
    public function setMethod($method = null)
    {
        // validation for constraint: string
        if (!is_null($method) && !is_string($method)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($method, true), gettype($method)), __LINE__);
        }
        $this->method = $method;
        return $this;
    }
    /**
     * Get bankName value
     * @return string|null
     */
    public function getBankName()
    {
        return $this->bankName;
    }
    /**
     * Set bankName value
     * @param string $bankName
     * @return \StructType\PaycheckPayDisburse
     */
    public function setBankName($bankName = null)
    {
        // validation for constraint: string
        if (!is_null($bankName) && !is_string($bankName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($bankName, true), gettype($bankName)), __LINE__);
        }
        $this->bankName = $bankName;
        return $this;
    }
    /**
     * Get bankAccountDecrypt value
     * @return string|null
     */
    public function getBankAccountDecrypt()
    {
        return $this->bankAccountDecrypt;
    }
    /**
     * Set bankAccountDecrypt value
     * @param string $bankAccountDecrypt
     * @return \StructType\PaycheckPayDisburse
     */
    public function setBankAccountDecrypt($bankAccountDecrypt = null)
    {
        // validation for constraint: string
        if (!is_null($bankAccountDecrypt) && !is_string($bankAccountDecrypt)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($bankAccountDecrypt, true), gettype($bankAccountDecrypt)), __LINE__);
        }
        $this->bankAccountDecrypt = $bankAccountDecrypt;
        return $this;
    }
    /**
     * Get statusName value
     * @return string|null
     */
    public function getStatusName()
    {
        return $this->statusName;
    }
    /**
     * Set statusName value
     * @param string $statusName
     * @return \StructType\PaycheckPayDisburse
     */
    public function setStatusName($statusName = null)
    {
        // validation for constraint: string
        if (!is_null($statusName) && !is_string($statusName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($statusName, true), gettype($statusName)), __LINE__);
        }
        $this->statusName = $statusName;
        return $this;
    }
    /**
     * Get amount value
     * @return float|null
     */
    public function getAmount()
    {
        return $this->amount;
    }
    /**
     * Set amount value
     * @param float $amount
     * @return \StructType\PaycheckPayDisburse
     */
    public function setAmount($amount = null)
    {
        // validation for constraint: float
        if (!is_null($amount) && !(is_float($amount) || is_numeric($amount))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($amount, true), gettype($amount)), __LINE__);
        }
        $this->amount = $amount;
        return $this;
    }
}
