public function getAddressByCondition($entity, callable $conditionCallback, $force = false)
{
$addresses = $this->getAddresses($entity);
$address = null;
$main = null;
if (!is_null($addresses)) {
/* @var AccountAddress $accountAddress */
foreach ($addresses as $address) {
if ($conditionCallback($address->getAddress())) {
return $address->getAddress();
}
if ($address->getMain()) {
$main = $address->getAddress();
}
}
if ($force) {
// return main or first address
if ($main === null && $addresses->first()) {
return $addresses->first()->getAddress();
}
}
}
return $main;
}