<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CalendarEvent StructType
 * Meta information extracted from the WSDL
 * - type: actSched:CalendarEvent
 * @subpackage Structs
 */
class CalendarEvent extends Record
{
    /**
     * The company
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $company;
    /**
     * The contact
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $contact;
    /**
     * The supportCase
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $supportCase;
    /**
     * The transaction
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $transaction;
    /**
     * The period
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $period;
    /**
     * The frequency
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $frequency;
    /**
     * The recurrenceDowMaskList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecurrenceDowMaskList
     */
    public $recurrenceDowMaskList;
    /**
     * The recurrenceDow
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $recurrenceDow;
    /**
     * The recurrenceDowim
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $recurrenceDowim;
    /**
     * The seriesStartDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $seriesStartDate;
    /**
     * The endByDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $endByDate;
    /**
     * The noEndDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $noEndDate;
    /**
     * The sendEmail
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $sendEmail;
    /**
     * 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 recurrence
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $recurrence;
    /**
     * The location
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $location;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $startDate;
    /**
     * The allDayEvent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $allDayEvent;
    /**
     * The timedEvent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $timedEvent;
    /**
     * The reminderType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $reminderType;
    /**
     * The reminderMinutes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $reminderMinutes;
    /**
     * The status
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $status;
    /**
     * The accessLevel
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $accessLevel;
    /**
     * The organizer
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $organizer;
    /**
     * The message
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $message;
    /**
     * The createdDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $createdDate;
    /**
     * The endDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $endDate;
    /**
     * The exclusionDateList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ExclusionDateList
     */
    public $exclusionDateList;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastModifiedDate;
    /**
     * The owner
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $owner;
    /**
     * The attendeeList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CalendarEventAttendeeList
     */
    public $attendeeList;
    /**
     * The resourceList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CalendarEventResourceList
     */
    public $resourceList;
    /**
     * The timeItemList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CalendarEventTimeItemList
     */
    public $timeItemList;
    /**
     * 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 CalendarEvent
     * @uses CalendarEvent::setCompany()
     * @uses CalendarEvent::setContact()
     * @uses CalendarEvent::setSupportCase()
     * @uses CalendarEvent::setTransaction()
     * @uses CalendarEvent::setPeriod()
     * @uses CalendarEvent::setFrequency()
     * @uses CalendarEvent::setRecurrenceDowMaskList()
     * @uses CalendarEvent::setRecurrenceDow()
     * @uses CalendarEvent::setRecurrenceDowim()
     * @uses CalendarEvent::setSeriesStartDate()
     * @uses CalendarEvent::setEndByDate()
     * @uses CalendarEvent::setNoEndDate()
     * @uses CalendarEvent::setSendEmail()
     * @uses CalendarEvent::setCustomForm()
     * @uses CalendarEvent::setTitle()
     * @uses CalendarEvent::setRecurrence()
     * @uses CalendarEvent::setLocation()
     * @uses CalendarEvent::setStartDate()
     * @uses CalendarEvent::setAllDayEvent()
     * @uses CalendarEvent::setTimedEvent()
     * @uses CalendarEvent::setReminderType()
     * @uses CalendarEvent::setReminderMinutes()
     * @uses CalendarEvent::setStatus()
     * @uses CalendarEvent::setAccessLevel()
     * @uses CalendarEvent::setOrganizer()
     * @uses CalendarEvent::setMessage()
     * @uses CalendarEvent::setCreatedDate()
     * @uses CalendarEvent::setEndDate()
     * @uses CalendarEvent::setExclusionDateList()
     * @uses CalendarEvent::setLastModifiedDate()
     * @uses CalendarEvent::setOwner()
     * @uses CalendarEvent::setAttendeeList()
     * @uses CalendarEvent::setResourceList()
     * @uses CalendarEvent::setTimeItemList()
     * @uses CalendarEvent::setCustomFieldList()
     * @uses CalendarEvent::setInternalId()
     * @uses CalendarEvent::setExternalId()
     * @param \StructType\RecordRef $company
     * @param \StructType\RecordRef $contact
     * @param \StructType\RecordRef $supportCase
     * @param \StructType\RecordRef $transaction
     * @param int $period
     * @param string $frequency
     * @param \StructType\RecurrenceDowMaskList $recurrenceDowMaskList
     * @param string $recurrenceDow
     * @param string $recurrenceDowim
     * @param string $seriesStartDate
     * @param string $endByDate
     * @param bool $noEndDate
     * @param bool $sendEmail
     * @param \StructType\RecordRef $customForm
     * @param string $title
     * @param string $recurrence
     * @param string $location
     * @param string $startDate
     * @param bool $allDayEvent
     * @param bool $timedEvent
     * @param string $reminderType
     * @param string $reminderMinutes
     * @param string $status
     * @param string $accessLevel
     * @param \StructType\RecordRef $organizer
     * @param string $message
     * @param string $createdDate
     * @param string $endDate
     * @param \StructType\ExclusionDateList $exclusionDateList
     * @param string $lastModifiedDate
     * @param \StructType\RecordRef $owner
     * @param \StructType\CalendarEventAttendeeList $attendeeList
     * @param \StructType\CalendarEventResourceList $resourceList
     * @param \StructType\CalendarEventTimeItemList $timeItemList
     * @param \StructType\CustomFieldList $customFieldList
     * @param string $internalId
     * @param string $externalId
     */
    public function __construct(\StructType\RecordRef $company = null, \StructType\RecordRef $contact = null, \StructType\RecordRef $supportCase = null, \StructType\RecordRef $transaction = null, $period = null, $frequency = null, \StructType\RecurrenceDowMaskList $recurrenceDowMaskList = null, $recurrenceDow = null, $recurrenceDowim = null, $seriesStartDate = null, $endByDate = null, $noEndDate = null, $sendEmail = null, \StructType\RecordRef $customForm = null, $title = null, $recurrence = null, $location = null, $startDate = null, $allDayEvent = null, $timedEvent = null, $reminderType = null, $reminderMinutes = null, $status = null, $accessLevel = null, \StructType\RecordRef $organizer = null, $message = null, $createdDate = null, $endDate = null, \StructType\ExclusionDateList $exclusionDateList = null, $lastModifiedDate = null, \StructType\RecordRef $owner = null, \StructType\CalendarEventAttendeeList $attendeeList = null, \StructType\CalendarEventResourceList $resourceList = null, \StructType\CalendarEventTimeItemList $timeItemList = null, \StructType\CustomFieldList $customFieldList = null, $internalId = null, $externalId = null)
    {
        $this
            ->setCompany($company)
            ->setContact($contact)
            ->setSupportCase($supportCase)
            ->setTransaction($transaction)
            ->setPeriod($period)
            ->setFrequency($frequency)
            ->setRecurrenceDowMaskList($recurrenceDowMaskList)
            ->setRecurrenceDow($recurrenceDow)
            ->setRecurrenceDowim($recurrenceDowim)
            ->setSeriesStartDate($seriesStartDate)
            ->setEndByDate($endByDate)
            ->setNoEndDate($noEndDate)
            ->setSendEmail($sendEmail)
            ->setCustomForm($customForm)
            ->setTitle($title)
            ->setRecurrence($recurrence)
            ->setLocation($location)
            ->setStartDate($startDate)
            ->setAllDayEvent($allDayEvent)
            ->setTimedEvent($timedEvent)
            ->setReminderType($reminderType)
            ->setReminderMinutes($reminderMinutes)
            ->setStatus($status)
            ->setAccessLevel($accessLevel)
            ->setOrganizer($organizer)
            ->setMessage($message)
            ->setCreatedDate($createdDate)
            ->setEndDate($endDate)
            ->setExclusionDateList($exclusionDateList)
            ->setLastModifiedDate($lastModifiedDate)
            ->setOwner($owner)
            ->setAttendeeList($attendeeList)
            ->setResourceList($resourceList)
            ->setTimeItemList($timeItemList)
            ->setCustomFieldList($customFieldList)
            ->setInternalId($internalId)
            ->setExternalId($externalId);
    }
    /**
     * Get company value
     * @return \StructType\RecordRef|null
     */
    public function getCompany()
    {
        return $this->company;
    }
    /**
     * Set company value
     * @param \StructType\RecordRef $company
     * @return \StructType\CalendarEvent
     */
    public function setCompany(\StructType\RecordRef $company = null)
    {
        $this->company = $company;
        return $this;
    }
    /**
     * Get contact value
     * @return \StructType\RecordRef|null
     */
    public function getContact()
    {
        return $this->contact;
    }
    /**
     * Set contact value
     * @param \StructType\RecordRef $contact
     * @return \StructType\CalendarEvent
     */
    public function setContact(\StructType\RecordRef $contact = null)
    {
        $this->contact = $contact;
        return $this;
    }
    /**
     * Get supportCase value
     * @return \StructType\RecordRef|null
     */
    public function getSupportCase()
    {
        return $this->supportCase;
    }
    /**
     * Set supportCase value
     * @param \StructType\RecordRef $supportCase
     * @return \StructType\CalendarEvent
     */
    public function setSupportCase(\StructType\RecordRef $supportCase = null)
    {
        $this->supportCase = $supportCase;
        return $this;
    }
    /**
     * Get transaction value
     * @return \StructType\RecordRef|null
     */
    public function getTransaction()
    {
        return $this->transaction;
    }
    /**
     * Set transaction value
     * @param \StructType\RecordRef $transaction
     * @return \StructType\CalendarEvent
     */
    public function setTransaction(\StructType\RecordRef $transaction = null)
    {
        $this->transaction = $transaction;
        return $this;
    }
    /**
     * Get period value
     * @return int|null
     */
    public function getPeriod()
    {
        return $this->period;
    }
    /**
     * Set period value
     * @param int $period
     * @return \StructType\CalendarEvent
     */
    public function setPeriod($period = null)
    {
        // validation for constraint: int
        if (!is_null($period) && !(is_int($period) || ctype_digit($period))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($period, true), gettype($period)), __LINE__);
        }
        $this->period = $period;
        return $this;
    }
    /**
     * Get frequency value
     * @return string|null
     */
    public function getFrequency()
    {
        return $this->frequency;
    }
    /**
     * Set frequency value
     * @uses \EnumType\RecurrenceFrequency::valueIsValid()
     * @uses \EnumType\RecurrenceFrequency::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $frequency
     * @return \StructType\CalendarEvent
     */
    public function setFrequency($frequency = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\RecurrenceFrequency::valueIsValid($frequency)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\RecurrenceFrequency', is_array($frequency) ? implode(', ', $frequency) : var_export($frequency, true), implode(', ', \EnumType\RecurrenceFrequency::getValidValues())), __LINE__);
        }
        $this->frequency = $frequency;
        return $this;
    }
    /**
     * Get recurrenceDowMaskList value
     * @return \StructType\RecurrenceDowMaskList|null
     */
    public function getRecurrenceDowMaskList()
    {
        return $this->recurrenceDowMaskList;
    }
    /**
     * Set recurrenceDowMaskList value
     * @param \StructType\RecurrenceDowMaskList $recurrenceDowMaskList
     * @return \StructType\CalendarEvent
     */
    public function setRecurrenceDowMaskList(\StructType\RecurrenceDowMaskList $recurrenceDowMaskList = null)
    {
        $this->recurrenceDowMaskList = $recurrenceDowMaskList;
        return $this;
    }
    /**
     * Get recurrenceDow value
     * @return string|null
     */
    public function getRecurrenceDow()
    {
        return $this->recurrenceDow;
    }
    /**
     * Set recurrenceDow value
     * @uses \EnumType\RecurrenceDow::valueIsValid()
     * @uses \EnumType\RecurrenceDow::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $recurrenceDow
     * @return \StructType\CalendarEvent
     */
    public function setRecurrenceDow($recurrenceDow = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\RecurrenceDow::valueIsValid($recurrenceDow)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\RecurrenceDow', is_array($recurrenceDow) ? implode(', ', $recurrenceDow) : var_export($recurrenceDow, true), implode(', ', \EnumType\RecurrenceDow::getValidValues())), __LINE__);
        }
        $this->recurrenceDow = $recurrenceDow;
        return $this;
    }
    /**
     * Get recurrenceDowim value
     * @return string|null
     */
    public function getRecurrenceDowim()
    {
        return $this->recurrenceDowim;
    }
    /**
     * Set recurrenceDowim value
     * @uses \EnumType\RecurrenceDowim::valueIsValid()
     * @uses \EnumType\RecurrenceDowim::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $recurrenceDowim
     * @return \StructType\CalendarEvent
     */
    public function setRecurrenceDowim($recurrenceDowim = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\RecurrenceDowim::valueIsValid($recurrenceDowim)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\RecurrenceDowim', is_array($recurrenceDowim) ? implode(', ', $recurrenceDowim) : var_export($recurrenceDowim, true), implode(', ', \EnumType\RecurrenceDowim::getValidValues())), __LINE__);
        }
        $this->recurrenceDowim = $recurrenceDowim;
        return $this;
    }
    /**
     * Get seriesStartDate value
     * @return string|null
     */
    public function getSeriesStartDate()
    {
        return $this->seriesStartDate;
    }
    /**
     * Set seriesStartDate value
     * @param string $seriesStartDate
     * @return \StructType\CalendarEvent
     */
    public function setSeriesStartDate($seriesStartDate = null)
    {
        // validation for constraint: string
        if (!is_null($seriesStartDate) && !is_string($seriesStartDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($seriesStartDate, true), gettype($seriesStartDate)), __LINE__);
        }
        $this->seriesStartDate = $seriesStartDate;
        return $this;
    }
    /**
     * Get endByDate value
     * @return string|null
     */
    public function getEndByDate()
    {
        return $this->endByDate;
    }
    /**
     * Set endByDate value
     * @param string $endByDate
     * @return \StructType\CalendarEvent
     */
    public function setEndByDate($endByDate = null)
    {
        // validation for constraint: string
        if (!is_null($endByDate) && !is_string($endByDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($endByDate, true), gettype($endByDate)), __LINE__);
        }
        $this->endByDate = $endByDate;
        return $this;
    }
    /**
     * Get noEndDate value
     * @return bool|null
     */
    public function getNoEndDate()
    {
        return $this->noEndDate;
    }
    /**
     * Set noEndDate value
     * @param bool $noEndDate
     * @return \StructType\CalendarEvent
     */
    public function setNoEndDate($noEndDate = null)
    {
        // validation for constraint: boolean
        if (!is_null($noEndDate) && !is_bool($noEndDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($noEndDate, true), gettype($noEndDate)), __LINE__);
        }
        $this->noEndDate = $noEndDate;
        return $this;
    }
    /**
     * Get sendEmail value
     * @return bool|null
     */
    public function getSendEmail()
    {
        return $this->sendEmail;
    }
    /**
     * Set sendEmail value
     * @param bool $sendEmail
     * @return \StructType\CalendarEvent
     */
    public function setSendEmail($sendEmail = null)
    {
        // validation for constraint: boolean
        if (!is_null($sendEmail) && !is_bool($sendEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($sendEmail, true), gettype($sendEmail)), __LINE__);
        }
        $this->sendEmail = $sendEmail;
        return $this;
    }
    /**
     * Get customForm value
     * @return \StructType\RecordRef|null
     */
    public function getCustomForm()
    {
        return $this->customForm;
    }
    /**
     * Set customForm value
     * @param \StructType\RecordRef $customForm
     * @return \StructType\CalendarEvent
     */
    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\CalendarEvent
     */
    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 recurrence value
     * @return string|null
     */
    public function getRecurrence()
    {
        return $this->recurrence;
    }
    /**
     * Set recurrence value
     * @param string $recurrence
     * @return \StructType\CalendarEvent
     */
    public function setRecurrence($recurrence = null)
    {
        // validation for constraint: string
        if (!is_null($recurrence) && !is_string($recurrence)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($recurrence, true), gettype($recurrence)), __LINE__);
        }
        $this->recurrence = $recurrence;
        return $this;
    }
    /**
     * Get location value
     * @return string|null
     */
    public function getLocation()
    {
        return $this->location;
    }
    /**
     * Set location value
     * @param string $location
     * @return \StructType\CalendarEvent
     */
    public function setLocation($location = null)
    {
        // validation for constraint: string
        if (!is_null($location) && !is_string($location)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($location, true), gettype($location)), __LINE__);
        }
        $this->location = $location;
        return $this;
    }
    /**
     * Get startDate value
     * @return string|null
     */
    public function getStartDate()
    {
        return $this->startDate;
    }
    /**
     * Set startDate value
     * @param string $startDate
     * @return \StructType\CalendarEvent
     */
    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 allDayEvent value
     * @return bool|null
     */
    public function getAllDayEvent()
    {
        return $this->allDayEvent;
    }
    /**
     * Set allDayEvent value
     * @param bool $allDayEvent
     * @return \StructType\CalendarEvent
     */
    public function setAllDayEvent($allDayEvent = null)
    {
        // validation for constraint: boolean
        if (!is_null($allDayEvent) && !is_bool($allDayEvent)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($allDayEvent, true), gettype($allDayEvent)), __LINE__);
        }
        $this->allDayEvent = $allDayEvent;
        return $this;
    }
    /**
     * Get timedEvent value
     * @return bool|null
     */
    public function getTimedEvent()
    {
        return $this->timedEvent;
    }
    /**
     * Set timedEvent value
     * @param bool $timedEvent
     * @return \StructType\CalendarEvent
     */
    public function setTimedEvent($timedEvent = null)
    {
        // validation for constraint: boolean
        if (!is_null($timedEvent) && !is_bool($timedEvent)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($timedEvent, true), gettype($timedEvent)), __LINE__);
        }
        $this->timedEvent = $timedEvent;
        return $this;
    }
    /**
     * Get reminderType value
     * @return string|null
     */
    public function getReminderType()
    {
        return $this->reminderType;
    }
    /**
     * Set reminderType value
     * @uses \EnumType\CalendarEventReminderType::valueIsValid()
     * @uses \EnumType\CalendarEventReminderType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $reminderType
     * @return \StructType\CalendarEvent
     */
    public function setReminderType($reminderType = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\CalendarEventReminderType::valueIsValid($reminderType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\CalendarEventReminderType', is_array($reminderType) ? implode(', ', $reminderType) : var_export($reminderType, true), implode(', ', \EnumType\CalendarEventReminderType::getValidValues())), __LINE__);
        }
        $this->reminderType = $reminderType;
        return $this;
    }
    /**
     * Get reminderMinutes value
     * @return string|null
     */
    public function getReminderMinutes()
    {
        return $this->reminderMinutes;
    }
    /**
     * Set reminderMinutes value
     * @uses \EnumType\CalendarEventReminderMinutes::valueIsValid()
     * @uses \EnumType\CalendarEventReminderMinutes::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $reminderMinutes
     * @return \StructType\CalendarEvent
     */
    public function setReminderMinutes($reminderMinutes = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\CalendarEventReminderMinutes::valueIsValid($reminderMinutes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\CalendarEventReminderMinutes', is_array($reminderMinutes) ? implode(', ', $reminderMinutes) : var_export($reminderMinutes, true), implode(', ', \EnumType\CalendarEventReminderMinutes::getValidValues())), __LINE__);
        }
        $this->reminderMinutes = $reminderMinutes;
        return $this;
    }
    /**
     * Get status value
     * @return string|null
     */
    public function getStatus()
    {
        return $this->status;
    }
    /**
     * Set status value
     * @uses \EnumType\CalendarEventStatus::valueIsValid()
     * @uses \EnumType\CalendarEventStatus::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $status
     * @return \StructType\CalendarEvent
     */
    public function setStatus($status = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\CalendarEventStatus::valueIsValid($status)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\CalendarEventStatus', is_array($status) ? implode(', ', $status) : var_export($status, true), implode(', ', \EnumType\CalendarEventStatus::getValidValues())), __LINE__);
        }
        $this->status = $status;
        return $this;
    }
    /**
     * Get accessLevel value
     * @return string|null
     */
    public function getAccessLevel()
    {
        return $this->accessLevel;
    }
    /**
     * Set accessLevel value
     * @uses \EnumType\CalendarEventAccessLevel::valueIsValid()
     * @uses \EnumType\CalendarEventAccessLevel::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $accessLevel
     * @return \StructType\CalendarEvent
     */
    public function setAccessLevel($accessLevel = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\CalendarEventAccessLevel::valueIsValid($accessLevel)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\CalendarEventAccessLevel', is_array($accessLevel) ? implode(', ', $accessLevel) : var_export($accessLevel, true), implode(', ', \EnumType\CalendarEventAccessLevel::getValidValues())), __LINE__);
        }
        $this->accessLevel = $accessLevel;
        return $this;
    }
    /**
     * Get organizer value
     * @return \StructType\RecordRef|null
     */
    public function getOrganizer()
    {
        return $this->organizer;
    }
    /**
     * Set organizer value
     * @param \StructType\RecordRef $organizer
     * @return \StructType\CalendarEvent
     */
    public function setOrganizer(\StructType\RecordRef $organizer = null)
    {
        $this->organizer = $organizer;
        return $this;
    }
    /**
     * Get message value
     * @return string|null
     */
    public function getMessage()
    {
        return $this->message;
    }
    /**
     * Set message value
     * @param string $message
     * @return \StructType\CalendarEvent
     */
    public function setMessage($message = null)
    {
        // validation for constraint: string
        if (!is_null($message) && !is_string($message)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($message, true), gettype($message)), __LINE__);
        }
        $this->message = $message;
        return $this;
    }
    /**
     * Get createdDate value
     * @return string|null
     */
    public function getCreatedDate()
    {
        return $this->createdDate;
    }
    /**
     * Set createdDate value
     * @param string $createdDate
     * @return \StructType\CalendarEvent
     */
    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 endDate value
     * @return string|null
     */
    public function getEndDate()
    {
        return $this->endDate;
    }
    /**
     * Set endDate value
     * @param string $endDate
     * @return \StructType\CalendarEvent
     */
    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 exclusionDateList value
     * @return \StructType\ExclusionDateList|null
     */
    public function getExclusionDateList()
    {
        return $this->exclusionDateList;
    }
    /**
     * Set exclusionDateList value
     * @param \StructType\ExclusionDateList $exclusionDateList
     * @return \StructType\CalendarEvent
     */
    public function setExclusionDateList(\StructType\ExclusionDateList $exclusionDateList = null)
    {
        $this->exclusionDateList = $exclusionDateList;
        return $this;
    }
    /**
     * Get lastModifiedDate value
     * @return string|null
     */
    public function getLastModifiedDate()
    {
        return $this->lastModifiedDate;
    }
    /**
     * Set lastModifiedDate value
     * @param string $lastModifiedDate
     * @return \StructType\CalendarEvent
     */
    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 owner value
     * @return \StructType\RecordRef|null
     */
    public function getOwner()
    {
        return $this->owner;
    }
    /**
     * Set owner value
     * @param \StructType\RecordRef $owner
     * @return \StructType\CalendarEvent
     */
    public function setOwner(\StructType\RecordRef $owner = null)
    {
        $this->owner = $owner;
        return $this;
    }
    /**
     * Get attendeeList value
     * @return \StructType\CalendarEventAttendeeList|null
     */
    public function getAttendeeList()
    {
        return $this->attendeeList;
    }
    /**
     * Set attendeeList value
     * @param \StructType\CalendarEventAttendeeList $attendeeList
     * @return \StructType\CalendarEvent
     */
    public function setAttendeeList(\StructType\CalendarEventAttendeeList $attendeeList = null)
    {
        $this->attendeeList = $attendeeList;
        return $this;
    }
    /**
     * Get resourceList value
     * @return \StructType\CalendarEventResourceList|null
     */
    public function getResourceList()
    {
        return $this->resourceList;
    }
    /**
     * Set resourceList value
     * @param \StructType\CalendarEventResourceList $resourceList
     * @return \StructType\CalendarEvent
     */
    public function setResourceList(\StructType\CalendarEventResourceList $resourceList = null)
    {
        $this->resourceList = $resourceList;
        return $this;
    }
    /**
     * Get timeItemList value
     * @return \StructType\CalendarEventTimeItemList|null
     */
    public function getTimeItemList()
    {
        return $this->timeItemList;
    }
    /**
     * Set timeItemList value
     * @param \StructType\CalendarEventTimeItemList $timeItemList
     * @return \StructType\CalendarEvent
     */
    public function setTimeItemList(\StructType\CalendarEventTimeItemList $timeItemList = null)
    {
        $this->timeItemList = $timeItemList;
        return $this;
    }
    /**
     * Get customFieldList value
     * @return \StructType\CustomFieldList|null
     */
    public function getCustomFieldList()
    {
        return $this->customFieldList;
    }
    /**
     * Set customFieldList value
     * @param \StructType\CustomFieldList $customFieldList
     * @return \StructType\CalendarEvent
     */
    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\CalendarEvent
     */
    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\CalendarEvent
     */
    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;
    }
}
