BonusSumOrderCounter.php 1.07 KB
<?php
    /**
     * Created by PhpStorm.
     * User: stes
     * Date: 26.10.18
     * Time: 15:10
     */
    
    namespace artbox\catalog\orders\components;

    use common\models\OrderProduct;
    use yii\base\BaseObject;
    
    class BonusSumOrderCounter extends BaseObject implements SumOrderCounter
    {
        public $service;
        public $order_id;
        
        public function __construct(BonusService $service, int $order_id, array $config = [])
        {
            $this->service = $service;
            $this->order_id = $order_id;
            parent::__construct($config);
        }
        
        public function getSum(OrderProduct $product): float
        {
            return $product->variant->price * $product->count;
        }
        
        public function getTotal(array $products): float
        {
            $sum = 0;
            foreach ($products as $product) {
                $sum += $this->getSum($product);
            }
            
            $bonus = $this->service->getBonus($this->order_id);
            return $sum - $bonus;
        }
    }