ReadAddressChangeUseCase   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 26
dl 0
loc 46
ccs 28
cts 28
cp 1
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getAddressChangeByUuids() 0 13 2
A __construct() 0 2 1
A getAddressData() 0 17 2
1
<?php
2
3
declare( strict_types = 1 );
4
5
namespace WMDE\Fundraising\AddressChangeContext\UseCases\ReadAddressChange;
6
7
use WMDE\Fundraising\AddressChangeContext\Domain\AddressChangeRepository;
8
use WMDE\Fundraising\AddressChangeContext\Domain\Model\AddressChange;
9
10
class ReadAddressChangeUseCase {
11
12
	private AddressChangeRepository $addressChangeRepository;
13
14 3
	public function __construct( AddressChangeRepository $addressChangeRepository ) {
15 3
		$this->addressChangeRepository = $addressChangeRepository;
16
	}
17
18 3
	public function getAddressChangeByUuids( string $currentIdentifier, string $previousIdentifier ): ?AddressChangeData {
19 3
		$addressChange = $this->addressChangeRepository->getAddressChangeByUuids( $currentIdentifier, $previousIdentifier );
20
21 3
		if ( !$addressChange ) {
22 1
			return null;
23
		}
24
25 2
		return new AddressChangeData(
26 2
			$addressChange->getCurrentIdentifier()->__toString(),
27 2
			$addressChange->getPreviousIdentifier()->__toString(),
28 2
			$this->getAddressData( $addressChange ),
29 2
			$addressChange->isOptedIntoDonationReceipt(),
30 2
			$addressChange->getExportState(),
31 2
		);
32
	}
33
34
	/**
35
	 * @param AddressChange $addressChange
36
	 *
37
	 * @return array<string, mixed>
38
	 */
39 2
	private function getAddressData( AddressChange $addressChange ): array {
40 2
		if ( !$addressChange->getAddress() ) {
41 1
			return [];
42
		}
43
44 1
		return [
45 1
			'salutation' => $addressChange->getAddress()->getSalutation(),
46 1
			'company' => $addressChange->getAddress()->getCompany(),
47 1
			'title' => $addressChange->getAddress()->getTitle(),
48 1
			'firstName' => $addressChange->getAddress()->getFirstName(),
49 1
			'lastName' => $addressChange->getAddress()->getLastName(),
50 1
			'street' => $addressChange->getAddress()->getAddress(),
51 1
			'postcode' => $addressChange->getAddress()->getPostcode(),
52 1
			'city' => $addressChange->getAddress()->getCity(),
53 1
			'country' => $addressChange->getAddress()->getCountry(),
54 1
			'isPersonalAddress' => $addressChange->isPersonalAddress(),
55 1
			'isCompanyAddress' => $addressChange->isCompanyAddress(),
56 1
		];
57
	}
58
}
59