<?php
/*
* This file is part of Sulu.
*
* (c) Sulu GmbH
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Sulu\Bundle\ContactBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
use JMS\Serializer\Annotation\Groups;
/**
* Address.
*
* @ExclusionPolicy("all");
*/
class Address
{
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $street;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $number;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $addition;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $zip;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $city;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $state;
/**
* @var int
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $id;
/**
* @var AddressType
* @Groups({"fullAccount", "fullContact"})
* @Expose
*/
private $addressType;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $countryCode;
/**
* @var bool
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $primaryAddress;
/**
* @var bool
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $deliveryAddress;
/**
* @var bool
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $billingAddress;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $postboxNumber;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $postboxPostcode;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $postboxCity;
/**
* @var Collection<int, ContactAddress>
*/
private $contactAddresses;
/**
* @var Collection<int, AccountAddress>
*/
private $accountAddresses;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $note;
/**
* @var string|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $title;
/**
* @var float|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $latitude;
/**
* @var float|null
* @Groups({"fullAccount", "partialAccount", "fullContact", "partialContact"})
* @Expose
*/
private $longitude;
/**
* Constructor.
*/
public function __construct()
{
$this->accountAddresses = new ArrayCollection();
$this->contactAddresses = new ArrayCollection();
}
/**
* Set street.
*
* @param string|null $street
*
* @return Address
*/
public function setStreet($street)
{
$this->street = $street;
return $this;
}
/**
* Get street.
*
* @return string|null
*/
public function getStreet()
{
return $this->street;
}
/**
* Set number.
*
* @param string|null $number
*
* @return Address
*/
public function setNumber($number)
{
$this->number = $number;
return $this;
}
/**
* Get number.
*
* @return string|null
*/
public function getNumber()
{
return $this->number;
}
/**
* Set addition.
*
* @param string|null $addition
*
* @return Address
*/
public function setAddition($addition)
{
$this->addition = $addition;
return $this;
}
/**
* Get addition.
*
* @return string|null
*/
public function getAddition()
{
return $this->addition;
}
/**
* Set zip.
*
* @param string|null $zip
*
* @return Address
*/
public function setZip($zip)
{
$this->zip = $zip;
return $this;
}
/**
* Get zip.
*
* @return string|null
*/
public function getZip()
{
return $this->zip;
}
/**
* Set city.
*
* @param string|null $city
*
* @return Address
*/
public function setCity($city)
{
$this->city = $city;
return $this;
}
/**
* Get city.
*
* @return string|null
*/
public function getCity()
{
return $this->city;
}
/**
* Set state.
*
* @param string|null $state
*
* @return Address
*/
public function setState($state)
{
$this->state = $state;
return $this;
}
/**
* Get state.
*
* @return string|null
*/
public function getState()
{
return $this->state;
}
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set addressType.
*
* @return Address
*/
public function setAddressType(AddressType $addressType)
{
$this->addressType = $addressType;
return $this;
}
/**
* Get addressType.
*
* @return AddressType
*/
public function getAddressType()
{
return $this->addressType;
}
/**
* Set countryCode.
*
* @param string $countryCode
*
* @return Address
*/
public function setCountryCode(?string $countryCode)
{
$this->countryCode = $countryCode;
return $this;
}
/**
* Get countryCode.
*/
public function getCountryCode(): ?string
{
return $this->countryCode;
}
public function getCountry(): ?Country
{
if (!$this->countryCode) {
return null;
}
return new Country($this->countryCode);
}
/**
* Set primaryAddress.
*
* @param bool $primaryAddress
*
* @return Address
*/
public function setPrimaryAddress($primaryAddress)
{
$this->primaryAddress = $primaryAddress;
return $this;
}
/**
* Get primaryAddress.
*
* @return bool
*/
public function getPrimaryAddress()
{
return $this->primaryAddress;
}
/**
* Set deliveryAddress.
*
* @param bool $deliveryAddress
*
* @return Address
*/
public function setDeliveryAddress($deliveryAddress)
{
$this->deliveryAddress = $deliveryAddress;
return $this;
}
/**
* Get deliveryAddress.
*
* @return bool
*/
public function getDeliveryAddress()
{
return $this->deliveryAddress;
}
/**
* Set billingAddress.
*
* @param bool $billingAddress
*
* @return Address
*/
public function setBillingAddress($billingAddress)
{
$this->billingAddress = $billingAddress;
return $this;
}
/**
* Get billingAddress.
*
* @return bool
*/
public function getBillingAddress()
{
return $this->billingAddress;
}
/**
* Set postboxNumber.
*
* @param string|null $postboxNumber
*
* @return Address
*/
public function setPostboxNumber($postboxNumber)
{
$this->postboxNumber = $postboxNumber;
return $this;
}
/**
* Get postboxNumber.
*
* @return string|null
*/
public function getPostboxNumber()
{
return $this->postboxNumber;
}
/**
* Set postboxPostcode.
*
* @param string|null $postboxPostcode
*
* @return Address
*/
public function setPostboxPostcode($postboxPostcode)
{
$this->postboxPostcode = $postboxPostcode;
return $this;
}
/**
* Get postboxPostcode.
*
* @return string|null
*/
public function getPostboxPostcode()
{
return $this->postboxPostcode;
}
/**
* Set postboxCity.
*
* @param string|null $postboxCity
*
* @return Address
*/
public function setPostboxCity($postboxCity)
{
$this->postboxCity = $postboxCity;
return $this;
}
/**
* Get postboxCity.
*
* @return string|null
*/
public function getPostboxCity()
{
return $this->postboxCity;
}
/**
* Add contactAddresses.
*
* @return Address
*/
public function addContactAddress(ContactAddress $contactAddresses)
{
$this->contactAddresses[] = $contactAddresses;
return $this;
}
/**
* Remove contactAddresses.
*/
public function removeContactAddress(ContactAddress $contactAddresses)
{
$this->contactAddresses->removeElement($contactAddresses);
}
/**
* Get contactAddresses.
*
* @return Collection<int, ContactAddress>
*/
public function getContactAddresses()
{
return $this->contactAddresses;
}
/**
* Add accountAddresses.
*
* @return Address
*/
public function addAccountAddress(AccountAddress $accountAddresses)
{
$this->accountAddresses[] = $accountAddresses;
return $this;
}
/**
* Remove accountAddresses.
*/
public function removeAccountAddress(AccountAddress $accountAddresses)
{
$this->accountAddresses->removeElement($accountAddresses);
}
/**
* Get accountAddresses.
*
* @return Collection<int, AccountAddress>
*/
public function getAccountAddresses()
{
return $this->accountAddresses;
}
/**
* returns if address has at least one relation to another entity.
*
* @return bool
*/
public function hasRelations()
{
if (!$this->getContactAddresses()->isEmpty() ||
!$this->getAccountAddresses()->isEmpty()
) {
return true;
}
return false;
}
/**
* Set note.
*
* @param string|null $note
*
* @return Address
*/
public function setNote($note)
{
$this->note = $note;
return $this;
}
/**
* Get note.
*
* @return string|null
*/
public function getNote()
{
return $this->note;
}
/**
* Set title.
*
* @param string|null $title
*
* @return Address
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title.
*
* @return string|null
*/
public function getTitle()
{
return $this->title;
}
/**
* Returns latitude.
*
* @return float|null
*/
public function getLatitude()
{
return $this->latitude;
}
/**
* Set latitude.
*
* @param float|null $latitude
*
* @return Address
*/
public function setLatitude($latitude)
{
$this->latitude = $latitude;
return $this;
}
/**
* Returns longitude.
*
* @return float|null
*/
public function getLongitude()
{
return $this->longitude;
}
/**
* Set longitude.
*
* @param float|null $longitude
*
* @return Address
*/
public function setLongitude($longitude)
{
$this->longitude = $longitude;
return $this;
}
}