Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
17 / 17 |
UserOrderTransformer | |
100.00% |
1 / 1 |
|
100.00% |
4 / 4 |
7 | |
100.00% |
17 / 17 |
__construct(ExtractorInterface $extractor) | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
transform(OrderInterface $order, $userOrder) | |
100.00% |
1 / 1 |
4 | |
100.00% |
10 / 10 |
|||
addStrategy( UserOrderTransformerStrategyInterface $userOrderTransformerStrategy ) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getExtractedResults($userOrder) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
<?php | |
/** | |
* @author Krzysztof Gzocha <krzysztof.gzocha@xsolve.pl> | |
*/ | |
namespace Team3\PayU\Order\Transformer\UserOrder; | |
use Team3\PayU\Order\Model\Order; | |
use Team3\PayU\Order\Model\OrderInterface; | |
use Team3\PayU\PropertyExtractor\ExtractorInterface; | |
use Team3\PayU\PropertyExtractor\ExtractorResult; | |
use Team3\PayU\Order\Transformer\UserOrder\Strategy\UserOrderTransformerStrategyInterface; | |
class UserOrderTransformer implements UserOrderTransformerInterface | |
{ | |
/** | |
* @var UserOrderTransformerStrategyInterface[] | |
*/ | |
protected $strategies; | |
/** | |
* @var ExtractorInterface | |
*/ | |
protected $extractor; | |
/** | |
* @param ExtractorInterface $extractor | |
*/ | |
public function __construct(ExtractorInterface $extractor) | |
{ | |
$this->extractor = $extractor; | |
$this->strategies = []; | |
} | |
/** | |
* @inheritdoc | |
*/ | |
public function transform(OrderInterface $order, $userOrder) | |
{ | |
foreach ($this->getExtractedResults($userOrder) as $extractionResult) { | |
foreach ($this->strategies as $strategy) { | |
if ($strategy->supports($extractionResult->getPropertyName())) { | |
$strategy->transform( | |
$order, | |
$extractionResult | |
); | |
} | |
} | |
} | |
return $order; | |
} | |
/** | |
* @param UserOrderTransformerStrategyInterface $userOrderTransformerStrategy | |
*/ | |
public function addStrategy( | |
UserOrderTransformerStrategyInterface $userOrderTransformerStrategy | |
) { | |
$this->strategies[] = $userOrderTransformerStrategy; | |
} | |
/** | |
* @param $userOrder | |
* | |
* @return ExtractorResult[] | |
*/ | |
protected function getExtractedResults($userOrder) | |
{ | |
return $this | |
->extractor | |
->extract($userOrder); | |
} | |
} |