Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
29.41% covered (danger)
29.41%
10 / 34
33.33% covered (danger)
33.33%
1 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
SearchInvoiceDTO
29.41% covered (danger)
29.41%
10 / 34
33.33% covered (danger)
33.33%
1 / 3
13.79
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
3
 toArray
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
2
 fromRequest
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\Invoice\DTOs;
4
5use Carbon\Carbon;
6use Domain\Shared\Interfaces\DataTransferObjectInterface;
7use Domain\Shared\Traits\DateRangeDTOTrait;
8use Illuminate\Foundation\Http\FormRequest;
9
10readonly final class SearchInvoiceDTO implements DataTransferObjectInterface
11{
12    use DateRangeDTOTrait;
13
14    public ?int $id;
15    public ?bool $has_additional_itens;
16    public ?string $key;
17    public ?array $status;
18    public ?array $issue_date;
19    public ?array $suppliers;
20    public ?array $purchase_order_status;
21    public ?array $verification_status;
22    public ?Carbon $created_at;
23    public ?Carbon $updated_at;
24
25    public function __construct(array $args)
26    {
27        $this->id = $args['id'] ?? null;
28        $this->has_additional_itens = $args['has_additional_itens'] ?? false;
29        $this->key = $args['key'] ?? null;
30        $this->status = $args['status'] ?? [];
31        $this->issue_date = $args['issue_date'] ?? [];
32        $this->suppliers = $args['suppliers'] ?? [];
33        $this->purchase_order_status = $args['purchase_order_status'] ?? [];
34        $this->verification_status = $args['verification_status'] ?? [];
35        $this->created_at = ($args['created_at'] ?? null) ? Carbon::parse($args['created_at']) : null;
36        $this->updated_at = ($args['updated_at'] ?? null) ? Carbon::parse($args['updated_at']) : null;
37    }
38
39    public function toArray(): array
40    {
41        return [
42            'id' => $this->id,
43            'has_additional_itens' => $this->has_additional_itens,
44            'key' => $this->key,
45            'status' => $this->status,
46            'issue_date' => $this->issue_date,
47            'suppliers' => $this->suppliers,
48            'purchase_order_status' => $this->purchase_order_status,
49            'verification_status' => $this->verification_status,
50            'created_at' => $this->created_at?->toDateString(),
51            'updated_at' => $this->updated_at?->toDateString(),
52        ];
53    }
54
55    public static function fromRequest(FormRequest $request): SearchInvoiceDTO
56    {
57        return new self([
58            'id' => $request->validated('id'),
59            'has_additional_itens' => $request->validated('has_additional_itens'),
60            'key' => $request->validated('key'),
61            'status' => $request->validated('status'),
62            'issue_date' => self::processDate($request->validated('issue_date')),
63            'suppliers' => $request->validated('suppliers'),
64            'purchase_order_status' =>  $request->validated('purchase_order_status'),
65            'verification_status' =>  $request->validated('verification_status'),
66            'created_at' => $request->validated('created_at'),
67            'updated_at' => $request->validated('updated_at'),
68        ]);
69    }
70}