Skip to content

Commit

Permalink
pickup points upgrade: shipping to address is now directly overwritten
Browse files Browse the repository at this point in the history
  • Loading branch information
bakkerpeter committed Apr 8, 2016
1 parent af8bab5 commit 42b1afa
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 23 deletions.
4 changes: 2 additions & 2 deletions index.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@
->setPhoneNumber('test')
->addOrderItem($item)
->setBillingAddress($address)
->setShippingAddress($address);
->setShippingAddress();

//$order->setPickupPoint('NL-111101', '1111AA', 'Straatnaam 10a');
//$order->setPickupPoint('NL-111101', '1111AA', 'Straatnaam 10a' , 'Groningen');

if (!$order->save()) {
echo $order->getMessage();
Expand Down
60 changes: 48 additions & 12 deletions src/models/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ class Address extends Model {
*/
public $lastName;

/**
* The 'extra' name, used for pickup points
* @var string
*/
public $extraName;

/**
* Postal code
* @var string
Expand Down Expand Up @@ -55,21 +61,32 @@ class Address extends Model {
/**
* Funky code to get the housenumber and addition out of a street
* The mashape API (used for DHL pickup points) only returns address data
* @param type $street
* @return Address
* @param srting $street Can be address (with housenumber)
* @param string $postalCode
* @param string $city
* @param integer $houseNumber Optional
* @param string $houseNumberAddition Optional
* @return \Afosto\ActiveAnts\Address
*/
public static function getAddressFromStreet($street) {
public static function formatAddress($street, $postalCode, $city, $houseNumber = null, $houseNumberAddition = null) {
$address = new Address();
$pattern = '#^([a-z0-9 [:punct:]\']*) ([0-9]{1,5})([a-z0-9 \-/]{0,})$#i';
preg_match($pattern, str_replace(' - ', '-', $street), $aMatch);
$address->street = $aMatch[1];
$address->houseNumber = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[2]);

if (isset($aMatch[3])) {
$address->houseNumberAddition = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[3]);
if (is_null($houseNumber)) {
//If housenumber was not provided, try to retreive it from the street (address)
$pattern = '#^([a-z0-9 [:punct:]\']*) ([0-9]{1,5})([a-z0-9 \-/]{0,})$#i';
preg_match($pattern, str_replace(' - ', '-', $street), $aMatch);
$address->street = $aMatch[1];
$address->houseNumber = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[2]);
if (isset($aMatch[3])) {
$address->houseNumberAddition = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[3]);
}
} else {
$address->street = $street;
$address->houseNumber = $houseNumber;
$address->houseNumberAddition = $houseNumberAddition;
}

$address->postalCode = $postalCode;
$address->cityName = $city;

return $address;
}

Expand Down Expand Up @@ -149,4 +166,23 @@ public function getAddress($type) {
return $address;
}

/**
* Sets the 'extra' name
*/
public function setExtraName() {
$this->extraName = 'T.a.v.' . $this->firstName . ' ' . $this->lastName .
' (' . $this->getFullHouseNumber() . ')';
}

/**
* Return the formatted housenumber
* @return string
*/
public function getFullHouseNumber() {
if (is_null($this->houseNumberAddition) || trim($this->houseNumberAddition) == '') {
return $this->houseNumber;
}
return $this->houseNumber . ' ' . $this->houseNumberAddition;
}

}
36 changes: 27 additions & 9 deletions src/models/Order.php
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,16 @@ public function setBillingAddress(Address $address) {
* @param \Afosto\ActiveAnts\Address $address
* @return \Afosto\ActiveAnts\Order
*/
public function setShippingAddress(Address $address) {
$this->shippingAddress = $address;
public function setShippingAddress(Address $address = null) {
if (is_null($address)) {
if (!empty($this->billingAddress)) {
$this->shippingAddress = clone($this->billingAddress);
} else {
throw new ApiException('Cannot copy billing address as it is empty');
}
} else {
$this->shippingAddress = $address;
}
return $this;
}

Expand All @@ -186,17 +194,27 @@ public function setPreferredShippingDate(\DateTime $date = null) {
* Add pickup point information
* @param string $pointId
* @param string $postalCode
* @param integer $houseNumber
* @param string $houseNumberAddition
* @param string $street
* @param string $city
*/
public function setPickupPoint($pointId, $postalCode, $street) {
public function setPickupPoint($pointId, $postalCode, $street, $city) {
$this->PickUpPointId = $pointId;
$this->PickUpPointPostalCode = $postalCode;

//Get the address data based on the street data
$address = Address::getAddressFromStreet($street);
$this->PickUpPointHouseNumber = $address->houseNumber;
$this->PickUpPointAddition = $address->houseNumberAddition;
$pointAddress = Address::formatAddress($street, $postalCode, $city);
$this->PickUpPointHouseNumber = $pointAddress->houseNumber;
$this->PickUpPointAddition = $pointAddress->houseNumberAddition;

//Overwrite the shipping to address to the values from the pickup point
$this->shippingAddress->street = $pointAddress->street;
$this->shippingAddress->houseNumber = $pointAddress->houseNumber;
$this->shippingAddress->houseNumberAddition = $pointAddress->houseNumberAddition;
$this->shippingAddress->cityName = $pointAddress->cityName;
$this->shippingAddress->postalCode = $pointAddress->postalCode;

//Set the extraname, only used for pickup points
$this->shippingAddress->setExtraName();
}

/**
Expand Down

0 comments on commit 42b1afa

Please sign in to comment.