Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
64.29% covered (warning)
64.29%
18 / 28
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
ProductSearchDTO
64.29% covered (warning)
64.29%
18 / 28
66.67% covered (warning)
66.67%
2 / 3
3.41
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
1
 toArray
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
2
 fromRequest
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\Product\DTOs;
4
5use Domain\Shared\Interfaces\DataTransferObjectInterface;
6use Illuminate\Foundation\Http\FormRequest;
7
8readonly final class ProductSearchDTO implements DataTransferObjectInterface
9{
10    public ?string $integrationCode;
11    public ?string $integrationBarcode;
12    public ?string $integrationProduct;
13    public ?string $integrationDerivation;
14    public ?string $description;
15    public array $origins;
16    public array $families;
17    public ?int $id;
18
19    public function __construct(array $args)
20    {
21        $this->integrationCode = $args['integration_code'] ?? null;
22        $this->integrationBarcode = $args['integration_barcode'] ?? null;
23        $this->integrationProduct = $args['integration_product'] ?? null;
24        $this->integrationDerivation = $args['integration_derivation'] ?? null;
25        $this->description = $args['description'] ?? null;
26        $this->origins = $args['origins'] ?? [];
27        $this->families = $args['families'] ?? [];
28        $this->id = $args['id'] ?? null;
29    }
30
31    public function toArray(): array
32    {
33        return [
34            'id' => $this->id,
35            'integration_code' => $this->integrationCode,
36            'integration_barcode' => $this->integrationBarcode,
37            'integration_product' => $this->integrationProduct,
38            'integration_derivation' => $this->integrationDerivation,
39            'description' => $this->description,
40            'origins' => $this->origins,
41            'families' => $this->families,
42        ];
43    }
44
45    public static function fromRequest(FormRequest $request): ProductSearchDTO
46    {
47        return new self([
48            'integration_code' => $request->validated('integration_code'),
49            'integration_barcode' => $request->validated('integration_barcode'),
50            'integration_product' => $request->validated('integration_product'),
51            'integration_derivation' => $request->validated('integration_derivation'),
52            'description' => $request->validated('description'),
53            'families' => $request->validated('families'),
54            'origins' => $request->validated('origins'),
55            'id' => $request->validated('id'),
56        ]);
57    }
58}