Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
SearchSupplierDTO
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
3 / 3
6
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
4
 toArray
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
 fromRequest
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\Supplier\DTOs;
4
5use Carbon\Carbon;
6use Domain\Shared\Interfaces\DataTransferObjectInterface;
7use Domain\Supplier\Support\SupplierDocument;
8use Illuminate\Foundation\Http\FormRequest;
9
10readonly final class SearchSupplierDTO implements DataTransferObjectInterface
11{
12    public ?int $id;
13    public ?string $cnpj;
14    public ?string $supplierCode;
15    public ?string $description;
16    public ?Carbon $deleted_at;
17    public ?Carbon $created_at;
18    public ?Carbon $updated_at;
19
20    public function __construct(array $args)
21    {
22        $this->id = $args['id'] ?? null;
23        $this->supplierCode = $args['supplier_code'] ?? null;
24        $this->cnpj = SupplierDocument::normalize($args['cnpj'] ?? null);
25        $this->description = $args['description'] ?? null;
26        $this->deleted_at = ($args['deleted_at'] ?? null) ? Carbon::parse($args['deleted_at']) : null;
27        $this->created_at = ($args['created_at'] ?? null) ? Carbon::parse($args['created_at']) : null;
28        $this->updated_at = ($args['updated_at'] ?? null) ? Carbon::parse($args['updated_at']) : null;
29    }
30
31    public function toArray(): array
32    {
33        return [
34            'id' => $this->id,
35            'cnpj' => $this->cnpj,
36            'supplier_code' => $this->supplierCode,
37            'description' => $this->description,
38            'deleted_at' => $this->deleted_at?->toDateString(),
39            'created_at' => $this->created_at?->toDateString(),
40            'updated_at' => $this->updated_at?->toDateString(),
41        ];
42    }
43
44    public static function fromRequest(FormRequest $request): SearchSupplierDTO
45    {
46        return new self([
47            'id' => $request->validated('id'),
48            'cnpj' => $request->validated('cnpj'),
49            'supplier_code' => $request->validated('supplier_code'),
50            'description' => $request->validated('description'),
51            'deleted_at' => $request->validated('deleted_at'),
52            'created_at' => $request->validated('created_at'),
53            'updated_at' => $request->validated('updated_at'),
54        ]);
55    }
56}