provideBusinessLayerDependencies()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 7
rs 10
cc 1
nc 1
nop 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
declare(strict_types = 1);
9
10
namespace Pyz\Zed\Mail;
11
12
use Spryker\Zed\AvailabilityNotification\Communication\Plugin\Mail\AvailabilityNotificationMailTypeBuilderPlugin;
13
use Spryker\Zed\AvailabilityNotification\Communication\Plugin\Mail\AvailabilityNotificationSubscriptionMailTypeBuilderPlugin;
14
use Spryker\Zed\AvailabilityNotification\Communication\Plugin\Mail\AvailabilityNotificationUnsubscribedMailTypeBuilderPlugin;
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\CustomerDataChangeRequest\Communication\Plugin\Mail\CustomerEmailChangeNotificationMailTypePlugin;
20
use Spryker\Zed\CustomerDataChangeRequest\Communication\Plugin\Mail\CustomerEmailChangeVerificationMailTypePlugin;
21
use Spryker\Zed\GiftCardMailConnector\Communication\Plugin\Mail\GiftCardDeliveryMailTypeBuilderPlugin;
22
use Spryker\Zed\GiftCardMailConnector\Communication\Plugin\Mail\GiftCardUsageMailTypeBuilderPlugin;
23
use Spryker\Zed\Kernel\Container;
24
use Spryker\Zed\Mail\Business\Model\Provider\MailProviderCollectionAddInterface;
25
use Spryker\Zed\Mail\MailConfig;
26
use Spryker\Zed\Mail\MailDependencyProvider as SprykerMailDependencyProvider;
27
use Spryker\Zed\MultiFactorAuth\Communication\Plugin\Mail\Customer\CustomerEmailMultiFactorAuthMailTypeBuilderPlugin;
28
use Spryker\Zed\MultiFactorAuth\Communication\Plugin\Mail\User\UserEmailMultiFactorAuthMailTypeBuilderPlugin;
29
use Spryker\Zed\Newsletter\Communication\Plugin\Mail\NewsletterSubscribedMailTypeBuilderPlugin;
30
use Spryker\Zed\Newsletter\Communication\Plugin\Mail\NewsletterUnsubscribedMailTypeBuilderPlugin;
31
use Spryker\Zed\Oms\Communication\Plugin\Mail\OrderConfirmationMailTypeBuilderPlugin;
32
use Spryker\Zed\Oms\Communication\Plugin\Mail\OrderShippedMailTypeBuilderPlugin;
33
use Spryker\Zed\SalesInvoice\Communication\Plugin\Mail\OrderInvoiceMailTypeBuilderPlugin;
34
use Spryker\Zed\SalesOrderAmendmentOms\Communication\Plugin\Mail\NotifyOrderAmendmentAppliedMailTypeBuilderPlugin;
35
use Spryker\Zed\SalesOrderAmendmentOms\Communication\Plugin\Mail\NotifyOrderAmendmentFailedMailTypeBuilderPlugin;
36
use Spryker\Zed\SymfonyMailer\Communication\Plugin\Mail\SymfonyMailerProviderPlugin;
37
use Spryker\Zed\UserPasswordResetMail\Communication\Plugin\Mail\UserPasswordResetMailTypeBuilderPlugin;
38
39
class MailDependencyProvider extends SprykerMailDependencyProvider
40
{
41
    /**
42
     * @param \Spryker\Zed\Kernel\Container $container
43
     *
44
     * @return \Spryker\Zed\Kernel\Container
45
     */
46
    public function provideBusinessLayerDependencies(Container $container): Container
47
    {
48
        $container = parent::provideBusinessLayerDependencies($container);
49
50
        $container = $this->extendMailProviderCollection($container);
51
52
        return $container;
53
    }
54
55
    /**
56
     * @param \Spryker\Zed\Kernel\Container $container
57
     *
58
     * @return \Spryker\Zed\Kernel\Container
59
     */
60
    protected function extendMailProviderCollection(Container $container): Container
61
    {
62
        $container->extend(self::MAIL_PROVIDER_COLLECTION, function (MailProviderCollectionAddInterface $mailProviderCollection) {
63
            $mailProviderCollection
64
                ->addProvider(new SymfonyMailerProviderPlugin(), [
65
                    MailConfig::MAIL_TYPE_ALL,
66
                ]);
67
68
            return $mailProviderCollection;
69
        });
70
71
        return $container;
72
    }
73
74
    /**
75
     * @return array<\Spryker\Zed\MailExtension\Dependency\Plugin\MailTypeBuilderPluginInterface>
76
     */
77
    protected function getMailTypeBuilderPlugins(): array
78
    {
79
        return [
80
            new CustomerRegistrationMailTypeBuilderPlugin(),
81
            new CustomerRegistrationConfirmationMailTypeBuilderPlugin(),
82
            new CustomerRestorePasswordMailTypeBuilderPlugin(),
83
            new CustomerRestoredPasswordConfirmationMailTypeBuilderPlugin(),
84
            new NewsletterSubscribedMailTypeBuilderPlugin(),
85
            new NewsletterUnsubscribedMailTypeBuilderPlugin(),
86
            new OrderConfirmationMailTypeBuilderPlugin(),
87
            new OrderShippedMailTypeBuilderPlugin(),
88
            new AvailabilityNotificationUnsubscribedMailTypeBuilderPlugin(),
89
            new AvailabilityNotificationSubscriptionMailTypeBuilderPlugin(),
90
            new AvailabilityNotificationMailTypeBuilderPlugin(),
91
            new UserPasswordResetMailTypeBuilderPlugin(),
92
            new GiftCardDeliveryMailTypeBuilderPlugin(),
93
            new GiftCardUsageMailTypeBuilderPlugin(),
94
            new OrderInvoiceMailTypeBuilderPlugin(),
95
            new CustomerEmailChangeVerificationMailTypePlugin(),
96
            new CustomerEmailChangeNotificationMailTypePlugin(),
97
            new CustomerEmailMultiFactorAuthMailTypeBuilderPlugin(),
98
            new UserEmailMultiFactorAuthMailTypeBuilderPlugin(),
99
            new NotifyOrderAmendmentAppliedMailTypeBuilderPlugin(),
100
            new NotifyOrderAmendmentFailedMailTypeBuilderPlugin(),
101
        ];
102
    }
103
}
104