Completed
Pull Request — master (#35)
by
unknown
01:56
created

MailFactory::getModule()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
/*
4
 * This file is part of the 2amigos/yii2-usuario project.
5
 *
6
 * (c) 2amigOS! <http://2amigos.us/>
7
 *
8
 * For the full copyright and license information, please view
9
 * the LICENSE file that was distributed with this source code.
10
 */
11
12
namespace Da\User\Factory;
13
14
use Da\User\Model\Token;
15
use Da\User\Model\User;
16
use Da\User\Module;
17
use Da\User\Service\MailService;
18
use Yii;
19
20
class MailFactory
21
{
22
    /**
23
     * @param User $user
24
     *
25
     * @return MailService
26
     */
27 4
    public static function makeWelcomeMailerService(User $user)
28
    {
29 4
        $module = self::getModule();
30 4
        $to = $user->email;
31 4
        $from = $module->mailParams['fromEmail'];
32 4
        $subject = $module->mailParams['welcomeMailSubject'];
33
        $params = [
34 4
            'user' => $user,
35
            'token' => null,
36 4
            'module' => $module,
37
            'showPassword' => false,
38
        ];
39
40 4
        return static::makeMailerService($from, $to, $subject, 'welcome', $params);
41
    }
42
43
    /**
44
     * @param string $email
45
     * @param Token  $token
46
     *
47
     * @return MailService
48
     */
49 1
    public static function makeRecoveryMailerService($email, Token $token = null)
50
    {
51 1
        $module = self::getModule();
52 1
        $to = $email;
53 1
        $from = $module->mailParams['fromEmail'];
54 1
        $subject = $module->mailParams['recoveryMailSubject'];
55
        $params = [
56 1
            'user' => $token && $token->user ? $token->user : null,
57 1
            'token' => $token,
58
        ];
59
60 1
        return static::makeMailerService($from, $to, $subject, 'recovery', $params);
61
    }
62
63
    /**
64
     * @param User       $user
65
     * @param Token|null $token
66
     *
67
     * @return MailService
68
     */
69 1
    public static function makeConfirmationMailerService(User $user, Token $token = null)
70
    {
71 1
        $module = self::getModule();
72 1
        $to = $user->email;
73 1
        $from = $module->mailParams['fromEmail'];
74 1
        $subject = $module->mailParams['confirmationMailSubject'];
75
        $params = [
76 1
            'user' => $token && $token->user ? $token->user : null,
77 1
            'token' => $token,
78
        ];
79
80 1
        return static::makeMailerService($from, $to, $subject, 'recovery', $params);
81
    }
82
83
    /**
84
     * @param User  $user
85
     * @param Token $token
86
     *
87
     * @return MailService
88
     */
89 1
    public static function makeReconfirmationMailerService(User $user, Token $token)
90
    {
91 1
        $module = self::getModule();
92 1
        $to = $token->type === Token::TYPE_CONFIRM_NEW_EMAIL
93 1
            ? $user->unconfirmed_email
94 1
            : $user->email;
95
96 1
        $from = $module->mailParams['fromEmail'];
97 1
        $subject = $module->mailParams['reconfirmationMailSubject'];
98
        $params = [
99 1
            'user' => $token && $token->user ? $token->user : null,
100 1
            'token' => $token,
101
        ];
102
103 1
        return static::makeMailerService($from, $to, $subject, 'recovery', $params);
104
    }
105
106
    /**
107
     * Builds a MailerService.
108
     *
109
     * @param string $from
110
     * @param string $to
111
     * @param string $subject
112
     * @param string $view
113
     * @param array  $params
114
     *
115
     * @return MailService
116
     */
117 7
    public static function makeMailerService($from, $to, $subject, $view, array $params = [])
118
    {
119 7
        return Yii::$container->get(MailService::class, [$from, $to, $subject, $view, $params, Yii::$app->getMailer()]);
120
    }
121
122
    /**
123
     * @return Module
124
     */
125 7
    protected static function getModule()
126
    {
127 7
        return Yii::$app->getModule('user');
128
    }
129
}
130