Completed
Push — master ( 8f2642...cafe6d )
by Adam
06:17
created

OrderStatusHistorySubscriber   A

Coupling/Cohesion

Components 1
Dependencies 7

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
lcom 1
cbo 7
dl 0
loc 47
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getSubscribedEvents() 0 6 1
A onOrderStatusHistoryPreCreate() 0 21 3
1
<?php
2
/*
3
 * WellCommerce Open-Source E-Commerce Platform
4
 *
5
 * This file is part of the WellCommerce package.
6
 *
7
 * (c) Adam Piotrowski <[email protected]>
8
 *
9
 * For the full copyright and license information,
10
 * please view the LICENSE file that was distributed with this source code.
11
 */
12
13
namespace WellCommerce\Bundle\OrderBundle\EventListener;
14
15
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
16
use WellCommerce\Bundle\CoreBundle\Doctrine\Event\EntityEvent;
17
use WellCommerce\Bundle\CoreBundle\Helper\Mailer\MailerHelper;
18
use WellCommerce\Bundle\CoreBundle\Helper\Translator\TranslatorHelperInterface;
19
use WellCommerce\Bundle\OrderBundle\Entity\OrderStatusHistory;
20
21
/**
22
 * Class OrderStatusHistorySubscriber
23
 *
24
 * @author  Adam Piotrowski <[email protected]>
25
 */
26
final class OrderStatusHistorySubscriber implements EventSubscriberInterface
27
{
28
    /**
29
     * @var MailerHelper
30
     */
31
    private $mailerHelper;
32
    
33
    /**
34
     * @var TranslatorHelperInterface
35
     */
36
    private $translatorHelper;
37
    
38
    public function __construct(MailerHelper $mailerHelper, TranslatorHelperInterface $translatorHelper)
39
    {
40
        $this->mailerHelper     = $mailerHelper;
41
        $this->translatorHelper = $translatorHelper;
42
    }
43
    
44
    public static function getSubscribedEvents()
45
    {
46
        return [
47
            'order_status_history.pre_create' => ['onOrderStatusHistoryPreCreate', 0],
48
        ];
49
    }
50
    
51
    public function onOrderStatusHistoryPreCreate(EntityEvent $event)
52
    {
53
        $history = $event->getEntity();
54
        if ($history instanceof OrderStatusHistory) {
55
            $order = $history->getOrder();
56
            if ($history->isNotify()) {
57
                $this->mailerHelper->sendEmail([
58
                    'recipient'     => $order->getContactDetails()->getEmail(),
59
                    'subject'       => $this->translatorHelper->trans('order_status_history.email.status_changed'),
60
                    'template'      => 'WellCommerceOrderBundle:Email:order_status_change.html.twig',
61
                    'parameters'    => [
62
                        'history' => $history,
63
                        'order'   => $order,
64
                    ],
65
                    'configuration' => $order->getShop()->getMailerConfiguration(),
66
                ]);
67
            }
68
            
69
            $order->setCurrentStatus($history->getOrderStatus());
70
        }
71
    }
72
}
73