validFrom = new \DateTime(); } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set streetAddress1 * * @param string $streetAddress1 * * @return Address */ public function setStreetAddress1($streetAddress1) { $this->streetAddress1 = $streetAddress1 === NULL ? '' : $streetAddress1; return $this; } /** * Get streetAddress1 * * @return string */ public function getStreetAddress1() { return $this->streetAddress1; } /** * Set streetAddress2 * * @param string $streetAddress2 * * @return Address */ public function setStreetAddress2($streetAddress2) { $this->streetAddress2 = $streetAddress2 === NULL ? '' : $streetAddress2; return $this; } /** * Get streetAddress2 * * @return string */ public function getStreetAddress2() { return $this->streetAddress2; } /** * Set postcode * * @param PostalCode $postcode * * @return Address */ public function setPostcode(PostalCode $postcode = null) { $this->postcode = $postcode; return $this; } /** * Get postcode * * @return PostalCode */ public function getPostcode() { return $this->postcode; } /** * @return \DateTime */ public function getValidFrom() { return $this->validFrom; } /** * @param \DateTime $validFrom * @return Address */ public function setValidFrom(\DateTime $validFrom) { $this->validFrom = $validFrom; return $this; } /** * Get IsNoAddress * * Indicate true if the address is a fake address (homeless, ...) * * @return bool */ public function getIsNoAddress(): bool { return $this->isNoAddress; } /** * @return bool */ public function isNoAddress(): bool { return $this->getIsNoAddress(); } /** * Set IsNoAddress * * Indicate true if the address is a fake address (homeless, ...) * * @param bool $isNoAddress * @return $this */ public function setIsNoAddress(bool $isNoAddress) { $this->isNoAddress = $isNoAddress; return $this; } /** * Validate the address. * * Check that: * * * if the address is not home address: * * the postal code is present * * the valid from is not null * * the address street 1 is greater than 2 * * @param ExecutionContextInterface $context * @param array $payload */ public function validate(ExecutionContextInterface $context, $payload) { if (!$this->getValidFrom() instanceof \DateTime) { $context ->buildViolation("address.date-should-be-set") ->atPath('validFrom') ->addViolation(); } if ($this->isNoAddress()) { return; } if (empty($this->getStreetAddress1())) { $context ->buildViolation("address.street1-should-be-set") ->atPath('streetAddress1') ->addViolation(); } if (!$this->getPostcode() instanceof PostalCode) { $context ->buildViolation("address.postcode-should-be-set") ->atPath('postCode') ->addViolation(); } } /** * @param Address $original * @return Address */ public static function createFromAddress(Address $original) : Address { return (new Address()) ->setPostcode($original->getPostcode()) ->setStreetAddress1($original->getStreetAddress1()) ->setStreetAddress2($original->getStreetAddress2()) ->setValidFrom($original->getValidFrom()) ; } }