Completed
Push — master ( 8abe6d...4c4e2f )
by Jeroen
01:20
created

Shipments::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 9.536
c 0
b 0
f 0
cc 1
nc 1
nop 11

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
namespace JeroenOnline\ShopsUnitedLaravel\Modules;
4
5
use Illuminate\Support\Arr;
6
use JeroenOnline\ShopsUnitedLaravel\ShopsUnitedLaravel;
7
8
class Shipments extends ShopsUnitedLaravel
9
{
10
    /**
11
     * Returns a Array with shipment type objects
12
     * @return mixed
13
     */
14
    public function types()
15
    {
16
        $data = $this
17
            ->addQuery([
18
                'GebruikerId' => config('shops-united-laravel.account-id'),
19
                'Datum' => date('Y-m-d H:i:s'),
20
                'HmacSha256' => hash_hmac('sha256', config('shops-united-laravel.account-id') . date('Y-m-d H:i:s'), config('shops-united-laravel.api-key')),
21
            ])
22
            ->setGetUrl('type.php')
23
            ->call();
24
25
        return json_decode(json_encode($data));
26
    }
27
28
    /**
29
     * Get the 20 nearest locations for the user to use the 'Pakje Gemak' service
30
     * @param $zipCode
31
     * @param $houseNumber
32
     * @param string $carrier default 'PostNL' or 'DHL'
33
     * @return mixed
34
     */
35
    public function locations($zipCode, $houseNumber, $carrier = "PostNL")
36
    {
37
        $data = $this
38
            ->addQuery([
39
                'GebruikerId' => config('shops-united-laravel.account-id'),
40
                'Datum' => date('Y-m-d H:i:s'),
41
                'Carrier' => $carrier,
42
                'Postcode' => $zipCode,
43
                'Nummer' => $houseNumber,
44
                'HmacSha256' => hash_hmac('sha256', config('shops-united-laravel.account-id') . date('Y-m-d H:i:s') . $zipCode . $houseNumber, config('shops-united-laravel.api-key')),
45
            ])
46
            ->setGetUrl('uitreiklocatie.php')
47
            ->call();
48
49
        return json_decode(json_encode($data));
50
    }
51
52
    /**
53
     * Create a new shipment to see the additional optional params visit https://login.shops-united.nl/api/docs.php#zending
54
     *
55
     * @param string $carrier
56
     * @param string $type
57
     * @param string $reference
58
     * @param string $addresseeName
59
     * @param string $addresseeStreet
60
     * @param string $addresseeHouseNumber
61
     * @param string $addresseeZipCode
62
     * @param string $addresseeCity
63
     * @param int $packagesAmount
64
     * @param int $weight
65
     * @param array $optionalParams
66
     * @return mixed
67
     */
68
    public function create(string $carrier, string $type, string $reference, string $addresseeName, string $addresseeStreet, string $addresseeHouseNumber,
69
                           string $addresseeZipCode, string $addresseeCity, int $packagesAmount, int $weight, array $optionalParams = [])
70
    {
71
        $data = $this
72
            ->setParams(array_merge([
73
                'GebruikerId' => config('shops-united-laravel.account-id'),
74
                'Datum' => date('Y-m-d H:i:s'),
75
                'Carrier' => $carrier,
76
                'Type' => $type,
77
                'Referentie' => $reference,
78
                'Naam' => $addresseeName,
79
                'Straat' => $addresseeStreet,
80
                'Nummer' => $addresseeHouseNumber,
81
                'Postcode' => $addresseeZipCode,
82
                'Plaats' => $addresseeCity,
83
                'AantalPakketten' => $packagesAmount,
84
                'Gewicht' => $weight,
85
                'HmacSha256' => hash_hmac('sha256', config('shops-united-laravel.account-id') . date('Y-m-d H:i:s') . Arr::get($optionalParams, 'PostcodeAfzender', '') . $addresseeZipCode, config('shops-united-laravel.api-key')),
86
            ], $optionalParams))
87
            ->setPostUrl('zending.php')
88
            ->call();
89
90
        return json_decode(json_encode($data));
91
    }
92
93
    public function list(string $orderBy = 'desc', int $shipmentId = null, string $minDateTime = null, string $maxDateTime = null, string $status = null, int $limit = 50)
94
    {
95
        $data = $this
96
            ->addQuery([
97
                'GebruikerId' => config('shops-united-laravel.account-id'),
98
                'Datum' => date('Y-m-d H:i:s'),
99
                'HmacSha256' => hash_hmac('sha256', config('shops-united-laravel.account-id') . date('Y-m-d H:i:s'), config('shops-united-laravel.api-key')),
100
101
                'ZendingId' => $shipmentId,
102
                'MinDatetime' => $minDateTime,
103
                'MaxDatetime' => $maxDateTime,
104
                'Status' => $status,
105
                'Ordering' => $orderBy,
106
                'Limit' => $limit,
107
            ])
108
            ->setGetUrl('zendingen.php')
109
            ->call();
110
111
        return json_decode(json_encode($data));
112
    }
113
114
    public function labelUrl(int $shipmentId, bool $printPdf = false)
115
    {
116
        $data = $this
117
            ->addQuery([
118
                'GebruikerId' => config('shops-united-laravel.account-id'),
119
                'ZendingId' => $shipmentId,
120
                'PrintPdf' => $printPdf,
121
                'HmacSha256' => hash_hmac('sha256', config('shops-united-laravel.account-id') . $shipmentId, config('shops-united-laravel.api-key')),
122
            ])
123
            ->setGetUrl('label.php');
124
        
125
        return $data->callableUrl . $data->query;
126
    }
127
}
128