PluginProbe
Packeta / 1.5.4
Packeta v1.5.4
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.5.4, at src/Packetery/Core/Validator/Order.php

122 lines 2.2 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->getPickupPointOrCarrierId() &&
60 $order->getEshop() &&
61 $this->validateFinalWeight( $order ) &&
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 * Validate weight.
89 *
90 * @param Entity\Order $order Order.
91 *
92 * @return bool
93 */
94 private function validateFinalWeight( Entity\Order $order ): bool {
95 return null !== $order->getFinalWeight() && $order->getFinalWeight() > 0;
96 }
97
98 /**
99 * Validates size if needed.
100 *
101 * @param Entity\Order $order Order entity.
102 *
103 * @return bool
104 */
105 public function validateSize( Entity\Order $order ): bool {
106 $carrier = $order->getCarrier();
107 if ( null === $carrier ) {
108 return true;
109 }
110 if ( $carrier->requiresSize() ) {
111 $size = $order->getSize();
112 if ( null === $size ) {
113 return false;
114 }
115
116 return $this->sizeValidator->validate( $size );
117 }
118
119 return true;
120 }
121 }
122