<?php

/**
 * Generated by phpSPO model generator 2020-05-25T05:58:15+00:00 
 */
namespace Office365\Graph;

use Office365\Runtime\ClientObject;
use Office365\Runtime\ResourcePath;
/**
 *  "A contact is an item in Outlook where you can organize and save information about the people and organizations you communicate with. Contacts are contained in contact folders."
 */
class Contact extends ClientObject
{
    /**
     * The ID of the contact's parent folder.
     * @return string
     */
    public function getParentFolderId()
    {
        if (!$this->isPropertyAvailable("ParentFolderId")) {
            return null;
        }
        return $this->getProperty("ParentFolderId");
    }
    /**
     * The ID of the contact's parent folder.
     * @var string
     */
    public function setParentFolderId($value)
    {
        $this->setProperty("ParentFolderId", $value, true);
    }
    /**
     * The name the contact is filed under.
     * @return string
     */
    public function getFileAs()
    {
        if (!$this->isPropertyAvailable("FileAs")) {
            return null;
        }
        return $this->getProperty("FileAs");
    }
    /**
     * The name the contact is filed under.
     * @var string
     */
    public function setFileAs($value)
    {
        $this->setProperty("FileAs", $value, true);
    }
    /**
     * The contact's display name. You can specify the display name in a [create](../api/user-post-contacts.md) or [update](../api/contact-update.md) operation. Note that later updates to other properties may cause an automatically generated value to overwrite the displayName value you have specified. To preserve a pre-existing value, always include it as displayName in an [update](../api/contact-update.md) operation.
     * @return string
     */
    public function getDisplayName()
    {
        if (!$this->isPropertyAvailable("DisplayName")) {
            return null;
        }
        return $this->getProperty("DisplayName");
    }
    /**
     * The contact's display name. You can specify the display name in a [create](../api/user-post-contacts.md) or [update](../api/contact-update.md) operation. Note that later updates to other properties may cause an automatically generated value to overwrite the displayName value you have specified. To preserve a pre-existing value, always include it as displayName in an [update](../api/contact-update.md) operation.
     * @var string
     */
    public function setDisplayName($value)
    {
        $this->setProperty("DisplayName", $value, true);
    }
    /**
     * The contact's given name.
     * @return string
     */
    public function getGivenName()
    {
        if (!$this->isPropertyAvailable("GivenName")) {
            return null;
        }
        return $this->getProperty("GivenName");
    }
    /**
     * The contact's given name.
     * @var string
     */
    public function setGivenName($value)
    {
        $this->setProperty("GivenName", $value, true);
    }
    /**
     * The contact's initials.
     * @return string
     */
    public function getInitials()
    {
        if (!$this->isPropertyAvailable("Initials")) {
            return null;
        }
        return $this->getProperty("Initials");
    }
    /**
     * The contact's initials.
     * @var string
     */
    public function setInitials($value)
    {
        $this->setProperty("Initials", $value, true);
    }
    /**
     * The contact's middle name.
     * @return string
     */
    public function getMiddleName()
    {
        if (!$this->isPropertyAvailable("MiddleName")) {
            return null;
        }
        return $this->getProperty("MiddleName");
    }
    /**
     * The contact's middle name.
     * @var string
     */
    public function setMiddleName($value)
    {
        $this->setProperty("MiddleName", $value, true);
    }
    /**
     * The contact's nickname.
     * @return string
     */
    public function getNickName()
    {
        if (!$this->isPropertyAvailable("NickName")) {
            return null;
        }
        return $this->getProperty("NickName");
    }
    /**
     * The contact's nickname.
     * @var string
     */
    public function setNickName($value)
    {
        $this->setProperty("NickName", $value, true);
    }
    /**
     * The contact's surname.
     * @return string
     */
    public function getSurname()
    {
        if (!$this->isPropertyAvailable("Surname")) {
            return null;
        }
        return $this->getProperty("Surname");
    }
    /**
     * The contact's surname.
     * @var string
     */
    public function setSurname($value)
    {
        $this->setProperty("Surname", $value, true);
    }
    /**
     * The contact's title.
     * @return string
     */
    public function getTitle()
    {
        if (!$this->isPropertyAvailable("Title")) {
            return null;
        }
        return $this->getProperty("Title");
    }
    /**
     * The contact's title.
     * @var string
     */
    public function setTitle($value)
    {
        $this->setProperty("Title", $value, true);
    }
    /**
     * The phonetic Japanese given name (first name) of the contact.
     * @return string
     */
    public function getYomiGivenName()
    {
        if (!$this->isPropertyAvailable("YomiGivenName")) {
            return null;
        }
        return $this->getProperty("YomiGivenName");
    }
    /**
     * The phonetic Japanese given name (first name) of the contact.
     * @var string
     */
    public function setYomiGivenName($value)
    {
        $this->setProperty("YomiGivenName", $value, true);
    }
    /**
     * The phonetic Japanese surname (last name)  of the contact.
     * @return string
     */
    public function getYomiSurname()
    {
        if (!$this->isPropertyAvailable("YomiSurname")) {
            return null;
        }
        return $this->getProperty("YomiSurname");
    }
    /**
     * The phonetic Japanese surname (last name)  of the contact.
     * @var string
     */
    public function setYomiSurname($value)
    {
        $this->setProperty("YomiSurname", $value, true);
    }
    /**
     * The phonetic Japanese company name of the contact.
     * @return string
     */
    public function getYomiCompanyName()
    {
        if (!$this->isPropertyAvailable("YomiCompanyName")) {
            return null;
        }
        return $this->getProperty("YomiCompanyName");
    }
    /**
     * The phonetic Japanese company name of the contact.
     * @var string
     */
    public function setYomiCompanyName($value)
    {
        $this->setProperty("YomiCompanyName", $value, true);
    }
    /**
     * The contact's generation.
     * @return string
     */
    public function getGeneration()
    {
        if (!$this->isPropertyAvailable("Generation")) {
            return null;
        }
        return $this->getProperty("Generation");
    }
    /**
     * The contact's generation.
     * @var string
     */
    public function setGeneration($value)
    {
        $this->setProperty("Generation", $value, true);
    }
    /**
     * The contact's instant messaging (IM) addresses.
     * @return array
     */
    public function getImAddresses()
    {
        if (!$this->isPropertyAvailable("ImAddresses")) {
            return null;
        }
        return $this->getProperty("ImAddresses");
    }
    /**
     * The contact's instant messaging (IM) addresses.
     * @var array
     */
    public function setImAddresses($value)
    {
        $this->setProperty("ImAddresses", $value, true);
    }
    /**
     * The contact’s job title.
     * @return string
     */
    public function getJobTitle()
    {
        if (!$this->isPropertyAvailable("JobTitle")) {
            return null;
        }
        return $this->getProperty("JobTitle");
    }
    /**
     * The contact’s job title.
     * @var string
     */
    public function setJobTitle($value)
    {
        $this->setProperty("JobTitle", $value, true);
    }
    /**
     * The name of the contact's company.
     * @return string
     */
    public function getCompanyName()
    {
        if (!$this->isPropertyAvailable("CompanyName")) {
            return null;
        }
        return $this->getProperty("CompanyName");
    }
    /**
     * The name of the contact's company.
     * @var string
     */
    public function setCompanyName($value)
    {
        $this->setProperty("CompanyName", $value, true);
    }
    /**
     * The contact's department.
     * @return string
     */
    public function getDepartment()
    {
        if (!$this->isPropertyAvailable("Department")) {
            return null;
        }
        return $this->getProperty("Department");
    }
    /**
     * The contact's department.
     * @var string
     */
    public function setDepartment($value)
    {
        $this->setProperty("Department", $value, true);
    }
    /**
     * The location of the contact's office.
     * @return string
     */
    public function getOfficeLocation()
    {
        if (!$this->isPropertyAvailable("OfficeLocation")) {
            return null;
        }
        return $this->getProperty("OfficeLocation");
    }
    /**
     * The location of the contact's office.
     * @var string
     */
    public function setOfficeLocation($value)
    {
        $this->setProperty("OfficeLocation", $value, true);
    }
    /**
     * The contact's profession.
     * @return string
     */
    public function getProfession()
    {
        if (!$this->isPropertyAvailable("Profession")) {
            return null;
        }
        return $this->getProperty("Profession");
    }
    /**
     * The contact's profession.
     * @var string
     */
    public function setProfession($value)
    {
        $this->setProperty("Profession", $value, true);
    }
    /**
     * The business home page of the contact.
     * @return string
     */
    public function getBusinessHomePage()
    {
        if (!$this->isPropertyAvailable("BusinessHomePage")) {
            return null;
        }
        return $this->getProperty("BusinessHomePage");
    }
    /**
     * The business home page of the contact.
     * @var string
     */
    public function setBusinessHomePage($value)
    {
        $this->setProperty("BusinessHomePage", $value, true);
    }
    /**
     * The name of the contact's assistant.
     * @return string
     */
    public function getAssistantName()
    {
        if (!$this->isPropertyAvailable("AssistantName")) {
            return null;
        }
        return $this->getProperty("AssistantName");
    }
    /**
     * The name of the contact's assistant.
     * @var string
     */
    public function setAssistantName($value)
    {
        $this->setProperty("AssistantName", $value, true);
    }
    /**
     * The name of the contact's manager.
     * @return string
     */
    public function getManager()
    {
        if (!$this->isPropertyAvailable("Manager")) {
            return null;
        }
        return $this->getProperty("Manager");
    }
    /**
     * The name of the contact's manager.
     * @var string
     */
    public function setManager($value)
    {
        $this->setProperty("Manager", $value, true);
    }
    /**
     * The contact's home phone numbers.
     * @return array
     */
    public function getHomePhones()
    {
        if (!$this->isPropertyAvailable("HomePhones")) {
            return null;
        }
        return $this->getProperty("HomePhones");
    }
    /**
     * The contact's home phone numbers.
     * @var array
     */
    public function setHomePhones($value)
    {
        $this->setProperty("HomePhones", $value, true);
    }
    /**
     * The contact's mobile phone number.
     * @return string
     */
    public function getMobilePhone()
    {
        if (!$this->isPropertyAvailable("MobilePhone")) {
            return null;
        }
        return $this->getProperty("MobilePhone");
    }
    /**
     * The contact's mobile phone number.
     * @var string
     */
    public function setMobilePhone($value)
    {
        $this->setProperty("MobilePhone", $value, true);
    }
    /**
     * The contact's business phone numbers.
     * @return array
     */
    public function getBusinessPhones()
    {
        if (!$this->isPropertyAvailable("BusinessPhones")) {
            return null;
        }
        return $this->getProperty("BusinessPhones");
    }
    /**
     * The contact's business phone numbers.
     * @var array
     */
    public function setBusinessPhones($value)
    {
        $this->setProperty("BusinessPhones", $value, true);
    }
    /**
     * The name of the contact's spouse/partner.
     * @return string
     */
    public function getSpouseName()
    {
        if (!$this->isPropertyAvailable("SpouseName")) {
            return null;
        }
        return $this->getProperty("SpouseName");
    }
    /**
     * The name of the contact's spouse/partner.
     * @var string
     */
    public function setSpouseName($value)
    {
        $this->setProperty("SpouseName", $value, true);
    }
    /**
     * The user's notes about the contact.
     * @return string
     */
    public function getPersonalNotes()
    {
        if (!$this->isPropertyAvailable("PersonalNotes")) {
            return null;
        }
        return $this->getProperty("PersonalNotes");
    }
    /**
     * The user's notes about the contact.
     * @var string
     */
    public function setPersonalNotes($value)
    {
        $this->setProperty("PersonalNotes", $value, true);
    }
    /**
     * The names of the contact's children.
     * @return array
     */
    public function getChildren()
    {
        if (!$this->isPropertyAvailable("Children")) {
            return null;
        }
        return $this->getProperty("Children");
    }
    /**
     * The names of the contact's children.
     * @var array
     */
    public function setChildren($value)
    {
        $this->setProperty("Children", $value, true);
    }
    /**
     *  Optional contact picture. You can get or set a photo for a contact.
     * @return ProfilePhoto
     */
    public function getPhoto()
    {
        if (!$this->isPropertyAvailable("Photo")) {
            $this->setProperty("Photo", new ProfilePhoto($this->getContext(), new ResourcePath("Photo", $this->getResourcePath())));
        }
        return $this->getProperty("Photo");
    }
    /**
     * The contact's home address.
     * @return PhysicalAddress
     */
    public function getHomeAddress()
    {
        if (!$this->isPropertyAvailable("HomeAddress")) {
            return null;
        }
        return $this->getProperty("HomeAddress");
    }
    /**
     * The contact's home address.
     * @var PhysicalAddress
     */
    public function setHomeAddress($value)
    {
        $this->setProperty("HomeAddress", $value, true);
    }
    /**
     * The contact's business address.
     * @return PhysicalAddress
     */
    public function getBusinessAddress()
    {
        if (!$this->isPropertyAvailable("BusinessAddress")) {
            return null;
        }
        return $this->getProperty("BusinessAddress");
    }
    /**
     * The contact's business address.
     * @var PhysicalAddress
     */
    public function setBusinessAddress($value)
    {
        $this->setProperty("BusinessAddress", $value, true);
    }
    /**
     * Other addresses for the contact.
     * @return PhysicalAddress
     */
    public function getOtherAddress()
    {
        if (!$this->isPropertyAvailable("OtherAddress")) {
            return null;
        }
        return $this->getProperty("OtherAddress");
    }
    /**
     * Other addresses for the contact.
     * @var PhysicalAddress
     */
    public function setOtherAddress($value)
    {
        $this->setProperty("OtherAddress", $value, true);
    }
}