PluginProbe
Packeta / 1.3.1
Packeta v1.3.1
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Core / Validator / Order.php

Order.php in Packeta 1.3.1, at src/Packetery/Core/Validator/Order.php

111 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class Order
4 *
5 * @package Packetery\Validator
6 */
7
8 declare( strict_types=1 );
9
10 namespace Packetery\Core\Validator;
11
12 use Packetery\Core\Entity;
13
14 /**
15 * Class Order
16 *
17 * @package Packetery\Validator
18 */
19 class Order {
20
21 /**
22 * Address validator.
23 *
24 * @var Address
25 */
26 private $addressValidator;
27
28 /**
29 * Size validator.
30 *
31 * @var Size
32 */
33 private $sizeValidator;
34
35 /**
36 * Order constructor.
37 *
38 * @param Address $addressValidator Address validator.
39 * @param Size $sizeValidator Size validator.
40 */
41 public function __construct( Address $addressValidator, Size $sizeValidator ) {
42 $this->addressValidator = $addressValidator;
43 $this->sizeValidator = $sizeValidator;
44 }
45
46 /**
47 * Validates data needed to submit packet.
48 *
49 * @param Entity\Order $order Order entity.
50 *
51 * @return bool
52 */
53 public function validate( Entity\Order $order ): bool {
54 return (
55 $order->getNumber() &&
56 $order->getName() &&
57 $order->getSurname() &&
58 $order->getValue() &&
59 $order->getWeight() &&
60 $order->getPickupPointOrCarrierId() &&
61 $order->getEshop() &&
62 $this->validateAddress( $order ) &&
63 $this->validateSize( $order )
64 );
65 }
66
67 /**
68 * Validates delivery address if needed.
69 *
70 * @param Entity\Order $order Order entity.
71 *
72 * @return bool
73 */
74 private function validateAddress( Entity\Order $order ): bool {
75 if ( $order->isHomeDelivery() ) {
76 $address = $order->getDeliveryAddress();
77 if ( null === $address ) {
78 return false;
79 }
80
81 return $this->addressValidator->validate( $address );
82 }
83
84 return true;
85 }
86
87 /**
88 * Validates size if needed.
89 *
90 * @param Entity\Order $order Order entity.
91 *
92 * @return bool
93 */
94 private function validateSize( Entity\Order $order ): bool {
95 $carrier = $order->getCarrier();
96 if ( null === $carrier ) {
97 return true;
98 }
99 if ( $carrier->requiresSize() ) {
100 $size = $order->getSize();
101 if ( null === $size ) {
102 return false;
103 }
104
105 return $this->sizeValidator->validate( $size );
106 }
107
108 return true;
109 }
110 }
111