<?php

declare(strict_types=1);

namespace Drupal\netforum\xWeb\Generated\StructType;

use InvalidArgumentException;
use WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Donation StructType
 * @subpackage Structs
 * @author Drupal NetForum xWeb PHP SDK Generator
 * @version 1.0.0
 * @license GPL-2.0-or-later https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * @see https://www.drupal.org/project/netforum
 * @generatedDate 2025-08-05
 * @generatedRelease Official
 * @generatedNetForumVersion 37
 */
#[\AllowDynamicProperties]
class Donation extends AbstractStructBase
{
    /**
     * The gft_key
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $gft_key = null;
    /**
     * The dnr_cst_key
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $dnr_cst_key = null;
    /**
     * The ind_first_name
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $ind_first_name = null;
    /**
     * The ind_last_name
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $ind_last_name = null;
    /**
     * The cst_eml_address_dn
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $cst_eml_address_dn = null;
    /**
     * The gft_amount
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $gft_amount = null;
    /**
     * The gft_date
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $gft_date = null;
    /**
     * The adr_line1
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $adr_line1 = null;
    /**
     * The adr_line2
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $adr_line2 = null;
    /**
     * The adr_city
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $adr_city = null;
    /**
     * The adr_state
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $adr_state = null;
    /**
     * The adr_post_code
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string|null
     */
    protected ?string $adr_post_code = null;
    /**
     * Constructor method for Donation
     * @uses Donation::setGft_key()
     * @uses Donation::setDnr_cst_key()
     * @uses Donation::setInd_first_name()
     * @uses Donation::setInd_last_name()
     * @uses Donation::setCst_eml_address_dn()
     * @uses Donation::setGft_amount()
     * @uses Donation::setGft_date()
     * @uses Donation::setAdr_line1()
     * @uses Donation::setAdr_line2()
     * @uses Donation::setAdr_city()
     * @uses Donation::setAdr_state()
     * @uses Donation::setAdr_post_code()
     * @param string $gft_key
     * @param string $dnr_cst_key
     * @param string $ind_first_name
     * @param string $ind_last_name
     * @param string $cst_eml_address_dn
     * @param string $gft_amount
     * @param string $gft_date
     * @param string $adr_line1
     * @param string $adr_line2
     * @param string $adr_city
     * @param string $adr_state
     * @param string $adr_post_code
     */
    public function __construct(?string $gft_key = null, ?string $dnr_cst_key = null, ?string $ind_first_name = null, ?string $ind_last_name = null, ?string $cst_eml_address_dn = null, ?string $gft_amount = null, ?string $gft_date = null, ?string $adr_line1 = null, ?string $adr_line2 = null, ?string $adr_city = null, ?string $adr_state = null, ?string $adr_post_code = null)
    {
        $this
            ->setGft_key($gft_key)
            ->setDnr_cst_key($dnr_cst_key)
            ->setInd_first_name($ind_first_name)
            ->setInd_last_name($ind_last_name)
            ->setCst_eml_address_dn($cst_eml_address_dn)
            ->setGft_amount($gft_amount)
            ->setGft_date($gft_date)
            ->setAdr_line1($adr_line1)
            ->setAdr_line2($adr_line2)
            ->setAdr_city($adr_city)
            ->setAdr_state($adr_state)
            ->setAdr_post_code($adr_post_code);
    }
    /**
     * Get gft_key value
     * @return string|null
     */
    public function getGft_key(): ?string
    {
        return $this->gft_key;
    }
    /**
     * Set gft_key value
     * @param string $gft_key
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setGft_key(?string $gft_key = null): self
    {
        // validation for constraint: string
        if (!is_null($gft_key) && !is_string($gft_key)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($gft_key, true), gettype($gft_key)), __LINE__);
        }
        $this->gft_key = $gft_key;
        
        return $this;
    }
    /**
     * Get dnr_cst_key value
     * @return string|null
     */
    public function getDnr_cst_key(): ?string
    {
        return $this->dnr_cst_key;
    }
    /**
     * Set dnr_cst_key value
     * @param string $dnr_cst_key
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setDnr_cst_key(?string $dnr_cst_key = null): self
    {
        // validation for constraint: string
        if (!is_null($dnr_cst_key) && !is_string($dnr_cst_key)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dnr_cst_key, true), gettype($dnr_cst_key)), __LINE__);
        }
        $this->dnr_cst_key = $dnr_cst_key;
        
        return $this;
    }
    /**
     * Get ind_first_name value
     * @return string|null
     */
    public function getInd_first_name(): ?string
    {
        return $this->ind_first_name;
    }
    /**
     * Set ind_first_name value
     * @param string $ind_first_name
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setInd_first_name(?string $ind_first_name = null): self
    {
        // validation for constraint: string
        if (!is_null($ind_first_name) && !is_string($ind_first_name)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($ind_first_name, true), gettype($ind_first_name)), __LINE__);
        }
        $this->ind_first_name = $ind_first_name;
        
        return $this;
    }
    /**
     * Get ind_last_name value
     * @return string|null
     */
    public function getInd_last_name(): ?string
    {
        return $this->ind_last_name;
    }
    /**
     * Set ind_last_name value
     * @param string $ind_last_name
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setInd_last_name(?string $ind_last_name = null): self
    {
        // validation for constraint: string
        if (!is_null($ind_last_name) && !is_string($ind_last_name)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($ind_last_name, true), gettype($ind_last_name)), __LINE__);
        }
        $this->ind_last_name = $ind_last_name;
        
        return $this;
    }
    /**
     * Get cst_eml_address_dn value
     * @return string|null
     */
    public function getCst_eml_address_dn(): ?string
    {
        return $this->cst_eml_address_dn;
    }
    /**
     * Set cst_eml_address_dn value
     * @param string $cst_eml_address_dn
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setCst_eml_address_dn(?string $cst_eml_address_dn = null): self
    {
        // validation for constraint: string
        if (!is_null($cst_eml_address_dn) && !is_string($cst_eml_address_dn)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cst_eml_address_dn, true), gettype($cst_eml_address_dn)), __LINE__);
        }
        $this->cst_eml_address_dn = $cst_eml_address_dn;
        
        return $this;
    }
    /**
     * Get gft_amount value
     * @return string|null
     */
    public function getGft_amount(): ?string
    {
        return $this->gft_amount;
    }
    /**
     * Set gft_amount value
     * @param string $gft_amount
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setGft_amount(?string $gft_amount = null): self
    {
        // validation for constraint: string
        if (!is_null($gft_amount) && !is_string($gft_amount)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($gft_amount, true), gettype($gft_amount)), __LINE__);
        }
        $this->gft_amount = $gft_amount;
        
        return $this;
    }
    /**
     * Get gft_date value
     * @return string|null
     */
    public function getGft_date(): ?string
    {
        return $this->gft_date;
    }
    /**
     * Set gft_date value
     * @param string $gft_date
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setGft_date(?string $gft_date = null): self
    {
        // validation for constraint: string
        if (!is_null($gft_date) && !is_string($gft_date)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($gft_date, true), gettype($gft_date)), __LINE__);
        }
        $this->gft_date = $gft_date;
        
        return $this;
    }
    /**
     * Get adr_line1 value
     * @return string|null
     */
    public function getAdr_line1(): ?string
    {
        return $this->adr_line1;
    }
    /**
     * Set adr_line1 value
     * @param string $adr_line1
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setAdr_line1(?string $adr_line1 = null): self
    {
        // validation for constraint: string
        if (!is_null($adr_line1) && !is_string($adr_line1)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($adr_line1, true), gettype($adr_line1)), __LINE__);
        }
        $this->adr_line1 = $adr_line1;
        
        return $this;
    }
    /**
     * Get adr_line2 value
     * @return string|null
     */
    public function getAdr_line2(): ?string
    {
        return $this->adr_line2;
    }
    /**
     * Set adr_line2 value
     * @param string $adr_line2
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setAdr_line2(?string $adr_line2 = null): self
    {
        // validation for constraint: string
        if (!is_null($adr_line2) && !is_string($adr_line2)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($adr_line2, true), gettype($adr_line2)), __LINE__);
        }
        $this->adr_line2 = $adr_line2;
        
        return $this;
    }
    /**
     * Get adr_city value
     * @return string|null
     */
    public function getAdr_city(): ?string
    {
        return $this->adr_city;
    }
    /**
     * Set adr_city value
     * @param string $adr_city
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setAdr_city(?string $adr_city = null): self
    {
        // validation for constraint: string
        if (!is_null($adr_city) && !is_string($adr_city)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($adr_city, true), gettype($adr_city)), __LINE__);
        }
        $this->adr_city = $adr_city;
        
        return $this;
    }
    /**
     * Get adr_state value
     * @return string|null
     */
    public function getAdr_state(): ?string
    {
        return $this->adr_state;
    }
    /**
     * Set adr_state value
     * @param string $adr_state
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setAdr_state(?string $adr_state = null): self
    {
        // validation for constraint: string
        if (!is_null($adr_state) && !is_string($adr_state)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($adr_state, true), gettype($adr_state)), __LINE__);
        }
        $this->adr_state = $adr_state;
        
        return $this;
    }
    /**
     * Get adr_post_code value
     * @return string|null
     */
    public function getAdr_post_code(): ?string
    {
        return $this->adr_post_code;
    }
    /**
     * Set adr_post_code value
     * @param string $adr_post_code
     * @return \Drupal\netforum\xWeb\Generated\StructType\Donation
     */
    public function setAdr_post_code(?string $adr_post_code = null): self
    {
        // validation for constraint: string
        if (!is_null($adr_post_code) && !is_string($adr_post_code)) {
            throw new InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($adr_post_code, true), gettype($adr_post_code)), __LINE__);
        }
        $this->adr_post_code = $adr_post_code;
        
        return $this;
    }
}
