1 <?php
2 3 4
5 namespace Team3\PayU\Order\Autocomplete\Strategy;
6
7 use Team3\PayU\Configuration\ConfigurationInterface;
8 use Team3\PayU\Order\Model\Money\Money;
9 use Team3\PayU\Order\Model\Money\MoneyInterface;
10 use Team3\PayU\Order\Model\OrderInterface;
11 use Team3\PayU\Order\Model\Products\ProductCollectionInterface;
12 use Team3\PayU\Order\Model\Products\ProductInterface;
13
14 class TotalAmountStrategy implements AutocompleteStrategyInterface
15 {
16 17 18 19 20
21 public function supports(OrderInterface $order)
22 {
23 return 0 == $order->getTotalAmount()->getValue()
24 && 0 < $order->getProductCollection()->count();
25 }
26
27 28 29 30
31 public function autocomplete(
32 OrderInterface $order,
33 ConfigurationInterface $configuration
34 ) {
35 $order->setTotalAmount(
36 $this->getProductsCost(
37 $order->getProductCollection()
38 )
39 );
40 }
41
42 43 44 45 46
47 private function getProductsCost(
48 ProductCollectionInterface $productCollection
49 ) {
50 $totalAmount = new Money(0);
51
52
53 foreach ($productCollection as $product) {
54
55 $totalAmount = $totalAmount->add(
56 $product->getUnitPrice()->multiply(
57 $product->getQuantity()
58 )
59 );
60 }
61
62 return $totalAmount;
63 }
64 }
65