1 <?php
2 3 4
5 namespace Team3\PayU\Order\Autocomplete;
6
7 use Psr\Log\LoggerInterface;
8 use Team3\PayU\Order\Autocomplete\Strategy\AutocompleteStrategyInterface;
9 use Team3\PayU\Order\Autocomplete\Strategy\CustomerIpStrategy;
10 use Team3\PayU\Order\Autocomplete\Strategy\MerchantPosIdStrategy;
11 use Team3\PayU\Order\Autocomplete\Strategy\SignatureStrategy;
12 use Team3\PayU\Order\Autocomplete\Strategy\TotalAmountStrategy;
13 use Team3\PayU\SignatureCalculator\OrderSignatureCalculatorFactory;
14 use Team3\PayU\SignatureCalculator\OrderSignatureCalculatorInterface;
15
16 class OrderAutocompleteFactory implements OrderAutocompleteFactoryInterface
17 {
18 19 20 21 22
23 public function build(LoggerInterface $logger)
24 {
25 $orderAutocomplete = new OrderAutocomplete($logger);
26 foreach ($this->getStrategies($logger) as $strategy) {
27 $orderAutocomplete->addStrategy($strategy);
28 }
29
30 return $orderAutocomplete;
31 }
32
33 34 35 36 37
38 private function getStrategies(LoggerInterface $logger)
39 {
40 return [
41 new CustomerIpStrategy(),
42 new MerchantPosIdStrategy(),
43 new TotalAmountStrategy(),
44 new SignatureStrategy($this->getSignatureCalculator($logger)),
45 ];
46 }
47
48 49 50 51 52
53 private function getSignatureCalculator(LoggerInterface $logger)
54 {
55 $calculatorFactory = new OrderSignatureCalculatorFactory();
56
57 return $calculatorFactory->build($logger);
58 }
59 }
60