Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
75.56% covered (warning)
75.56%
34 / 45
66.67% covered (warning)
66.67%
2 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
ExportRequestSeniorDTO
75.56% covered (warning)
75.56%
34 / 45
66.67% covered (warning)
66.67%
2 / 3
3.13
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
1
 toArray
100.00% covered (success)
100.00%
25 / 25
100.00% covered (success)
100.00%
1 / 1
1
 fromRequest
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\Request\DTOs;
4
5use Domain\Shared\Interfaces\DataTransferObjectInterface;
6use Illuminate\Foundation\Http\FormRequest;
7
8readonly final class ExportRequestSeniorDTO implements DataTransferObjectInterface
9{
10    public string $identificadorSistema;
11    public int $codEmp;
12    public int $codFil;
13    public ?string $usuSol;
14    public ?int $numEme;
15    public ?int $identificadorExterno;
16    public int $tipoProcessamento;
17    public ?string $tipoOperacao;
18    /** @var RequestsSeniorDTO[] */
19    public array $itens;
20
21    public function __construct(array $args)
22    {
23        $this->identificadorSistema = $args['identificadorSistema'];
24        $this->numEme = $args['numEme'] ?? null;
25        $this->codEmp = $args['codEmp'];
26        $this->codFil = $args['codFil'];
27        $this->tipoProcessamento = $args['tipoProcessamento'];
28        $this->itens = $args['itens'] ?? $args['items'] ?? [];
29        $this->identificadorExterno = $args['identificadorExterno'] ?? null;
30        $this->tipoOperacao = $args['tipoOperacao'] ?? null;
31        $this->usuSol = $args['usuSol'] ?? null;
32    }
33
34    public function toArray(): array
35    {
36        $item = $this->itens[0] ?? [];
37
38        return [
39            'identificadorSistema' => $this->identificadorSistema,
40            'tipoProcessamento' => $this->tipoProcessamento,
41            'codEmp' => $this->codEmp,
42            'codFil' => $this->codFil,
43            'requisicao' => [
44                'codEmp' => $this->codEmp,
45                'codFil' => $this->codFil,
46                'numEme' => $this->numEme,
47                'usuAtd' => 0,
48                'usuSol' => $this->usuSol,
49                'codPro' => $item['codPro'] ?? null,
50                'codDer' => $item['codDer'] ?? null,
51                'qtdEme' => $item['qtdEme'] ?? null,
52                'qtdApr' => $item['qtdApr'] ?? $item['qtdEme'] ?? null,
53                'resEst' => 'N',
54                'codTns' => $item['codTns'] ?? 90250,
55                'datEme' => $item['datEme'] ?? null,
56                'datApr' => $item['datApr'] ?? $item['datEme'] ?? null,
57                'ccuRes' => $item['ccuRes'] ?? null,
58                'obsEme' => $item['obsEme'] ?? 'Gerado atraves de WebService',
59                'seqEme' => $item['seqEme'] ?? null,
60            ],
61        ];
62    }
63
64    public static function fromRequest(FormRequest $request): ExportRequestSeniorDTO
65    {
66        return new self([
67            'identificadorSistema' => $request->validated('identificadorSistema'),
68            'codEmp' => $request->validated('codEmp'),
69            'codFil' => $request->validated('codFil'),
70            'numEme' => $request->validated('numEme'),
71            'tipoProcessamento' => $request->validated('tipoProcessamento'),
72            'itens' => $request->validated('itens') ?? $request->validated('items'),
73            'identificadorExterno' => $request->validated('identificadorExterno'),
74            'tipoOperacao' => $request->validated('tipoOperacao'),
75            'usuSol' => $request->validated('usuSol'),
76        ]);
77    }
78}