Completed
Pull Request — master (#1458)
by Tim
32:04
created

MembershipMailer::sendMail()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 1
nop 3
dl 0
loc 7
ccs 6
cts 6
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace WMDE\Fundraising\Frontend\Infrastructure;
6
7
use WMDE\EmailAddress\EmailAddress;
8
use WMDE\Fundraising\Frontend\Presentation\TwigTemplate;
9
use WMDE\Fundraising\MembershipContext\Infrastructure\TemplateMailerInterface;
10
11
/**
12
 * @license GNU GPL v2+
13
 */
14
class MembershipMailer implements TemplateMailerInterface {
15
16
	private $messenger;
17
	private $template;
18
	private $activeMembershipSubject;
19
	private $sustainingMembershipSubject;
20
21 21
	public function __construct(
22
		Messenger $messenger,
23
		TwigTemplate $template,
24
		string $activeMembershipSubject,
25
		string $sustainingMembershipSubject ) {
26 21
		$this->messenger = $messenger;
27 21
		$this->template = $template;
28 21
		$this->activeMembershipSubject = $activeMembershipSubject;
29 21
		$this->sustainingMembershipSubject = $sustainingMembershipSubject;
30 21
	}
31
32
	/**
33
	 * @inheritdoc
34
	 * @throws \RuntimeException
35
	 */
36 13
	public function sendMail( EmailAddress $recipient, bool $isActiveMembership, array $templateArguments = [] ): void {
37 13
		$this->messenger->sendMessageToUser(
38 13
			new Message(
39 13
				$isActiveMembership ? $this->activeMembershipSubject : $this->sustainingMembershipSubject,
40 13
				MailFormatter::format( $this->template->render( $templateArguments ) )
41
			),
42 13
			$recipient
43
		);
44 13
	}
45
46
}
47