2013-11-24 22:30:06 +00:00
|
|
|
<?php
|
2014-04-15 22:25:48 -03:00
|
|
|
namespace DesignPatterns\Behavioral\Specification;
|
2013-11-24 22:30:06 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A specification to check an Item is priced between min and max
|
|
|
|
*/
|
|
|
|
class PriceSpecification extends AbstractSpecification
|
|
|
|
{
|
|
|
|
protected $maxPrice;
|
|
|
|
protected $minPrice;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the optional maximum price
|
|
|
|
*
|
|
|
|
* @param int $maxPrice
|
|
|
|
*/
|
|
|
|
public function setMaxPrice($maxPrice)
|
|
|
|
{
|
|
|
|
$this->maxPrice = $maxPrice;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the optional minimum price
|
|
|
|
*
|
|
|
|
* @param int $minPrice
|
|
|
|
*/
|
|
|
|
public function setMinPrice($minPrice)
|
|
|
|
{
|
|
|
|
$this->minPrice = $minPrice;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks if Item price falls between bounds
|
2014-04-16 17:59:03 -03:00
|
|
|
*
|
2013-11-24 22:30:06 +00:00
|
|
|
* @param Item $item
|
2014-04-16 17:59:03 -03:00
|
|
|
*
|
2013-11-24 22:30:06 +00:00
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
public function isSatisfiedBy(Item $item)
|
|
|
|
{
|
2014-04-16 17:59:03 -03:00
|
|
|
if (!empty($this->maxPrice) && $item->getPrice() > $this->maxPrice) {
|
2013-11-24 22:30:06 +00:00
|
|
|
return false;
|
|
|
|
}
|
2014-04-16 17:59:03 -03:00
|
|
|
if (!empty($this->minPrice) && $item->getPrice() < $this->minPrice) {
|
2013-11-24 22:30:06 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|