Passed
Push — feature/post-pay ( 906e88...faf3dd )
by Remco
04:39
created

OrderItems   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Test Coverage

Coverage 64%

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 84
ccs 16
cts 25
cp 0.64
rs 10
c 0
b 0
f 0
wmc 9

6 Methods

Rating   Name   Duplication   Size   Complexity  
A get_signature_fields() 0 6 2
A get_json() 0 9 1
A get_order_items() 0 2 1
A new_item() 0 6 1
A __construct() 0 4 3
A add_item() 0 2 1
1
<?php
2
/**
3
 * Order items.
4
 *
5
 * @author    Pronamic <[email protected]>
6
 * @copyright 2005-2018 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
/**
14
 * Order items.
15
 *
16
 * @author  Reüel van der Steege
17
 * @version 2.0.3
18
 * @since   2.0.3
19
 */
20
class OrderItems {
21
	/**
22
	 * Order items.
23
	 *
24
	 * @var array
25
	 */
26
	private $order_items;
27
28
	/**
29
	 * Construct order results message.
30
	 *
31
	 * @param array $items Order items.
32
	 */
33 1
	public function __construct( $items = null ) {
34 1
		if ( is_array( $items ) ) {
35
			foreach ( $items as $item ) {
36
				$this->add_item( $item );
37
			}
38
		}
39 1
	}
40
41
	/**
42
	 * Create and add new order item.
43
	 *
44
	 * @param string $name     Name.
45
	 * @param int    $quantity Quantity.
46
	 * @param Money  $amount   Amount.
47
	 * @param string $category Category.
48
	 * @return OrderItem
49
	 */
50 1
	public function new_item( $name, $quantity, Money $amount, $category ) {
51 1
		$item = new OrderItem( $name, $quantity, $amount, $category );
52
53 1
		$this->add_item( $item );
54
55 1
		return $item;
56
	}
57
58
	/**
59
	 * Add order item.
60
	 *
61
	 * @param OrderItem $item Order item.
62
	 */
63 1
	public function add_item( OrderItem $item ) {
64 1
		$this->order_items[] = $item;
65 1
	}
66
67
	/**
68
	 * Get order items.
69
	 *
70
	 * @return array
71
	 */
72 1
	public function get_order_items() {
73 1
		return $this->order_items;
74
	}
75
76
	/**
77
	 * Get JSON.
78
	 *
79
	 * @return array|null
80
	 */
81
	public function get_json() {
82
		$data = array_map(
83
			function( $item ) {
84
				return $item->get_json();
85
			},
86
			$this->get_order_items()
87
		);
88
89
		return $data;
90
	}
91
92
	/**
93
	 * Get signature fields.
94
	 *
95
	 * @param array $fields Fields.
96
	 * @return array
97
	 */
98 1
	public function get_signature_fields( $fields = array() ) {
99 1
		foreach ( $this->get_order_items() as $item ) {
100 1
			$fields = $item->get_signature_fields( $fields );
101
		}
102
103 1
		return $fields;
104
	}
105
}
106