/** * @{inheritDoc} */ public function getCustomers() { if (null === ($customers = json_decode($this->json, true))) { throw new \UnexpectedValueException('Failed to decode the provided JSON.'); } $domainCustomers = []; foreach ($customers as $customer) { if (!$this->isCustomerValid($customer)) { throw new \DomainException('There was an invalid customer entry in your JSON.'); } $domainCustomer = new Customer(); $domainCustomer->setUserId($customer['user_id'])->setName($customer['name'])->setLongitude($customer['longitude'])->setLatitude($customer['latitude']); $domainCustomers[] = $domainCustomer; } return $domainCustomers; }
public function testSetLongitudeInvalid() { $this->setExpectedException('\\InvalidArgumentException'); $customer = new Customer(); $customer->setLongitude('invalid'); }
/** * Checks if a customer is within the distance of a given latitude / longitude in kilometers. * * @param Customer $customer The customer to check. * @param float $latitudeTo The latitude to check the customer is in distance of. * @param float $longitudeTo The longitude to check the customer is in distance of. * @param float $maxDistanceInKm The maximum distance before the customer is considered not * "within distance". * * @return bool */ public function isCustomerWithinDistance(Customer $customer, $latitudeTo, $longitudeTo, $maxDistanceInKm) { $distanceInKm = $this->distanceCalculator->haversineGreatCircleDistance($customer->getLatitude(), $customer->getLongitude(), $latitudeTo, $longitudeTo, 6371); return $distanceInKm <= $maxDistanceInKm; }