protected function getMinimumStayCustomPriceForGap(DateTime $date, $gap) {
/** @var $a Doctrine_Collection */
$a = $this->getPrice()->filter(function(Price $p) use ($date, $gap) {
if ($p->amount > 0 && $p->type == Price::TYPE_CUSTOM && strtotime($p->start_date) <= $date->getTimestamp() && strtotime($p->end_date) > $date->getTimestamp()) {
return true;
}
else {
return false;
}
});
$result = $a->getData();
usort($result, function(Price $a, Price $b) use($date) {
if($a == $b) {
return 0;
}
else if($a->priority == $b->priority) {
if($a->min_stay == $b->min_stay) {
return 0;
}
else if($a->min_stay != null && $b->min_stay == null) {
return -1;
}
else if($a->min_stay == null && $b->min_stay != null) {
return 1;
}
else if($a->min_stay < $b->min_stay) {
return -1;
}
else if($a->min_stay > $b->min_stay) {
return 1;
}
else {
return 0;
}
}
else if($a->priority > $b->priority) {
return -1;
}
else {
return 1;
}
});
$result = reset($result);
$result = $result?$result:null;
return $result;
}