Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
64.86% covered (warning)
64.86%
24 / 37
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
SearchStockOutputDTO
64.86% covered (warning)
64.86%
24 / 37
66.67% covered (warning)
66.67%
2 / 3
6.08
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
1 / 1
3
 toArray
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
 fromRequest
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Domain\StockIO\DTOs;
4
5use Carbon\Carbon;
6use Domain\Shared\Interfaces\DataTransferObjectInterface;
7use Domain\Shared\Traits\DateRangeDTOTrait;
8use Illuminate\Foundation\Http\FormRequest;
9
10final readonly class SearchStockOutputDTO implements DataTransferObjectInterface
11{
12
13    use DateRangeDTOTrait;
14    public ?string $clientCode;
15    public ?string $proformaInvoice;
16    public ?string $shipmentAnalysisNumber;
17    public ?string $orderNumber;
18    public ?bool $urgent;
19    public ?Carbon $start_date;
20    public ?Carbon $end_date;
21    public ?array $status;
22    public ?int $id;
23    public ?int $allItemsInTask;
24
25    /** @var null|Carbon[] */
26    public ?array $invoicing;
27
28    public function __construct(array $args)
29    {
30        $this->id = $args['id'] ?? null;
31        $this->clientCode = $args['codcli'] ?? null;
32        $this->proformaInvoice = $args['numpfa'] ?? null;
33        $this->shipmentAnalysisNumber = $args['numane'] ?? null;
34        $this->urgent = $args['urgent'] ?? null;
35        $this->start_date = $args['start_date'] ? Carbon::createFromFormat('d/m/Y', $args['start_date']) : null;
36        $this->end_date = $args['end_date'] ? Carbon::createFromFormat('d/m/Y', $args['end_date']) : null;
37        $this->status = $args['status'] ?? null;
38        $this->invoicing = $args['invoicing'] ?? null;
39        $this->orderNumber = $args['numped'] ?? null;
40        $this->allItemsInTask = $args['all_items_in_task'] ?? null;
41    }
42
43    public function toArray(): array
44    {
45        return [
46            'id' => $this->id,
47            'codcli' => $this->clientCode,
48            'numpfa' => $this->proformaInvoice,
49            'numane' => $this->shipmentAnalysisNumber,
50            'urgent' => $this->urgent,
51            'start_date' => $this->start_date,
52            'end_date' => $this->end_date,
53            'status' => $this->status,
54            'invoicing' => $this->invoicing,
55            'numped' => $this->orderNumber,
56            'all_items_in_task' => $this->allItemsInTask,
57        ];
58    }
59
60    public static function fromRequest(FormRequest $request): SearchStockOutputDTO
61    {
62        return new self([
63            'id' => $request->validated('id'),
64            'codcli' => $request->validated('codcli'),
65            'numpfa' => $request->validated('numpfa'),
66            'numane' => $request->validated('numane'),
67            'urgent' => $request->validated('urgent'),
68            'start_date' => $request->validated('start_date'),
69            'end_date' => $request->validated('end_date'),
70            'status' => $request->validated('status'),
71            'invoicing' => self::processDate($request->validated('invoicing')),
72            'numped' => $request->validated('numped'),
73            'all_items_in_task' => $request->validated('all_items_in_task'),
74        ]);
75    }
76}