Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
64.00% covered (warning)
64.00%
16 / 25
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
ProductSearchSimpleDTO
64.00% covered (warning)
64.00%
16 / 25
66.67% covered (warning)
66.67%
2 / 3
3.42
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
1
 toArray
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
2
 fromRequest
100.00% covered (success)
100.00%
9 / 9
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 ProductSearchSimpleDTO implements DataTransferObjectInterface
9{
10    public ?string $integrationBarcode;
11    public ?string $integrationProduct;
12    public ?string $integrationDerivation;
13    public ?string $description;
14    public array $origins;
15    public array $families;
16    public ?int $id;
17
18    public function __construct(array $args)
19    {
20        $this->integrationBarcode = $args['integration_barcode'] ?? null;
21        $this->integrationProduct = $args['integration_product'] ?? null;
22        $this->integrationDerivation = $args['integration_derivation'] ?? null;
23        $this->description = $args['description'] ?? null;
24        $this->origins = $args['origins'] ?? [];
25        $this->families = $args['families'] ?? [];
26        $this->id = $args['id'] ?? null;
27    }
28
29    public function toArray(): array
30    {
31        return [
32            'id' => $this->id,
33            'integration_barcode' => $this->integrationBarcode,
34            'integration_product' => $this->integrationProduct,
35            'integration_derivation' => $this->integrationDerivation,
36            'description' => $this->description,
37            'origins' => $this->origins,
38            'families' => $this->families,
39        ];
40    }
41
42    public static function fromRequest(FormRequest $request): ProductSearchSimpleDTO
43    {
44        return new self([
45            'integration_barcode' => $request->validated('integration_barcode'),
46            'integration_product' => $request->validated('integration_product'),
47            'integration_derivation' => $request->validated('integration_derivation'),
48            'description' => $request->validated('description'),
49            'families' => $request->validated('families'),
50            'origins' => $request->validated('origins'),
51            'id' => $request->validated('id'),
52        ]);
53    }
54}