<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SupportCase StructType
 * Meta information extracted from the WSDL
 * - type: listSupport:SupportCase
 * @subpackage Structs
 */
class SupportCase extends Record
{
    /**
     * The escalationMessage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $escalationMessage;
    /**
     * The lastReopenedDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastReopenedDate;
    /**
     * The endDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $endDate;
    /**
     * The incomingMessage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $incomingMessage;
    /**
     * The insertSolution
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $insertSolution;
    /**
     * The outgoingMessage
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $outgoingMessage;
    /**
     * The searchSolution
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $searchSolution;
    /**
     * The emailForm
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $emailForm;
    /**
     * The newSolutionFromMsg
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $newSolutionFromMsg;
    /**
     * The internalOnly
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $internalOnly;
    /**
     * The customForm
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $customForm;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $title;
    /**
     * The caseNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $caseNumber;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $startDate;
    /**
     * The createdDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $createdDate;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastModifiedDate;
    /**
     * The lastMessageDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastMessageDate;
    /**
     * The company
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $company;
    /**
     * The profile
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $profile;
    /**
     * The subsidiary
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $subsidiary;
    /**
     * The contact
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $contact;
    /**
     * The email
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $email;
    /**
     * The phone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $phone;
    /**
     * The product
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $product;
    /**
     * The module
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $module;
    /**
     * The item
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $item;
    /**
     * The serialNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $serialNumber;
    /**
     * The inboundEmail
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $inboundEmail;
    /**
     * The issue
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $issue;
    /**
     * The status
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $status;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isInactive;
    /**
     * The priority
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $priority;
    /**
     * The origin
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $origin;
    /**
     * The category
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $category;
    /**
     * The assigned
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $assigned;
    /**
     * The helpDesk
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $helpDesk;
    /**
     * The emailEmployeesList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\EmailEmployeesList
     */
    public $emailEmployeesList;
    /**
     * The escalateToList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SupportCaseEscalateToList
     */
    public $escalateToList;
    /**
     * The timeItemList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SupportCaseTimeItemList
     */
    public $timeItemList;
    /**
     * The solutionsList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SupportCaseSolutionsList
     */
    public $solutionsList;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CustomFieldList
     */
    public $customFieldList;
    /**
     * The internalId
     * @var string
     */
    public $internalId;
    /**
     * The externalId
     * @var string
     */
    public $externalId;
    /**
     * Constructor method for SupportCase
     * @uses SupportCase::setEscalationMessage()
     * @uses SupportCase::setLastReopenedDate()
     * @uses SupportCase::setEndDate()
     * @uses SupportCase::setIncomingMessage()
     * @uses SupportCase::setInsertSolution()
     * @uses SupportCase::setOutgoingMessage()
     * @uses SupportCase::setSearchSolution()
     * @uses SupportCase::setEmailForm()
     * @uses SupportCase::setNewSolutionFromMsg()
     * @uses SupportCase::setInternalOnly()
     * @uses SupportCase::setCustomForm()
     * @uses SupportCase::setTitle()
     * @uses SupportCase::setCaseNumber()
     * @uses SupportCase::setStartDate()
     * @uses SupportCase::setCreatedDate()
     * @uses SupportCase::setLastModifiedDate()
     * @uses SupportCase::setLastMessageDate()
     * @uses SupportCase::setCompany()
     * @uses SupportCase::setProfile()
     * @uses SupportCase::setSubsidiary()
     * @uses SupportCase::setContact()
     * @uses SupportCase::setEmail()
     * @uses SupportCase::setPhone()
     * @uses SupportCase::setProduct()
     * @uses SupportCase::setModule()
     * @uses SupportCase::setItem()
     * @uses SupportCase::setSerialNumber()
     * @uses SupportCase::setInboundEmail()
     * @uses SupportCase::setIssue()
     * @uses SupportCase::setStatus()
     * @uses SupportCase::setIsInactive()
     * @uses SupportCase::setPriority()
     * @uses SupportCase::setOrigin()
     * @uses SupportCase::setCategory()
     * @uses SupportCase::setAssigned()
     * @uses SupportCase::setHelpDesk()
     * @uses SupportCase::setEmailEmployeesList()
     * @uses SupportCase::setEscalateToList()
     * @uses SupportCase::setTimeItemList()
     * @uses SupportCase::setSolutionsList()
     * @uses SupportCase::setCustomFieldList()
     * @uses SupportCase::setInternalId()
     * @uses SupportCase::setExternalId()
     * @param string $escalationMessage
     * @param string $lastReopenedDate
     * @param string $endDate
     * @param string $incomingMessage
     * @param \StructType\RecordRef $insertSolution
     * @param string $outgoingMessage
     * @param string $searchSolution
     * @param bool $emailForm
     * @param string $newSolutionFromMsg
     * @param bool $internalOnly
     * @param \StructType\RecordRef $customForm
     * @param string $title
     * @param string $caseNumber
     * @param string $startDate
     * @param string $createdDate
     * @param string $lastModifiedDate
     * @param string $lastMessageDate
     * @param \StructType\RecordRef $company
     * @param \StructType\RecordRef $profile
     * @param \StructType\RecordRef $subsidiary
     * @param \StructType\RecordRef $contact
     * @param string $email
     * @param string $phone
     * @param \StructType\RecordRef $product
     * @param \StructType\RecordRef $module
     * @param \StructType\RecordRef $item
     * @param \StructType\RecordRef $serialNumber
     * @param string $inboundEmail
     * @param \StructType\RecordRef $issue
     * @param \StructType\RecordRef $status
     * @param bool $isInactive
     * @param \StructType\RecordRef $priority
     * @param \StructType\RecordRef $origin
     * @param \StructType\RecordRef $category
     * @param \StructType\RecordRef $assigned
     * @param bool $helpDesk
     * @param \StructType\EmailEmployeesList $emailEmployeesList
     * @param \StructType\SupportCaseEscalateToList $escalateToList
     * @param \StructType\SupportCaseTimeItemList $timeItemList
     * @param \StructType\SupportCaseSolutionsList $solutionsList
     * @param \StructType\CustomFieldList $customFieldList
     * @param string $internalId
     * @param string $externalId
     */
    public function __construct($escalationMessage = null, $lastReopenedDate = null, $endDate = null, $incomingMessage = null, \StructType\RecordRef $insertSolution = null, $outgoingMessage = null, $searchSolution = null, $emailForm = null, $newSolutionFromMsg = null, $internalOnly = null, \StructType\RecordRef $customForm = null, $title = null, $caseNumber = null, $startDate = null, $createdDate = null, $lastModifiedDate = null, $lastMessageDate = null, \StructType\RecordRef $company = null, \StructType\RecordRef $profile = null, \StructType\RecordRef $subsidiary = null, \StructType\RecordRef $contact = null, $email = null, $phone = null, \StructType\RecordRef $product = null, \StructType\RecordRef $module = null, \StructType\RecordRef $item = null, \StructType\RecordRef $serialNumber = null, $inboundEmail = null, \StructType\RecordRef $issue = null, \StructType\RecordRef $status = null, $isInactive = null, \StructType\RecordRef $priority = null, \StructType\RecordRef $origin = null, \StructType\RecordRef $category = null, \StructType\RecordRef $assigned = null, $helpDesk = null, \StructType\EmailEmployeesList $emailEmployeesList = null, \StructType\SupportCaseEscalateToList $escalateToList = null, \StructType\SupportCaseTimeItemList $timeItemList = null, \StructType\SupportCaseSolutionsList $solutionsList = null, \StructType\CustomFieldList $customFieldList = null, $internalId = null, $externalId = null)
    {
        $this
            ->setEscalationMessage($escalationMessage)
            ->setLastReopenedDate($lastReopenedDate)
            ->setEndDate($endDate)
            ->setIncomingMessage($incomingMessage)
            ->setInsertSolution($insertSolution)
            ->setOutgoingMessage($outgoingMessage)
            ->setSearchSolution($searchSolution)
            ->setEmailForm($emailForm)
            ->setNewSolutionFromMsg($newSolutionFromMsg)
            ->setInternalOnly($internalOnly)
            ->setCustomForm($customForm)
            ->setTitle($title)
            ->setCaseNumber($caseNumber)
            ->setStartDate($startDate)
            ->setCreatedDate($createdDate)
            ->setLastModifiedDate($lastModifiedDate)
            ->setLastMessageDate($lastMessageDate)
            ->setCompany($company)
            ->setProfile($profile)
            ->setSubsidiary($subsidiary)
            ->setContact($contact)
            ->setEmail($email)
            ->setPhone($phone)
            ->setProduct($product)
            ->setModule($module)
            ->setItem($item)
            ->setSerialNumber($serialNumber)
            ->setInboundEmail($inboundEmail)
            ->setIssue($issue)
            ->setStatus($status)
            ->setIsInactive($isInactive)
            ->setPriority($priority)
            ->setOrigin($origin)
            ->setCategory($category)
            ->setAssigned($assigned)
            ->setHelpDesk($helpDesk)
            ->setEmailEmployeesList($emailEmployeesList)
            ->setEscalateToList($escalateToList)
            ->setTimeItemList($timeItemList)
            ->setSolutionsList($solutionsList)
            ->setCustomFieldList($customFieldList)
            ->setInternalId($internalId)
            ->setExternalId($externalId);
    }
    /**
     * Get escalationMessage value
     * @return string|null
     */
    public function getEscalationMessage()
    {
        return $this->escalationMessage;
    }
    /**
     * Set escalationMessage value
     * @param string $escalationMessage
     * @return \StructType\SupportCase
     */
    public function setEscalationMessage($escalationMessage = null)
    {
        // validation for constraint: string
        if (!is_null($escalationMessage) && !is_string($escalationMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($escalationMessage, true), gettype($escalationMessage)), __LINE__);
        }
        $this->escalationMessage = $escalationMessage;
        return $this;
    }
    /**
     * Get lastReopenedDate value
     * @return string|null
     */
    public function getLastReopenedDate()
    {
        return $this->lastReopenedDate;
    }
    /**
     * Set lastReopenedDate value
     * @param string $lastReopenedDate
     * @return \StructType\SupportCase
     */
    public function setLastReopenedDate($lastReopenedDate = null)
    {
        // validation for constraint: string
        if (!is_null($lastReopenedDate) && !is_string($lastReopenedDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastReopenedDate, true), gettype($lastReopenedDate)), __LINE__);
        }
        $this->lastReopenedDate = $lastReopenedDate;
        return $this;
    }
    /**
     * Get endDate value
     * @return string|null
     */
    public function getEndDate()
    {
        return $this->endDate;
    }
    /**
     * Set endDate value
     * @param string $endDate
     * @return \StructType\SupportCase
     */
    public function setEndDate($endDate = null)
    {
        // validation for constraint: string
        if (!is_null($endDate) && !is_string($endDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($endDate, true), gettype($endDate)), __LINE__);
        }
        $this->endDate = $endDate;
        return $this;
    }
    /**
     * Get incomingMessage value
     * @return string|null
     */
    public function getIncomingMessage()
    {
        return $this->incomingMessage;
    }
    /**
     * Set incomingMessage value
     * @param string $incomingMessage
     * @return \StructType\SupportCase
     */
    public function setIncomingMessage($incomingMessage = null)
    {
        // validation for constraint: string
        if (!is_null($incomingMessage) && !is_string($incomingMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($incomingMessage, true), gettype($incomingMessage)), __LINE__);
        }
        $this->incomingMessage = $incomingMessage;
        return $this;
    }
    /**
     * Get insertSolution value
     * @return \StructType\RecordRef|null
     */
    public function getInsertSolution()
    {
        return $this->insertSolution;
    }
    /**
     * Set insertSolution value
     * @param \StructType\RecordRef $insertSolution
     * @return \StructType\SupportCase
     */
    public function setInsertSolution(\StructType\RecordRef $insertSolution = null)
    {
        $this->insertSolution = $insertSolution;
        return $this;
    }
    /**
     * Get outgoingMessage value
     * @return string|null
     */
    public function getOutgoingMessage()
    {
        return $this->outgoingMessage;
    }
    /**
     * Set outgoingMessage value
     * @param string $outgoingMessage
     * @return \StructType\SupportCase
     */
    public function setOutgoingMessage($outgoingMessage = null)
    {
        // validation for constraint: string
        if (!is_null($outgoingMessage) && !is_string($outgoingMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($outgoingMessage, true), gettype($outgoingMessage)), __LINE__);
        }
        $this->outgoingMessage = $outgoingMessage;
        return $this;
    }
    /**
     * Get searchSolution value
     * @return string|null
     */
    public function getSearchSolution()
    {
        return $this->searchSolution;
    }
    /**
     * Set searchSolution value
     * @param string $searchSolution
     * @return \StructType\SupportCase
     */
    public function setSearchSolution($searchSolution = null)
    {
        // validation for constraint: string
        if (!is_null($searchSolution) && !is_string($searchSolution)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($searchSolution, true), gettype($searchSolution)), __LINE__);
        }
        $this->searchSolution = $searchSolution;
        return $this;
    }
    /**
     * Get emailForm value
     * @return bool|null
     */
    public function getEmailForm()
    {
        return $this->emailForm;
    }
    /**
     * Set emailForm value
     * @param bool $emailForm
     * @return \StructType\SupportCase
     */
    public function setEmailForm($emailForm = null)
    {
        // validation for constraint: boolean
        if (!is_null($emailForm) && !is_bool($emailForm)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($emailForm, true), gettype($emailForm)), __LINE__);
        }
        $this->emailForm = $emailForm;
        return $this;
    }
    /**
     * Get newSolutionFromMsg value
     * @return string|null
     */
    public function getNewSolutionFromMsg()
    {
        return $this->newSolutionFromMsg;
    }
    /**
     * Set newSolutionFromMsg value
     * @param string $newSolutionFromMsg
     * @return \StructType\SupportCase
     */
    public function setNewSolutionFromMsg($newSolutionFromMsg = null)
    {
        // validation for constraint: string
        if (!is_null($newSolutionFromMsg) && !is_string($newSolutionFromMsg)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($newSolutionFromMsg, true), gettype($newSolutionFromMsg)), __LINE__);
        }
        $this->newSolutionFromMsg = $newSolutionFromMsg;
        return $this;
    }
    /**
     * Get internalOnly value
     * @return bool|null
     */
    public function getInternalOnly()
    {
        return $this->internalOnly;
    }
    /**
     * Set internalOnly value
     * @param bool $internalOnly
     * @return \StructType\SupportCase
     */
    public function setInternalOnly($internalOnly = null)
    {
        // validation for constraint: boolean
        if (!is_null($internalOnly) && !is_bool($internalOnly)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($internalOnly, true), gettype($internalOnly)), __LINE__);
        }
        $this->internalOnly = $internalOnly;
        return $this;
    }
    /**
     * Get customForm value
     * @return \StructType\RecordRef|null
     */
    public function getCustomForm()
    {
        return $this->customForm;
    }
    /**
     * Set customForm value
     * @param \StructType\RecordRef $customForm
     * @return \StructType\SupportCase
     */
    public function setCustomForm(\StructType\RecordRef $customForm = null)
    {
        $this->customForm = $customForm;
        return $this;
    }
    /**
     * Get title value
     * @return string|null
     */
    public function getTitle()
    {
        return $this->title;
    }
    /**
     * Set title value
     * @param string $title
     * @return \StructType\SupportCase
     */
    public function setTitle($title = null)
    {
        // validation for constraint: string
        if (!is_null($title) && !is_string($title)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($title, true), gettype($title)), __LINE__);
        }
        $this->title = $title;
        return $this;
    }
    /**
     * Get caseNumber value
     * @return string|null
     */
    public function getCaseNumber()
    {
        return $this->caseNumber;
    }
    /**
     * Set caseNumber value
     * @param string $caseNumber
     * @return \StructType\SupportCase
     */
    public function setCaseNumber($caseNumber = null)
    {
        // validation for constraint: string
        if (!is_null($caseNumber) && !is_string($caseNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($caseNumber, true), gettype($caseNumber)), __LINE__);
        }
        $this->caseNumber = $caseNumber;
        return $this;
    }
    /**
     * Get startDate value
     * @return string|null
     */
    public function getStartDate()
    {
        return $this->startDate;
    }
    /**
     * Set startDate value
     * @param string $startDate
     * @return \StructType\SupportCase
     */
    public function setStartDate($startDate = null)
    {
        // validation for constraint: string
        if (!is_null($startDate) && !is_string($startDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($startDate, true), gettype($startDate)), __LINE__);
        }
        $this->startDate = $startDate;
        return $this;
    }
    /**
     * Get createdDate value
     * @return string|null
     */
    public function getCreatedDate()
    {
        return $this->createdDate;
    }
    /**
     * Set createdDate value
     * @param string $createdDate
     * @return \StructType\SupportCase
     */
    public function setCreatedDate($createdDate = null)
    {
        // validation for constraint: string
        if (!is_null($createdDate) && !is_string($createdDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($createdDate, true), gettype($createdDate)), __LINE__);
        }
        $this->createdDate = $createdDate;
        return $this;
    }
    /**
     * Get lastModifiedDate value
     * @return string|null
     */
    public function getLastModifiedDate()
    {
        return $this->lastModifiedDate;
    }
    /**
     * Set lastModifiedDate value
     * @param string $lastModifiedDate
     * @return \StructType\SupportCase
     */
    public function setLastModifiedDate($lastModifiedDate = null)
    {
        // validation for constraint: string
        if (!is_null($lastModifiedDate) && !is_string($lastModifiedDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastModifiedDate, true), gettype($lastModifiedDate)), __LINE__);
        }
        $this->lastModifiedDate = $lastModifiedDate;
        return $this;
    }
    /**
     * Get lastMessageDate value
     * @return string|null
     */
    public function getLastMessageDate()
    {
        return $this->lastMessageDate;
    }
    /**
     * Set lastMessageDate value
     * @param string $lastMessageDate
     * @return \StructType\SupportCase
     */
    public function setLastMessageDate($lastMessageDate = null)
    {
        // validation for constraint: string
        if (!is_null($lastMessageDate) && !is_string($lastMessageDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastMessageDate, true), gettype($lastMessageDate)), __LINE__);
        }
        $this->lastMessageDate = $lastMessageDate;
        return $this;
    }
    /**
     * Get company value
     * @return \StructType\RecordRef|null
     */
    public function getCompany()
    {
        return $this->company;
    }
    /**
     * Set company value
     * @param \StructType\RecordRef $company
     * @return \StructType\SupportCase
     */
    public function setCompany(\StructType\RecordRef $company = null)
    {
        $this->company = $company;
        return $this;
    }
    /**
     * Get profile value
     * @return \StructType\RecordRef|null
     */
    public function getProfile()
    {
        return $this->profile;
    }
    /**
     * Set profile value
     * @param \StructType\RecordRef $profile
     * @return \StructType\SupportCase
     */
    public function setProfile(\StructType\RecordRef $profile = null)
    {
        $this->profile = $profile;
        return $this;
    }
    /**
     * Get subsidiary value
     * @return \StructType\RecordRef|null
     */
    public function getSubsidiary()
    {
        return $this->subsidiary;
    }
    /**
     * Set subsidiary value
     * @param \StructType\RecordRef $subsidiary
     * @return \StructType\SupportCase
     */
    public function setSubsidiary(\StructType\RecordRef $subsidiary = null)
    {
        $this->subsidiary = $subsidiary;
        return $this;
    }
    /**
     * Get contact value
     * @return \StructType\RecordRef|null
     */
    public function getContact()
    {
        return $this->contact;
    }
    /**
     * Set contact value
     * @param \StructType\RecordRef $contact
     * @return \StructType\SupportCase
     */
    public function setContact(\StructType\RecordRef $contact = null)
    {
        $this->contact = $contact;
        return $this;
    }
    /**
     * Get email value
     * @return string|null
     */
    public function getEmail()
    {
        return $this->email;
    }
    /**
     * Set email value
     * @param string $email
     * @return \StructType\SupportCase
     */
    public function setEmail($email = null)
    {
        // validation for constraint: string
        if (!is_null($email) && !is_string($email)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($email, true), gettype($email)), __LINE__);
        }
        $this->email = $email;
        return $this;
    }
    /**
     * Get phone value
     * @return string|null
     */
    public function getPhone()
    {
        return $this->phone;
    }
    /**
     * Set phone value
     * @param string $phone
     * @return \StructType\SupportCase
     */
    public function setPhone($phone = null)
    {
        // validation for constraint: string
        if (!is_null($phone) && !is_string($phone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($phone, true), gettype($phone)), __LINE__);
        }
        $this->phone = $phone;
        return $this;
    }
    /**
     * Get product value
     * @return \StructType\RecordRef|null
     */
    public function getProduct()
    {
        return $this->product;
    }
    /**
     * Set product value
     * @param \StructType\RecordRef $product
     * @return \StructType\SupportCase
     */
    public function setProduct(\StructType\RecordRef $product = null)
    {
        $this->product = $product;
        return $this;
    }
    /**
     * Get module value
     * @return \StructType\RecordRef|null
     */
    public function getModule()
    {
        return $this->module;
    }
    /**
     * Set module value
     * @param \StructType\RecordRef $module
     * @return \StructType\SupportCase
     */
    public function setModule(\StructType\RecordRef $module = null)
    {
        $this->module = $module;
        return $this;
    }
    /**
     * Get item value
     * @return \StructType\RecordRef|null
     */
    public function getItem()
    {
        return $this->item;
    }
    /**
     * Set item value
     * @param \StructType\RecordRef $item
     * @return \StructType\SupportCase
     */
    public function setItem(\StructType\RecordRef $item = null)
    {
        $this->item = $item;
        return $this;
    }
    /**
     * Get serialNumber value
     * @return \StructType\RecordRef|null
     */
    public function getSerialNumber()
    {
        return $this->serialNumber;
    }
    /**
     * Set serialNumber value
     * @param \StructType\RecordRef $serialNumber
     * @return \StructType\SupportCase
     */
    public function setSerialNumber(\StructType\RecordRef $serialNumber = null)
    {
        $this->serialNumber = $serialNumber;
        return $this;
    }
    /**
     * Get inboundEmail value
     * @return string|null
     */
    public function getInboundEmail()
    {
        return $this->inboundEmail;
    }
    /**
     * Set inboundEmail value
     * @param string $inboundEmail
     * @return \StructType\SupportCase
     */
    public function setInboundEmail($inboundEmail = null)
    {
        // validation for constraint: string
        if (!is_null($inboundEmail) && !is_string($inboundEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($inboundEmail, true), gettype($inboundEmail)), __LINE__);
        }
        $this->inboundEmail = $inboundEmail;
        return $this;
    }
    /**
     * Get issue value
     * @return \StructType\RecordRef|null
     */
    public function getIssue()
    {
        return $this->issue;
    }
    /**
     * Set issue value
     * @param \StructType\RecordRef $issue
     * @return \StructType\SupportCase
     */
    public function setIssue(\StructType\RecordRef $issue = null)
    {
        $this->issue = $issue;
        return $this;
    }
    /**
     * Get status value
     * @return \StructType\RecordRef|null
     */
    public function getStatus()
    {
        return $this->status;
    }
    /**
     * Set status value
     * @param \StructType\RecordRef $status
     * @return \StructType\SupportCase
     */
    public function setStatus(\StructType\RecordRef $status = null)
    {
        $this->status = $status;
        return $this;
    }
    /**
     * Get isInactive value
     * @return bool|null
     */
    public function getIsInactive()
    {
        return $this->isInactive;
    }
    /**
     * Set isInactive value
     * @param bool $isInactive
     * @return \StructType\SupportCase
     */
    public function setIsInactive($isInactive = null)
    {
        // validation for constraint: boolean
        if (!is_null($isInactive) && !is_bool($isInactive)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isInactive, true), gettype($isInactive)), __LINE__);
        }
        $this->isInactive = $isInactive;
        return $this;
    }
    /**
     * Get priority value
     * @return \StructType\RecordRef|null
     */
    public function getPriority()
    {
        return $this->priority;
    }
    /**
     * Set priority value
     * @param \StructType\RecordRef $priority
     * @return \StructType\SupportCase
     */
    public function setPriority(\StructType\RecordRef $priority = null)
    {
        $this->priority = $priority;
        return $this;
    }
    /**
     * Get origin value
     * @return \StructType\RecordRef|null
     */
    public function getOrigin()
    {
        return $this->origin;
    }
    /**
     * Set origin value
     * @param \StructType\RecordRef $origin
     * @return \StructType\SupportCase
     */
    public function setOrigin(\StructType\RecordRef $origin = null)
    {
        $this->origin = $origin;
        return $this;
    }
    /**
     * Get category value
     * @return \StructType\RecordRef|null
     */
    public function getCategory()
    {
        return $this->category;
    }
    /**
     * Set category value
     * @param \StructType\RecordRef $category
     * @return \StructType\SupportCase
     */
    public function setCategory(\StructType\RecordRef $category = null)
    {
        $this->category = $category;
        return $this;
    }
    /**
     * Get assigned value
     * @return \StructType\RecordRef|null
     */
    public function getAssigned()
    {
        return $this->assigned;
    }
    /**
     * Set assigned value
     * @param \StructType\RecordRef $assigned
     * @return \StructType\SupportCase
     */
    public function setAssigned(\StructType\RecordRef $assigned = null)
    {
        $this->assigned = $assigned;
        return $this;
    }
    /**
     * Get helpDesk value
     * @return bool|null
     */
    public function getHelpDesk()
    {
        return $this->helpDesk;
    }
    /**
     * Set helpDesk value
     * @param bool $helpDesk
     * @return \StructType\SupportCase
     */
    public function setHelpDesk($helpDesk = null)
    {
        // validation for constraint: boolean
        if (!is_null($helpDesk) && !is_bool($helpDesk)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($helpDesk, true), gettype($helpDesk)), __LINE__);
        }
        $this->helpDesk = $helpDesk;
        return $this;
    }
    /**
     * Get emailEmployeesList value
     * @return \StructType\EmailEmployeesList|null
     */
    public function getEmailEmployeesList()
    {
        return $this->emailEmployeesList;
    }
    /**
     * Set emailEmployeesList value
     * @param \StructType\EmailEmployeesList $emailEmployeesList
     * @return \StructType\SupportCase
     */
    public function setEmailEmployeesList(\StructType\EmailEmployeesList $emailEmployeesList = null)
    {
        $this->emailEmployeesList = $emailEmployeesList;
        return $this;
    }
    /**
     * Get escalateToList value
     * @return \StructType\SupportCaseEscalateToList|null
     */
    public function getEscalateToList()
    {
        return $this->escalateToList;
    }
    /**
     * Set escalateToList value
     * @param \StructType\SupportCaseEscalateToList $escalateToList
     * @return \StructType\SupportCase
     */
    public function setEscalateToList(\StructType\SupportCaseEscalateToList $escalateToList = null)
    {
        $this->escalateToList = $escalateToList;
        return $this;
    }
    /**
     * Get timeItemList value
     * @return \StructType\SupportCaseTimeItemList|null
     */
    public function getTimeItemList()
    {
        return $this->timeItemList;
    }
    /**
     * Set timeItemList value
     * @param \StructType\SupportCaseTimeItemList $timeItemList
     * @return \StructType\SupportCase
     */
    public function setTimeItemList(\StructType\SupportCaseTimeItemList $timeItemList = null)
    {
        $this->timeItemList = $timeItemList;
        return $this;
    }
    /**
     * Get solutionsList value
     * @return \StructType\SupportCaseSolutionsList|null
     */
    public function getSolutionsList()
    {
        return $this->solutionsList;
    }
    /**
     * Set solutionsList value
     * @param \StructType\SupportCaseSolutionsList $solutionsList
     * @return \StructType\SupportCase
     */
    public function setSolutionsList(\StructType\SupportCaseSolutionsList $solutionsList = null)
    {
        $this->solutionsList = $solutionsList;
        return $this;
    }
    /**
     * Get customFieldList value
     * @return \StructType\CustomFieldList|null
     */
    public function getCustomFieldList()
    {
        return $this->customFieldList;
    }
    /**
     * Set customFieldList value
     * @param \StructType\CustomFieldList $customFieldList
     * @return \StructType\SupportCase
     */
    public function setCustomFieldList(\StructType\CustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
    /**
     * Get internalId value
     * @return string|null
     */
    public function getInternalId()
    {
        return $this->internalId;
    }
    /**
     * Set internalId value
     * @param string $internalId
     * @return \StructType\SupportCase
     */
    public function setInternalId($internalId = null)
    {
        // validation for constraint: string
        if (!is_null($internalId) && !is_string($internalId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($internalId, true), gettype($internalId)), __LINE__);
        }
        $this->internalId = $internalId;
        return $this;
    }
    /**
     * Get externalId value
     * @return string|null
     */
    public function getExternalId()
    {
        return $this->externalId;
    }
    /**
     * Set externalId value
     * @param string $externalId
     * @return \StructType\SupportCase
     */
    public function setExternalId($externalId = null)
    {
        // validation for constraint: string
        if (!is_null($externalId) && !is_string($externalId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($externalId, true), gettype($externalId)), __LINE__);
        }
        $this->externalId = $externalId;
        return $this;
    }
}
