Passed
Pull Request — master (#62)
by Michael
15:25
created

MailDependencyProvider   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 3
eloc 27
dl 0
loc 57
rs 10
c 2
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A extendMailProviderCollection() 0 12 1
A provideBusinessLayerDependencies() 0 7 1
A getMailTypeBuilderPlugins() 0 19 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace Pyz\Zed\Mail;
9
10
use Spryker\Zed\AvailabilityNotification\Communication\Plugin\Mail\AvailabilityNotificationMailTypeBuilderPlugin;
11
use Spryker\Zed\AvailabilityNotification\Communication\Plugin\Mail\AvailabilityNotificationSubscriptionMailTypeBuilderPlugin;
12
use Spryker\Zed\AvailabilityNotification\Communication\Plugin\Mail\AvailabilityNotificationUnsubscribedMailTypeBuilderPlugin;
13
use Spryker\Zed\CompanyMailConnector\Communication\Plugin\Mail\CompanyStatusMailTypeBuilderPlugin;
14
use Spryker\Zed\CompanyUserInvitation\Communication\Plugin\Mail\CompanyUserInvitationMailTypeBuilderPlugin;
15
use Spryker\Zed\Customer\Communication\Plugin\Mail\CustomerRegistrationConfirmationMailTypeBuilderPlugin;
16
use Spryker\Zed\Customer\Communication\Plugin\Mail\CustomerRegistrationMailTypeBuilderPlugin;
17
use Spryker\Zed\Customer\Communication\Plugin\Mail\CustomerRestoredPasswordConfirmationMailTypeBuilderPlugin;
18
use Spryker\Zed\Customer\Communication\Plugin\Mail\CustomerRestorePasswordMailTypeBuilderPlugin;
19
use Spryker\Zed\Kernel\Container;
20
use Spryker\Zed\Mail\Business\Model\Provider\MailProviderCollectionAddInterface;
21
use Spryker\Zed\Mail\MailConfig;
22
use Spryker\Zed\Mail\MailDependencyProvider as SprykerMailDependencyProvider;
23
use Spryker\Zed\MerchantUserPasswordResetMail\Communication\Plugin\Mail\MerchantUserPasswordResetMailTypeBuilderPlugin;
24
use Spryker\Zed\Newsletter\Communication\Plugin\Mail\NewsletterSubscribedMailTypeBuilderPlugin;
25
use Spryker\Zed\Newsletter\Communication\Plugin\Mail\NewsletterUnsubscribedMailTypeBuilderPlugin;
26
use Spryker\Zed\Oms\Communication\Plugin\Mail\OrderConfirmationMailTypeBuilderPlugin;
27
use Spryker\Zed\Oms\Communication\Plugin\Mail\OrderShippedMailTypeBuilderPlugin;
28
use Spryker\Zed\SalesInvoice\Communication\Plugin\Mail\OrderInvoiceMailTypeBuilderPlugin;
29
use Spryker\Zed\SymfonyMailer\Communication\Plugin\Mail\SymfonyMailerProviderPlugin;
30
use Spryker\Zed\UserPasswordResetMail\Communication\Plugin\Mail\UserPasswordResetMailTypeBuilderPlugin;
31
32
class MailDependencyProvider extends SprykerMailDependencyProvider
33
{
34
    /**
35
     * @param \Spryker\Zed\Kernel\Container $container
36
     *
37
     * @return \Spryker\Zed\Kernel\Container
38
     */
39
    public function provideBusinessLayerDependencies(Container $container): Container
40
    {
41
        $container = parent::provideBusinessLayerDependencies($container);
42
43
        $container = $this->extendMailProviderCollection($container);
44
45
        return $container;
46
    }
47
48
    /**
49
     * @param \Spryker\Zed\Kernel\Container $container
50
     *
51
     * @return \Spryker\Zed\Kernel\Container
52
     */
53
    protected function extendMailProviderCollection(Container $container): Container
54
    {
55
        $container->extend(self::MAIL_PROVIDER_COLLECTION, function (MailProviderCollectionAddInterface $mailProviderCollection) {
56
            $mailProviderCollection
57
                ->addProvider(new SymfonyMailerProviderPlugin(), [
58
                    MailConfig::MAIL_TYPE_ALL,
59
                ]);
60
61
            return $mailProviderCollection;
62
        });
63
64
        return $container;
65
    }
66
67
    /**
68
     * @return array<\Spryker\Zed\MailExtension\Dependency\Plugin\MailTypeBuilderPluginInterface>
69
     */
70
    protected function getMailTypeBuilderPlugins(): array
71
    {
72
        return [
73
            new CustomerRegistrationMailTypeBuilderPlugin(),
74
            new CustomerRegistrationConfirmationMailTypeBuilderPlugin(),
75
            new CustomerRestorePasswordMailTypeBuilderPlugin(),
76
            new CustomerRestoredPasswordConfirmationMailTypeBuilderPlugin(),
77
            new NewsletterSubscribedMailTypeBuilderPlugin(),
78
            new NewsletterUnsubscribedMailTypeBuilderPlugin(),
79
            new OrderConfirmationMailTypeBuilderPlugin(),
80
            new OrderShippedMailTypeBuilderPlugin(),
81
            new CompanyUserInvitationMailTypeBuilderPlugin(),
82
            new CompanyStatusMailTypeBuilderPlugin(),
83
            new UserPasswordResetMailTypeBuilderPlugin(),
84
            new AvailabilityNotificationUnsubscribedMailTypeBuilderPlugin(),
85
            new AvailabilityNotificationSubscriptionMailTypeBuilderPlugin(),
86
            new AvailabilityNotificationMailTypeBuilderPlugin(),
87
            new MerchantUserPasswordResetMailTypeBuilderPlugin(),
88
            new OrderInvoiceMailTypeBuilderPlugin(),
89
        ];
90
    }
91
}
92