Completed
Push — master ( 65e840...33fe4c )
by Gabriel
03:16
created

OrderRepository::findOrders()   B

Complexity

Conditions 6
Paths 8

Size

Total Lines 31
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 31
rs 8.439
c 0
b 0
f 0
cc 6
eloc 20
nc 8
nop 3
1
<?php
2
3
namespace ThreePlCentral\Order;
4
5
use DateTime;
6
use ThreePlCentral\ThreePlCentral;
7
use ThreePlCentral\RequestFactory;
8
9
class OrderRepository
10
{
11
    public static function findOrders(ThreePlCentral $threepl, DateTime $beginDate, DateTime $endDate): array
12
    {
13
        $request = RequestFactory::create(
14
            $threepl,
15
            'POST',
16
            'http://www.JOI.com/schemas/ViaSub.WMS/FindOrders'
17
        );
18
19
        $request->setTemplate(__DIR__ . '/../Request/findOrders.xml');
20
        $response = $request->fetch([
21
            'BeginDate' => $beginDate->format('YYYY-MM-DD'),
22
            'EndDate' => $endDate->format('YYYY-MM-DD')
23
        ]);
24
25
        $result = $response->json();
26
        if (!is_array($result)) $result = [$result];
27
28
        $finalOrders = [];
29
        foreach ($result as $item) {
30
            $entity = new OrderEntity();
31
            foreach ($item as $key => $value) {
32
                $method = "set{$key}";
33
                if (is_string($value) && method_exists($entity, $method)) {
34
                    call_user_func([$entity, $method], $value);
35
                }
36
            }
37
            $finalOrders[] = $entity;
38
        }
39
40
        return $finalOrders;
41
    }
42
}
43