<?php

namespace SelectSiparis;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for EFatura StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:EFatura
 * @subpackage Structs
 */
class EFatura extends SaveEFatura
{
    /**
     * The EFaturaUygulamaYanit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EFaturaUygulamaYanit;
    /**
     * The Entegrator
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $Entegrator;
    /**
     * The HataKodu
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $HataKodu;
    /**
     * The IptalEdildi
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IptalEdildi;
    /**
     * The IptalTarihi
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $IptalTarihi;
    /**
     * The Sonuc
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Sonuc;
    /**
     * Constructor method for EFatura
     * @uses EFatura::setEFaturaUygulamaYanit()
     * @uses EFatura::setEntegrator()
     * @uses EFatura::setHataKodu()
     * @uses EFatura::setIptalEdildi()
     * @uses EFatura::setIptalTarihi()
     * @uses EFatura::setSonuc()
     * @param string $eFaturaUygulamaYanit
     * @param int $entegrator
     * @param string $hataKodu
     * @param bool $iptalEdildi
     * @param string $iptalTarihi
     * @param string $sonuc
     */
    public function __construct($eFaturaUygulamaYanit = null, $entegrator = null, $hataKodu = null, $iptalEdildi = null, $iptalTarihi = null, $sonuc = null)
    {
        $this
            ->setEFaturaUygulamaYanit($eFaturaUygulamaYanit)
            ->setEntegrator($entegrator)
            ->setHataKodu($hataKodu)
            ->setIptalEdildi($iptalEdildi)
            ->setIptalTarihi($iptalTarihi)
            ->setSonuc($sonuc);
    }
    /**
     * Get EFaturaUygulamaYanit 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 getEFaturaUygulamaYanit()
    {
        return isset($this->EFaturaUygulamaYanit) ? $this->EFaturaUygulamaYanit : null;
    }
    /**
     * Set EFaturaUygulamaYanit 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 $eFaturaUygulamaYanit
     * @return \SelectSiparis\EFatura
     */
    public function setEFaturaUygulamaYanit($eFaturaUygulamaYanit = null)
    {
        // validation for constraint: string
        if (!is_null($eFaturaUygulamaYanit) && !is_string($eFaturaUygulamaYanit)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($eFaturaUygulamaYanit, true), gettype($eFaturaUygulamaYanit)), __LINE__);
        }
        if (is_null($eFaturaUygulamaYanit) || (is_array($eFaturaUygulamaYanit) && empty($eFaturaUygulamaYanit))) {
            unset($this->EFaturaUygulamaYanit);
        } else {
            $this->EFaturaUygulamaYanit = $eFaturaUygulamaYanit;
        }
        return $this;
    }
    /**
     * Get Entegrator value
     * @return int|null
     */
    public function getEntegrator()
    {
        return $this->Entegrator;
    }
    /**
     * Set Entegrator value
     * @param int $entegrator
     * @return \SelectSiparis\EFatura
     */
    public function setEntegrator($entegrator = null)
    {
        // validation for constraint: int
        if (!is_null($entegrator) && !(is_int($entegrator) || ctype_digit($entegrator))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($entegrator, true), gettype($entegrator)), __LINE__);
        }
        $this->Entegrator = $entegrator;
        return $this;
    }
    /**
     * Get HataKodu 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 getHataKodu()
    {
        return isset($this->HataKodu) ? $this->HataKodu : null;
    }
    /**
     * Set HataKodu 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 $hataKodu
     * @return \SelectSiparis\EFatura
     */
    public function setHataKodu($hataKodu = null)
    {
        // validation for constraint: string
        if (!is_null($hataKodu) && !is_string($hataKodu)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($hataKodu, true), gettype($hataKodu)), __LINE__);
        }
        if (is_null($hataKodu) || (is_array($hataKodu) && empty($hataKodu))) {
            unset($this->HataKodu);
        } else {
            $this->HataKodu = $hataKodu;
        }
        return $this;
    }
    /**
     * Get IptalEdildi value
     * @return bool|null
     */
    public function getIptalEdildi()
    {
        return $this->IptalEdildi;
    }
    /**
     * Set IptalEdildi value
     * @param bool $iptalEdildi
     * @return \SelectSiparis\EFatura
     */
    public function setIptalEdildi($iptalEdildi = null)
    {
        // validation for constraint: boolean
        if (!is_null($iptalEdildi) && !is_bool($iptalEdildi)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($iptalEdildi, true), gettype($iptalEdildi)), __LINE__);
        }
        $this->IptalEdildi = $iptalEdildi;
        return $this;
    }
    /**
     * Get IptalTarihi value
     * @return string|null
     */
    public function getIptalTarihi()
    {
        return $this->IptalTarihi;
    }
    /**
     * Set IptalTarihi value
     * @param string $iptalTarihi
     * @return \SelectSiparis\EFatura
     */
    public function setIptalTarihi($iptalTarihi = null)
    {
        // validation for constraint: string
        if (!is_null($iptalTarihi) && !is_string($iptalTarihi)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iptalTarihi, true), gettype($iptalTarihi)), __LINE__);
        }
        $this->IptalTarihi = $iptalTarihi;
        return $this;
    }
    /**
     * Get Sonuc 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 getSonuc()
    {
        return isset($this->Sonuc) ? $this->Sonuc : null;
    }
    /**
     * Set Sonuc 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 $sonuc
     * @return \SelectSiparis\EFatura
     */
    public function setSonuc($sonuc = null)
    {
        // validation for constraint: string
        if (!is_null($sonuc) && !is_string($sonuc)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sonuc, true), gettype($sonuc)), __LINE__);
        }
        if (is_null($sonuc) || (is_array($sonuc) && empty($sonuc))) {
            unset($this->Sonuc);
        } else {
            $this->Sonuc = $sonuc;
        }
        return $this;
    }
}
