Code Duplication    Length = 56-59 lines in 2 locations

app/Containers/Email/Actions/SetUserEmailAction.php 1 location

@@ 15-70 (lines=56) @@
12
 *
13
 * @author Mahmoud Zalt <[email protected]>
14
 */
15
class SetUserEmailAction extends Action
16
{
17
18
    /**
19
     * @var  \App\Containers\Email\Services\SetUserEmailService
20
     */
21
    private $setUserEmailService;
22
23
    /**
24
     * @var  \App\Containers\Email\Services\GenerateEmailConfirmationUrlService
25
     */
26
    private $generateEmailConfirmationUrlService;
27
28
    /**
29
     * @var  \App\Containers\Email\Services\SendConfirmationEmailService
30
     */
31
    private $sendConfirmationEmailService;
32
33
    /**
34
     * SetUserEmailAction constructor.
35
     *
36
     * @param \App\Containers\Email\Services\SetUserEmailService                 $setUserEmailService
37
     * @param \App\Containers\Email\Services\GenerateEmailConfirmationUrlService $generateEmailConfirmationUrlService
38
     * @param \App\Containers\Email\Services\SendConfirmationEmailService        $sendConfirmationEmailService
39
     */
40
    public function __construct(
41
        SetUserEmailService $setUserEmailService,
42
        GenerateEmailConfirmationUrlService $generateEmailConfirmationUrlService,
43
        SendConfirmationEmailService $sendConfirmationEmailService
44
    ) {
45
        $this->setUserEmailService = $setUserEmailService;
46
        $this->generateEmailConfirmationUrlService = $generateEmailConfirmationUrlService;
47
        $this->sendConfirmationEmailService = $sendConfirmationEmailService;
48
    }
49
50
51
    /**
52
     * @param $userId
53
     * @param $email
54
     *
55
     * @return  bool
56
     */
57
    public function run($userId, $email)
58
    {
59
        // set the email on the user in the database
60
        $user = $this->setUserEmailService->run($userId, $email);
61
62
        // generate confirmation code, store it on the memory and inject it in url
63
        $confirmationUrl = $this->generateEmailConfirmationUrlService->run($user);
64
65
        // send a confirmation email to the user with the link
66
        $this->sendConfirmationEmailService->run($user, $confirmationUrl);
67
68
        return true;
69
    }
70
}
71

app/Containers/Email/Actions/SetVisitorEmailAction.php 1 location

@@ 16-74 (lines=59) @@
13
 *
14
 * @author Mahmoud Zalt <[email protected]>
15
 */
16
class SetVisitorEmailAction extends Action
17
{
18
19
    /**
20
     * @var  \App\Containers\Email\Services\SetUserEmailService
21
     */
22
    private $setUserEmailService;
23
24
    /**
25
     * @var  \App\Containers\Email\Services\GenerateEmailConfirmationUrlService
26
     */
27
    private $generateEmailConfirmationUrlService;
28
29
    /**
30
     * @var  \App\Containers\Email\Services\SendConfirmationEmailService
31
     */
32
    private $sendConfirmationEmailService;
33
34
    /**
35
     * @var  \App\Containers\User\Services\FindUserService
36
     */
37
    private $findUserService;
38
39
    /**
40
     * SetUserEmailAction constructor.
41
     *
42
     * @param \App\Containers\Email\Services\SetUserEmailService                 $setUserEmailService
43
     * @param \App\Containers\Email\Services\GenerateEmailConfirmationUrlService $generateEmailConfirmationUrlService
44
     * @param \App\Containers\Email\Services\SendConfirmationEmailService        $sendConfirmationEmailService
45
     * @param \App\Containers\User\Services\FindUserService                      $findUserService
46
     */
47
    public function __construct(
48
        SetUserEmailService $setUserEmailService,
49
        GenerateEmailConfirmationUrlService $generateEmailConfirmationUrlService,
50
        SendConfirmationEmailService $sendConfirmationEmailService,
51
        FindUserService $findUserService
52
    ) {
53
        $this->setUserEmailService = $setUserEmailService;
54
        $this->generateEmailConfirmationUrlService = $generateEmailConfirmationUrlService;
55
        $this->sendConfirmationEmailService = $sendConfirmationEmailService;
56
        $this->findUserService = $findUserService;
57
    }
58
59
60
    /**
61
     * @param $userId
62
     * @param $email
63
     *
64
     * @return  bool
65
     */
66
    public function run($visitorId, $email)
67
    {
68
        $user = $this->findUserService->byVisitorId($visitorId);
69
70
        $this->setUserEmailService->run($user->id, $email);
71
72
        return true;
73
    }
74
}
75