<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for tc StructType
 * @subpackage Structs
 */
class Tc extends AbstractStructBase
{
    /**
     * The app
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: app
     * @var \StructType\App
     */
    public $app;
    /**
     * The iden
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: iden
     * @var \StructType\Iden
     */
    public $iden;
    /**
     * The agent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: agent
     * @var \StructType\Agent
     */
    public $agent;
    /**
     * The provider
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: provider
     * @var \StructType\Provider
     */
    public $provider;
    /**
     * The trace
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: trace
     * @var \StructType\Trace
     */
    public $trace;
    /**
     * The script
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: script
     * @var \StructType\Script
     */
    public $script;
    /**
     * The tid
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - ref: tid
     * @var string
     */
    public $tid;
    /**
     * The al
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\Al
     */
    public $al;
    /**
     * The pid
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $pid;
    /**
     * The dt
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $dt;
    /**
     * Constructor method for tc
     * @uses Tc::setApp()
     * @uses Tc::setIden()
     * @uses Tc::setAgent()
     * @uses Tc::setProvider()
     * @uses Tc::setTrace()
     * @uses Tc::setScript()
     * @uses Tc::setTid()
     * @uses Tc::setAl()
     * @uses Tc::setPid()
     * @uses Tc::setDt()
     * @param \StructType\App $app
     * @param \StructType\Iden $iden
     * @param \StructType\Agent $agent
     * @param \StructType\Provider $provider
     * @param \StructType\Trace $trace
     * @param \StructType\Script $script
     * @param string $tid
     * @param \StructType\Al $al
     * @param string $pid
     * @param string $dt
     */
    public function __construct(\StructType\App $app = null, \StructType\Iden $iden = null, \StructType\Agent $agent = null, \StructType\Provider $provider = null, \StructType\Trace $trace = null, \StructType\Script $script = null, $tid = null, \StructType\Al $al = null, $pid = null, $dt = null)
    {
        $this
            ->setApp($app)
            ->setIden($iden)
            ->setAgent($agent)
            ->setProvider($provider)
            ->setTrace($trace)
            ->setScript($script)
            ->setTid($tid)
            ->setAl($al)
            ->setPid($pid)
            ->setDt($dt);
    }
    /**
     * Get app value
     * @return \StructType\App|null
     */
    public function getApp()
    {
        return $this->app;
    }
    /**
     * Set app value
     * @param \StructType\App $app
     * @return \StructType\Tc
     */
    public function setApp(\StructType\App $app = null)
    {
        $this->app = $app;
        return $this;
    }
    /**
     * Get iden value
     * @return \StructType\Iden|null
     */
    public function getIden()
    {
        return $this->iden;
    }
    /**
     * Set iden value
     * @param \StructType\Iden $iden
     * @return \StructType\Tc
     */
    public function setIden(\StructType\Iden $iden = null)
    {
        $this->iden = $iden;
        return $this;
    }
    /**
     * Get agent value
     * @return \StructType\Agent|null
     */
    public function getAgent()
    {
        return $this->agent;
    }
    /**
     * Set agent value
     * @param \StructType\Agent $agent
     * @return \StructType\Tc
     */
    public function setAgent(\StructType\Agent $agent = null)
    {
        $this->agent = $agent;
        return $this;
    }
    /**
     * Get provider value
     * @return \StructType\Provider|null
     */
    public function getProvider()
    {
        return $this->provider;
    }
    /**
     * Set provider value
     * @param \StructType\Provider $provider
     * @return \StructType\Tc
     */
    public function setProvider(\StructType\Provider $provider = null)
    {
        $this->provider = $provider;
        return $this;
    }
    /**
     * Get trace value
     * @return \StructType\Trace|null
     */
    public function getTrace()
    {
        return $this->trace;
    }
    /**
     * Set trace value
     * @param \StructType\Trace $trace
     * @return \StructType\Tc
     */
    public function setTrace(\StructType\Trace $trace = null)
    {
        $this->trace = $trace;
        return $this;
    }
    /**
     * Get script value
     * @return \StructType\Script|null
     */
    public function getScript()
    {
        return $this->script;
    }
    /**
     * Set script value
     * @param \StructType\Script $script
     * @return \StructType\Tc
     */
    public function setScript(\StructType\Script $script = null)
    {
        $this->script = $script;
        return $this;
    }
    /**
     * Get tid value
     * @return string|null
     */
    public function getTid()
    {
        return $this->tid;
    }
    /**
     * Set tid value
     * @param string $tid
     * @return \StructType\Tc
     */
    public function setTid($tid = null)
    {
        // validation for constraint: string
        if (!is_null($tid) && !is_string($tid)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($tid, true), gettype($tid)), __LINE__);
        }
        $this->tid = $tid;
        return $this;
    }
    /**
     * Get al value
     * @return \StructType\Al|null
     */
    public function getAl()
    {
        return $this->al;
    }
    /**
     * Set al value
     * @param \StructType\Al $al
     * @return \StructType\Tc
     */
    public function setAl(\StructType\Al $al = null)
    {
        $this->al = $al;
        return $this;
    }
    /**
     * Get pid value
     * @return string|null
     */
    public function getPid()
    {
        return $this->pid;
    }
    /**
     * Set pid value
     * @param string $pid
     * @return \StructType\Tc
     */
    public function setPid($pid = null)
    {
        // validation for constraint: string
        if (!is_null($pid) && !is_string($pid)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pid, true), gettype($pid)), __LINE__);
        }
        $this->pid = $pid;
        return $this;
    }
    /**
     * Get dt value
     * @return string|null
     */
    public function getDt()
    {
        return $this->dt;
    }
    /**
     * Set dt value
     * @param string $dt
     * @return \StructType\Tc
     */
    public function setDt($dt = null)
    {
        // validation for constraint: string
        if (!is_null($dt) && !is_string($dt)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dt, true), gettype($dt)), __LINE__);
        }
        $this->dt = $dt;
        return $this;
    }
}
