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