<?php

namespace SelectSiparis;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetKargoSecenekRequest StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:GetKargoSecenekRequest
 * @subpackage Structs
 */
class GetKargoSecenekRequest extends AbstractStructBase
{
    /**
     * The IlceId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IlceId;
    /**
     * The MahalleId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $MahalleId;
    /**
     * The ParaBirimi
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ParaBirimi;
    /**
     * The SehirId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $SehirId;
    /**
     * The SemtId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $SemtId;
    /**
     * The Sepet
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \SelectSiparis\ServisSepet
     */
    public $Sepet;
    /**
     * Constructor method for GetKargoSecenekRequest
     * @uses GetKargoSecenekRequest::setIlceId()
     * @uses GetKargoSecenekRequest::setMahalleId()
     * @uses GetKargoSecenekRequest::setParaBirimi()
     * @uses GetKargoSecenekRequest::setSehirId()
     * @uses GetKargoSecenekRequest::setSemtId()
     * @uses GetKargoSecenekRequest::setSepet()
     * @param int $ilceId
     * @param int $mahalleId
     * @param string $paraBirimi
     * @param int $sehirId
     * @param int $semtId
     * @param \SelectSiparis\ServisSepet $sepet
     */
    public function __construct($ilceId = null, $mahalleId = null, $paraBirimi = null, $sehirId = null, $semtId = null, \SelectSiparis\ServisSepet $sepet = null)
    {
        $this
            ->setIlceId($ilceId)
            ->setMahalleId($mahalleId)
            ->setParaBirimi($paraBirimi)
            ->setSehirId($sehirId)
            ->setSemtId($semtId)
            ->setSepet($sepet);
    }
    /**
     * Get IlceId value
     * @return int|null
     */
    public function getIlceId()
    {
        return $this->IlceId;
    }
    /**
     * Set IlceId value
     * @param int $ilceId
     * @return \SelectSiparis\GetKargoSecenekRequest
     */
    public function setIlceId($ilceId = null)
    {
        // validation for constraint: int
        if (!is_null($ilceId) && !(is_int($ilceId) || ctype_digit($ilceId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($ilceId, true), gettype($ilceId)), __LINE__);
        }
        $this->IlceId = $ilceId;
        return $this;
    }
    /**
     * Get MahalleId value
     * @return int|null
     */
    public function getMahalleId()
    {
        return $this->MahalleId;
    }
    /**
     * Set MahalleId value
     * @param int $mahalleId
     * @return \SelectSiparis\GetKargoSecenekRequest
     */
    public function setMahalleId($mahalleId = null)
    {
        // validation for constraint: int
        if (!is_null($mahalleId) && !(is_int($mahalleId) || ctype_digit($mahalleId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($mahalleId, true), gettype($mahalleId)), __LINE__);
        }
        $this->MahalleId = $mahalleId;
        return $this;
    }
    /**
     * Get ParaBirimi value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getParaBirimi()
    {
        return isset($this->ParaBirimi) ? $this->ParaBirimi : null;
    }
    /**
     * Set ParaBirimi value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $paraBirimi
     * @return \SelectSiparis\GetKargoSecenekRequest
     */
    public function setParaBirimi($paraBirimi = null)
    {
        // validation for constraint: string
        if (!is_null($paraBirimi) && !is_string($paraBirimi)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($paraBirimi, true), gettype($paraBirimi)), __LINE__);
        }
        if (is_null($paraBirimi) || (is_array($paraBirimi) && empty($paraBirimi))) {
            unset($this->ParaBirimi);
        } else {
            $this->ParaBirimi = $paraBirimi;
        }
        return $this;
    }
    /**
     * Get SehirId value
     * @return int|null
     */
    public function getSehirId()
    {
        return $this->SehirId;
    }
    /**
     * Set SehirId value
     * @param int $sehirId
     * @return \SelectSiparis\GetKargoSecenekRequest
     */
    public function setSehirId($sehirId = null)
    {
        // validation for constraint: int
        if (!is_null($sehirId) && !(is_int($sehirId) || ctype_digit($sehirId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($sehirId, true), gettype($sehirId)), __LINE__);
        }
        $this->SehirId = $sehirId;
        return $this;
    }
    /**
     * Get SemtId value
     * @return int|null
     */
    public function getSemtId()
    {
        return $this->SemtId;
    }
    /**
     * Set SemtId value
     * @param int $semtId
     * @return \SelectSiparis\GetKargoSecenekRequest
     */
    public function setSemtId($semtId = null)
    {
        // validation for constraint: int
        if (!is_null($semtId) && !(is_int($semtId) || ctype_digit($semtId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($semtId, true), gettype($semtId)), __LINE__);
        }
        $this->SemtId = $semtId;
        return $this;
    }
    /**
     * Get Sepet value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \SelectSiparis\ServisSepet|null
     */
    public function getSepet()
    {
        return isset($this->Sepet) ? $this->Sepet : null;
    }
    /**
     * Set Sepet value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \SelectSiparis\ServisSepet $sepet
     * @return \SelectSiparis\GetKargoSecenekRequest
     */
    public function setSepet(\SelectSiparis\ServisSepet $sepet = null)
    {
        if (is_null($sepet) || (is_array($sepet) && empty($sepet))) {
            unset($this->Sepet);
        } else {
            $this->Sepet = $sepet;
        }
        return $this;
    }
}
