Issues (24)

src/Requests/Act/BaseActRequest.php (1 issue)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DalliSDK\Requests\Act;
6
7
use DalliSDK\Requests\AbstractRequest;
8
use DalliSDK\Requests\RequestInterface;
9
use JMS\Serializer\Annotation as JMS;
10
11
/**
12
 * Запрос файла акта приема-передачи
13
 *
14
 * @see https://api.dalli-service.com/v1/doc/getact
15
 */
16
class BaseActRequest extends AbstractRequest implements RequestInterface
17
{
18
    /**
19
     * Контейнер, который содержит штрих-коды заказов.
20
     * По-умолчанию все переданные заказы за сегодня (не обязательный элемент)
21
     *
22
     * @JMS\XmlList(inline = false, entry = "barcode")
23
     */
24
    private ?array $barcodes = null;
25
26
    /**
27
     * @param array|null $barcodes
28
     */
29 5
    public function __construct(?array $barcodes = null)
30
    {
31 5
        $this->barcodes = $barcodes;
32
    }
33
34
    /**
35
     * @return array|null
36
     */
37 2
    public function getBarcodes(): ?array
38
    {
39 2
        return $this->barcodes;
40
    }
41
42
    /**
43
     * Штрих-коды. Если указан хотя бы один - в файле акта будут только эти заказы
44
     *
45
     * @param array|null $barcodes
46
     *
47
     * @return BaseActRequest
48
     */
49 2
    public function setBarcodes(?array $barcodes): BaseActRequest
50
    {
51 2
        $this->barcodes = $barcodes;
52 2
        return $this;
53
    }
54
55
    /**
56
     * @param string $barcode
57
     *
58
     * @return $this
59
     */
60 2
    public function addBarcode(string $barcode): BaseActRequest
61
    {
62 2
        if ($this->barcodes === null) {
63 2
            $this->barcodes = [];
64
        }
65 2
        if (in_array($barcode, $this->barcodes)) {
0 ignored issues
show
It seems like $this->barcodes can also be of type null; however, parameter $haystack of in_array() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

65
        if (in_array($barcode, /** @scrutinizer ignore-type */ $this->barcodes)) {
Loading history...
66 1
            throw new \InvalidArgumentException("Barcode: $barcode already exists.");
67
        }
68 2
        $this->barcodes[] = $barcode;
69 2
        return $this;
70
    }
71
}
72