Failed Conditions
Push — develop ( 050d27...62a930 )
by Reüel
03:29
created

LineItems::add_item()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 2
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Line items.
4
 *
5
 * @author    Pronamic <[email protected]>
6
 * @copyright 2005-2019 Pronamic
7
 * @license   GPL-3.0-or-later
8
 * @package   Pronamic\WordPress\Pay\Gateways\Adyen
9
 */
10
11
namespace Pronamic\WordPress\Pay\Gateways\Adyen;
12
13
use InvalidArgumentException;
14
15
/**
16
 * Line items.
17
 *
18
 * @author  Reüel van der Steege
19
 * @version 1.0.0
20
 * @since   1.0.0
21
 */
22
class LineItems {
23
	/**
24
	 * Line items.
25
	 *
26
	 * @var array
27
	 */
28
	private $line_items;
29
30
	/**
31
	 * Construct line items.
32
	 *
33
	 * @param LineItem[] $items Line items.
34
	 */
35 7
	public function __construct( $items = null ) {
36 7
		if ( is_array( $items ) ) {
37 3
			foreach ( $items as $item ) {
38 2
				$this->add_item( $item );
39
			}
40
		}
41 7
	}
42
43
	/**
44
	 * Create and add new line item.
45
	 *
46
	 * @param string $description          Name.
47
	 * @param int    $quantity             Quantity.
48
	 * @param int    $amount_including_tax Amount (including tax).
49
	 *
50
	 * @return LineItem
51
	 *
52
	 * @throws InvalidArgumentException Throws invalid argument exception when arguments are invalid.
53
	 */
54 1
	public function new_item( $description, $quantity, $amount_including_tax ) {
55 1
		$item = new LineItem( $description, $quantity, $amount_including_tax );
56
57 1
		$this->add_item( $item );
58
59 1
		return $item;
60
	}
61
62
	/**
63
	 * Add line item.
64
	 *
65
	 * @param LineItem $item Line item.
66
	 */
67 3
	public function add_item( LineItem $item ) {
68 3
		$this->line_items[] = $item;
69 3
	}
70
71
	/**
72
	 * Get line items.
73
	 *
74
	 * @return LineItem[]
75
	 */
76 7
	public function get_line_items() {
77 7
		return $this->line_items;
78
	}
79
80
	/**
81
	 * Get JSON.
82
	 *
83
	 * @return array|null
84
	 */
85 1
	public function get_json() {
86 1
		$data = array_map(
87 1
			function( LineItem $item ) {
88 1
				return $item->get_json();
89 1
			},
90 1
			$this->get_line_items()
91
		);
92
93 1
		return $data;
94
	}
95
}
96