Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
StoreInvoiceItemDTO
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 3
12
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 toArray
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 fromRequest
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Domain\Invoice\DTOs;
4
5use App\Models\Invoice\Invoice;
6use App\Models\UnitMeasurement\UnitMeasurement;
7use Domain\Integration\DTOs\IntegrationInvoiceItemDTO;
8use Domain\Shared\Interfaces\DataTransferObjectInterface;
9use Illuminate\Foundation\Http\FormRequest;
10
11readonly final class StoreInvoiceItemDTO implements DataTransferObjectInterface
12{
13    public Invoice $invoice;
14    public UnitMeasurement $unit_measurement;
15    public float $amount;
16    public IntegrationInvoiceItemDTO $integration;
17
18    public function __construct(array $args)
19    {
20        $this->invoice          = $args['invoice'];
21        $this->unit_measurement = $args['unit_measurement'];
22        $this->amount           = $args['amount'];
23        $this->integration      = $args['integration'];
24    }
25
26    public function toArray(): array
27    {
28        return [
29            'invoice'          => $this->invoice,
30            'unit_measurement' => $this->unit_measurement,
31            'amount'           => $this->amount,
32            'integration'      => $this->integration,
33        ];
34    }
35
36    public static function fromRequest(FormRequest $request): StoreInvoiceItemDTO
37    {
38        return new self([
39            'invoice'          => Invoice::find($request->validated('invoice')),
40            'unit_measurement' => UnitMeasurement::find($request->validated('unit_measurement')),
41            'amount'           => $request->validated('amount'),
42            'integration'      => $request->validated('integration'),
43        ]);
44    }
45}