AddressTransformer::transform()   B
last analyzed

Complexity

Conditions 8
Paths 25

Size

Total Lines 43
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 72

Importance

Changes 4
Bugs 0 Features 0
Metric Value
cc 8
eloc 23
c 4
b 0
f 0
nc 25
nop 1
dl 0
loc 43
ccs 0
cts 30
cp 0
crap 72
rs 8.4444
1
<?php
2
/**
3
 * Address transformer
4
 *
5
 * @author    Pronamic <[email protected]>
6
 * @copyright 2005-2022 Pronamic
7
 * @license   GPL-3.0-or-later
8
 * @package   Pronamic\WordPress\Pay\Gateways\OmniKassa2
9
 */
10
11
namespace Pronamic\WordPress\Pay\Gateways\OmniKassa2;
12
13
use Pronamic\WordPress\Pay\Address as PronamicAddress;
14
15
/**
16
 * Address transformer
17
 *
18
 * @author  Remco Tolsma
19
 * @version 2.1.9
20
 * @since   2.0.2
21
 */
22
class AddressTransformer {
23
	/**
24
	 * Transform Pronamic address to OmniKassa 2.0 address.
25
	 *
26
	 * @param PronamicAddress|null $pronamic_address Pronamic address to convert.
27
	 * @return Address|null
28
	 */
29
	public static function transform( PronamicAddress $pronamic_address = null ) {
30
		if ( null === $pronamic_address ) {
31
			return null;
32
		}
33
34
		$name = $pronamic_address->get_name();
35
36
		$last_name    = null === $name ? null : $name->get_last_name();
37
		$street       = $pronamic_address->get_street_name();
38
		$postal_code  = $pronamic_address->get_postal_code();
39
		$city         = $pronamic_address->get_city();
40
		$country_code = $pronamic_address->get_country_code();
41
42
		// Use line 1 as street if address splitting failed,
43
		// for example when no house number is given.
44
		if ( null === $street ) {
45
			$street = $pronamic_address->get_line_1();
46
		}
47
48
		if ( ! isset( $last_name, $street, $postal_code, $city, $country_code ) ) {
49
			return null;
50
		}
51
52
		// New address.
53
		$address = new Address( $last_name, $street, $postal_code, $city, $country_code );
54
55
		if ( null !== $name ) {
56
			$first_name  = $name->get_first_name();
57
			$middle_name = $name->get_middle_name();
58
59
			if ( null !== $first_name ) {
60
				$address->set_first_name( $first_name );
61
			}
62
63
			if ( null !== $middle_name ) {
64
				$address->set_middle_name( $middle_name );
65
			}
66
		}
67
68
		$address->set_house_number( $pronamic_address->get_house_number_base() );
69
		$address->set_house_number_addition( $pronamic_address->get_house_number_addition() );
70
71
		return $address;
72
	}
73
}
74