Skip to content

Commit 42b1afa

Browse files
committed
pickup points upgrade: shipping to address is now directly overwritten
1 parent af8bab5 commit 42b1afa

File tree

3 files changed

+77
-23
lines changed

3 files changed

+77
-23
lines changed

index.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343
->setPhoneNumber('test')
4444
->addOrderItem($item)
4545
->setBillingAddress($address)
46-
->setShippingAddress($address);
46+
->setShippingAddress();
4747

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

5050
if (!$order->save()) {
5151
echo $order->getMessage();

src/models/Address.php

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ class Address extends Model {
1616
*/
1717
public $lastName;
1818

19+
/**
20+
* The 'extra' name, used for pickup points
21+
* @var string
22+
*/
23+
public $extraName;
24+
1925
/**
2026
* Postal code
2127
* @var string
@@ -55,21 +61,32 @@ class Address extends Model {
5561
/**
5662
* Funky code to get the housenumber and addition out of a street
5763
* The mashape API (used for DHL pickup points) only returns address data
58-
* @param type $street
59-
* @return Address
64+
* @param srting $street Can be address (with housenumber)
65+
* @param string $postalCode
66+
* @param string $city
67+
* @param integer $houseNumber Optional
68+
* @param string $houseNumberAddition Optional
69+
* @return \Afosto\ActiveAnts\Address
6070
*/
61-
public static function getAddressFromStreet($street) {
71+
public static function formatAddress($street, $postalCode, $city, $houseNumber = null, $houseNumberAddition = null) {
6272
$address = new Address();
63-
$pattern = '#^([a-z0-9 [:punct:]\']*) ([0-9]{1,5})([a-z0-9 \-/]{0,})$#i';
64-
preg_match($pattern, str_replace(' - ', '-', $street), $aMatch);
65-
66-
$address->street = $aMatch[1];
67-
$address->houseNumber = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[2]);
68-
69-
if (isset($aMatch[3])) {
70-
$address->houseNumberAddition = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[3]);
73+
if (is_null($houseNumber)) {
74+
//If housenumber was not provided, try to retreive it from the street (address)
75+
$pattern = '#^([a-z0-9 [:punct:]\']*) ([0-9]{1,5})([a-z0-9 \-/]{0,})$#i';
76+
preg_match($pattern, str_replace(' - ', '-', $street), $aMatch);
77+
$address->street = $aMatch[1];
78+
$address->houseNumber = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[2]);
79+
if (isset($aMatch[3])) {
80+
$address->houseNumberAddition = preg_replace("/[^A-Za-z0-9 ]/", '', $aMatch[3]);
81+
}
82+
} else {
83+
$address->street = $street;
84+
$address->houseNumber = $houseNumber;
85+
$address->houseNumberAddition = $houseNumberAddition;
7186
}
72-
87+
$address->postalCode = $postalCode;
88+
$address->cityName = $city;
89+
7390
return $address;
7491
}
7592

@@ -149,4 +166,23 @@ public function getAddress($type) {
149166
return $address;
150167
}
151168

169+
/**
170+
* Sets the 'extra' name
171+
*/
172+
public function setExtraName() {
173+
$this->extraName = 'T.a.v.' . $this->firstName . ' ' . $this->lastName .
174+
' (' . $this->getFullHouseNumber() . ')';
175+
}
176+
177+
/**
178+
* Return the formatted housenumber
179+
* @return string
180+
*/
181+
public function getFullHouseNumber() {
182+
if (is_null($this->houseNumberAddition) || trim($this->houseNumberAddition) == '') {
183+
return $this->houseNumber;
184+
}
185+
return $this->houseNumber . ' ' . $this->houseNumberAddition;
186+
}
187+
152188
}

src/models/Order.php

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,16 @@ public function setBillingAddress(Address $address) {
164164
* @param \Afosto\ActiveAnts\Address $address
165165
* @return \Afosto\ActiveAnts\Order
166166
*/
167-
public function setShippingAddress(Address $address) {
168-
$this->shippingAddress = $address;
167+
public function setShippingAddress(Address $address = null) {
168+
if (is_null($address)) {
169+
if (!empty($this->billingAddress)) {
170+
$this->shippingAddress = clone($this->billingAddress);
171+
} else {
172+
throw new ApiException('Cannot copy billing address as it is empty');
173+
}
174+
} else {
175+
$this->shippingAddress = $address;
176+
}
169177
return $this;
170178
}
171179

@@ -186,17 +194,27 @@ public function setPreferredShippingDate(\DateTime $date = null) {
186194
* Add pickup point information
187195
* @param string $pointId
188196
* @param string $postalCode
189-
* @param integer $houseNumber
190-
* @param string $houseNumberAddition
197+
* @param string $street
198+
* @param string $city
191199
*/
192-
public function setPickupPoint($pointId, $postalCode, $street) {
200+
public function setPickupPoint($pointId, $postalCode, $street, $city) {
193201
$this->PickUpPointId = $pointId;
194202
$this->PickUpPointPostalCode = $postalCode;
195-
203+
196204
//Get the address data based on the street data
197-
$address = Address::getAddressFromStreet($street);
198-
$this->PickUpPointHouseNumber = $address->houseNumber;
199-
$this->PickUpPointAddition = $address->houseNumberAddition;
205+
$pointAddress = Address::formatAddress($street, $postalCode, $city);
206+
$this->PickUpPointHouseNumber = $pointAddress->houseNumber;
207+
$this->PickUpPointAddition = $pointAddress->houseNumberAddition;
208+
209+
//Overwrite the shipping to address to the values from the pickup point
210+
$this->shippingAddress->street = $pointAddress->street;
211+
$this->shippingAddress->houseNumber = $pointAddress->houseNumber;
212+
$this->shippingAddress->houseNumberAddition = $pointAddress->houseNumberAddition;
213+
$this->shippingAddress->cityName = $pointAddress->cityName;
214+
$this->shippingAddress->postalCode = $pointAddress->postalCode;
215+
216+
//Set the extraname, only used for pickup points
217+
$this->shippingAddress->setExtraName();
200218
}
201219

202220
/**

0 commit comments

Comments
 (0)